By Sagar Shankaran, Founder of CallSphere
Deep dive into Microsoft Agent 365 (GA May 1, 2026) and how it serves as the control plane for observing, securing, and governing AI agents at enterprise scale.
Key takeaways
As enterprises move AI agents from pilots to production, a critical gap has emerged: who watches the agents? When you deploy 50 agents across HR, finance, IT, and customer service, you need answers to questions that no individual agent framework addresses. Which agents are running? What data are they accessing? Who authorized them? How do you revoke an agent's permissions when an employee leaves? What happens when an agent misbehaves?
Microsoft's answer is Agent 365 — a management and governance layer that sits above individual agent implementations and provides the same kind of control plane that Kubernetes provides for containers. Announced at Build 2025 and going GA on May 1, 2026, Agent 365 is Microsoft's bet that enterprise AI agent adoption will be gated by governance, not capability.
Agent 365 is not an agent framework. It does not help you build agents (that is Copilot Studio's job). Instead, it is a control plane for managing agents that already exist. Think of it as Active Directory for AI agents — a centralized system for identity, access, policy, and observability.
flowchart TD
Q{"Pick by primary<br/>design constraint"}
NEED1{"Need explicit<br/>state graph plus<br/>checkpoints?"}
NEED2{"Need role and task<br/>based teams?"}
NEED3{"Need conversation<br/>style multi agent?"}
NEED4{"Need full control<br/>Claude native?"}
LG[/"LangGraph"/]
CR[/"CrewAI"/]
AG[/"AutoGen"/]
CS[/"Claude Agent SDK"/]
Q --> NEED1
NEED1 -->|Yes| LG
NEED1 -->|No| NEED2
NEED2 -->|Yes| CR
NEED2 -->|No| NEED3
NEED3 -->|Yes| AG
NEED3 -->|No| NEED4
NEED4 -->|Yes| CS
style Q fill:#4f46e5,stroke:#4338ca,color:#fff
style LG fill:#0ea5e9,stroke:#0369a1,color:#fff
style CR fill:#f59e0b,stroke:#d97706,color:#1f2937
style AG fill:#ede9fe,stroke:#7c3aed,color:#1e1b4b
style CS fill:#059669,stroke:#047857,color:#fff
The core capabilities:
Every agent in the organization is registered in Agent 365 with metadata: who built it, what it does, what tools it has access to, what data sources it can read, and who can invoke it. This creates an organizational catalog of AI capabilities.
// Registering an agent with Agent 365
// Using the Microsoft Graph Agent Management API
import { Client } from "@microsoft/microsoft-graph-client";
const graphClient = Client.init({
authProvider: (done) => {
done(null, accessToken);
},
});
// Register a new agent
const agentRegistration = await graphClient.api("/agents/registrations").post({
displayName: "Accounts Payable Agent",
description: "Handles invoice matching, payment scheduling, and vendor inquiries",
owner: "finance-team@company.com",
classification: "business-critical",
dataAccess: [
{
resource: "sharepoint://finance/invoices",
permission: "read",
justification: "Reads invoices for matching against POs"
},
{
resource: "dynamics365://accounts-payable",
permission: "read-write",
justification: "Creates and updates payment records"
}
],
tools: [
{
name: "match_invoice_to_po",
riskLevel: "low",
description: "Read-only comparison of invoice to purchase order"
},
{
name: "schedule_payment",
riskLevel: "high",
description: "Initiates a financial transaction",
requiresApproval: true,
approvalChain: ["finance-manager@company.com"]
}
],
model: {
provider: "openai",
name: "gpt-5.4",
region: "us-east",
dataResidency: "us-only"
},
compliance: {
frameworks: ["SOX", ""],
auditRetention: "7-years",
piiHandling: "restricted"
}
});
console.log("Agent registered:", agentRegistration.id);
Agent 365 allows security teams to define policies that apply across all agents in the organization. These policies are enforced at the platform level, not by individual agent implementations, which means an agent cannot bypass them even if its code does not implement the check.
// Define an organization-wide agent policy
const policy = await graphClient.api("/agents/policies").post({
name: "Financial Transaction Controls",
scope: "all-agents",
rules: [
{
type: "tool-execution-approval",
condition: {
toolRiskLevel: "high",
transactionAmountGreaterThan: 10000
},
action: {
requireHumanApproval: true,
approverRole: "finance-manager",
timeoutMinutes: 60,
onTimeout: "deny"
}
},
{
type: "data-access-restriction",
condition: {
dataClassification: "confidential",
agentClassification: { not: "business-critical" }
},
action: {
deny: true,
logReason: "Non-critical agent attempted confidential data access"
}
},
{
type: "rate-limit",
condition: {
toolCategory: "external-api"
},
action: {
maxCallsPerMinute: 30,
maxCallsPerHour: 500,
onExceed: "throttle-and-alert"
}
},
{
type: "model-routing",
condition: {
dataContains: "PII"
},
action: {
requireModel: {
dataResidency: "same-region-as-user",
provider: ["azure-openai"] // No external model APIs for PII
}
}
}
]
});
Agent 365 provides a unified observability dashboard that aggregates metrics, logs, and traces from all registered agents. Security teams can monitor agent activity in real-time, investigate incidents, and generate compliance reports.
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
The dashboard surfaces:
Each agent in Agent 365 gets a managed identity — similar to a service principal in Azure AD. This identity determines what the agent can access, and it can be scoped, rotated, and revoked just like an employee's credentials.
// Assign an identity to an agent
const identity = await graphClient.api("/agents/registrations/{agentId}/identity").post({
type: "managed-identity",
permissions: [
{
resource: "microsoft.graph/users",
scope: "User.Read.All",
justification: "Look up employee details for HR queries"
},
{
resource: "microsoft.graph/mail",
scope: "Mail.Send",
justification: "Send notification emails on behalf of users",
constraints: {
recipientDomain: "company.com", // Internal only
maxPerDay: 100
}
}
],
lifecycle: {
createdBy: "admin@company.com",
expiresAt: "2026-12-31T23:59:59Z",
reviewFrequency: "quarterly",
nextReview: "2026-06-30T00:00:00Z"
}
});
Agent 365 operates as a sidecar or proxy layer. Agents do not need to be rewritten to work with it. Instead, Agent 365 intercepts agent-to-tool and agent-to-data communications through its proxy, applies policies, logs activity, and forwards approved requests.
// Agent 365 integration via the Agent Gateway SDK
// This wraps your existing agent's tool calls with policy enforcement
import { AgentGateway } from "@microsoft/agent-365-sdk";
const gateway = new AgentGateway({
agentId: "ap-agent-001",
tenantId: process.env.AZURE_TENANT_ID,
policyEndpoint: "https://agent365.company.com/policies"
});
// Wrap your tool execution with the gateway
async function executeToolWithGovernance(
toolName: string,
args: Record<string, unknown>,
userContext: { userId: string; sessionId: string }
): Promise<unknown> {
// Step 1: Check policy before execution
const policyCheck = await gateway.checkPolicy({
tool: toolName,
arguments: args,
user: userContext.userId,
session: userContext.sessionId
});
if (policyCheck.denied) {
throw new Error(
"Policy denied: " + policyCheck.reason
);
}
if (policyCheck.requiresApproval) {
// Request human approval
const approval = await gateway.requestApproval({
tool: toolName,
arguments: args,
approver: policyCheck.approver,
timeout: policyCheck.timeoutMinutes
});
if (!approval.approved) {
throw new Error("Approval denied by " + approval.reviewer);
}
}
// Step 2: Execute the tool
const startTime = Date.now();
let result: unknown;
let error: string | null = null;
try {
result = await actualToolExecution(toolName, args);
} catch (e) {
error = (e as Error).message;
throw e;
} finally {
// Step 3: Log execution for audit
await gateway.logExecution({
tool: toolName,
arguments: args,
result: error ? null: result,
error,
durationMs: Date.now() - startTime,
user: userContext.userId,
session: userContext.sessionId,
timestamp: new Date().toISOString()
});
}
return result;
}
Agent 365 treats agents as first-class organizational resources with a defined lifecycle: creation, approval, deployment, monitoring, review, and decommissioning. This lifecycle mirrors how enterprises manage software applications but adds AI-specific concerns.
Creation: An agent is defined with its capabilities, data access requirements, and risk classification. The definition goes through an approval workflow that may involve security, compliance, and the data owners.
Deployment: Once approved, the agent receives its managed identity and is registered in the catalog. Policies are applied based on its classification and the data it accesses.
Monitoring: Agent 365 continuously monitors the agent's behavior against its registered capabilities. If the agent starts accessing data or calling tools that were not in its registration, an alert fires.
Review: On a configurable schedule (typically quarterly), agents undergo a review similar to an access review for human employees. Reviewers verify that the agent still needs its permissions and that its behavior aligns with its purpose.
Decommissioning: When an agent is retired, Agent 365 revokes its identity, archives its logs, and removes it from the catalog. Any downstream systems that depended on the agent are notified.
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
For enterprises looking to adopt Agent 365, here is the recommended phased approach:
Phase 1 — Inventory (Week 1-2): Catalog all existing AI agents and chatbots in the organization. Many enterprises discover they have 3-5x more agents than they thought, built by individual teams without central oversight.
Phase 2 — Classify (Week 3-4): Classify each agent by risk level based on what data it accesses and what actions it can take. An agent that reads public FAQs is low risk. An agent that can modify financial records is high risk.
Phase 3 — Register (Week 5-8): Register all agents in Agent 365 with accurate metadata. Start with high-risk agents to get immediate governance value.
Phase 4 — Policy (Week 9-12): Define and enforce organization-wide policies. Start with broad policies (data access controls, rate limits) and refine based on observed behavior.
Phase 5 — Operationalize (Ongoing): Integrate Agent 365 into your incident response, change management, and access review processes.
Yes. Agent 365 is model-agnostic and framework-agnostic. It works with agents built on OpenAI, Anthropic, Google, or open-source models. The governance layer operates at the tool-call and data-access level, which is independent of the underlying model. You integrate via the Agent Gateway SDK, which wraps your tool execution calls regardless of what framework or model powers the agent.
Cross-department agents require joint ownership in Agent 365. Each department's data owners must approve the agent's access to their resources. The policy engine supports multi-stakeholder approval workflows, where different approvers are required for different data access requests within the same agent. This is similar to how cross-department applications work in traditional IT governance.
Policy checks add approximately 15-30ms per tool call for in-memory policy evaluation and 50-100ms when human approval is required (just the queueing, not the wait for approval). For most agent workloads, where model inference takes 200-3000ms per call, this overhead is negligible. The SDK supports async policy evaluation so that multiple tool calls can be checked in parallel.
Agent 365 focuses on governance (who can do what) rather than quality (is the answer correct). However, you can define output policies that route responses through factuality-checking agents or require human review for certain response categories. The platform provides the enforcement mechanism; you define the quality standards as policies. For factuality, most enterprises combine Agent 365 governance with framework-level guardrails like those in the OpenAI Agents SDK.

Written by
Sagar Shankaran· Founder, CallSphere
LinkedInSagar Shankaran is the founder of CallSphere, where he builds production AI voice and chat agents deployed across healthcare, hospitality, real estate, and home services. He writes about agentic AI, LLM engineering, and shipping voice agents that handle real calls in production.
See how AI voice agents work for your industry. Live demo available -- no signup required.
Deploy GPT-Realtime-2 on Azure AI Foundry. Region availability, networking, data residency, BAA, and the gotchas teams hit in the first 48 hours.
Microsoft's Copilot for Sales shipped 2026 updates that knit Dynamics, Outlook, and Teams into a single agentic surface. Here's the playbook, the per-seat pricing.
Microsoft's late-April 2026 earnings reaffirmed an $85B+ FY2026 capex envelope, with Azure AI revenue growth still pacing above 65% YoY. Coverage tuned for Boston, AZ.
Enterprise AI agent buyers need governance-first evaluation, 30-point scorecards, and quarterly re-verification. The 2026 procurement playbook for CIOs and CTOs.
Enterprise CIO Guide perspective on AutoGen 0.5 brings async-first execution, an extension architecture, and tighter Azure integration.
Dragon Medical One still has 600,000+ active clinicians in 2026 — and Microsoft is converging it with DAX Copilot. Here's the roadmap, the migration path.
© 2026 CallSphere Inc. All rights reserved.
Made within San Francisco
Watch how CallSphere handles real customer calls, schedules appointments, and processes payments — live.
Try Live DemoBook a DemoCalculate Your ROI