Microsoft Agent 365 — agent lifecycles, interfaces & APIs
Agent 365 is the governance and control plane for agents — it inventories, secures, governs, and observes agents built on Microsoft and third-party platforms. It is not an agent-building runtime. This atlas maps how each class of agent is built, connected, identified, deployed, governed, and observed, with the exact interfaces, SDKs, CLI commands, token flows, and API endpoints that developers and admins use at each step.
The whole system — Agent 365 in one picture
One connected view: how agents enter Agent 365, how they are configured and given identity, the unified control plane that inventories and governs them, and the runtime that keeps executing on its own host. The detailed diagrams below expand each part — select any node to jump to its section, including a new discovery & inventory view (§02A). Agent 365 governs; it does not host or run agents, and no single action cascades across the others.
Numbered nodes ①–④ are the four entry routes. Every node links to its detailed section (§01–§11). Fit-to-width by default — use the zoom controls, or focus the map and press + / − / 0, then screenshot the whole frame.
Lifecycle overview — five agent classes, six stages
Every agent that Agent 365 governs follows the same six-stage spine, but ownership and interfaces differ sharply by class. Read each row left to right. Build, connect, identity, packaging, runtime, and governance are independent operations — a registry record does not host code, grant permissions, or create a mailbox, and most actions do not cascade automatically. The documented exception is Entra blueprint deletion, which soft-deletes its child agent identities and their agent user accounts.
Wide diagram — scroll horizontally within the frame to see all six stages. Detailed per-class flows follow below.
Per-class lifecycle detail
Expand each class for its exact build interfaces, integration path, packaging, runtime ownership, and the admin actions that apply. Distinctions that are commonly conflated are called out explicitly.
A · Agent Builder & declarative agents Hosted on Copilot
Declarative agents use Copilot’s built-in model and orchestrator; they add instructions, knowledge, and actions and need no separate model hosting.
- Maker creates a declarative agent in Agent Builder (Microsoft 365 Copilot), or builds a pro-code declarative package with the Microsoft 365 Agents Toolkit (optionally Work IQ Dev Tools preview).
- Share for personal/shared availability, or submit/request for organizational use.
- Microsoft 365 admin center reviews the request and publishes to the Agent Store or rejects it.
- Install / assign to users or groups (may include admin consent); pin, block/unblock, manage owners.
B · Copilot Studio agents Maker + ALM
- Design in Copilot Studio: instructions, topics, knowledge, actions, connectors and APIs; optionally Work IQ MCP tools preview.
- Power Platform ALM moves the agent across Development, Test, and Production environments.
- Publish / channel package to Teams and Microsoft Copilot, or download the ZIP package.
- Reach Agent 365 through built-in integration; or upload the ZIP via Agents → All agents → Upload custom agent.
- Admin center: inventory, review permissions, publish/install/assign, block/unblock, reassign owner.
C · Microsoft Foundry agents Azure compute
- Build/configure a Foundry agent: a hosted path (built-in integration where supported) or a code-based path (Agent 365 SDK for code-level capabilities).
- Registry / inventory picks up the agent.
- Configure Agent 365 observability collection; optional Work IQ or custom MCP tools preview.
- Deploy through Foundry / Azure; publish a package/channel separately if required.
D · Custom & third-party code-owned agents SDK + CLI
Any existing agent runtime — Microsoft 365 Agents SDK, Microsoft Agent Framework, OpenAI Agents SDK, Claude Agent SDK, LangChain, Semantic Kernel, CrewAI, LlamaIndex, or custom code — can adopt Agent 365 without changing its model, orchestration, or hosting.
- Choose the integration: already integrated by platform/partner (built-in); Vertex AI / Bedrock (registry sync Preview); otherwise Agent 365 SDK + CLI.
- Register the identity foundation: create the Entra agent identity blueprint, create a blueprint principal where required, configure credentials/federation, declare permissions, obtain admin consent, create the agent identity.
- Add capabilities: Identity, Observability, Work IQ MCP preview, Notifications Frontier preview when an agent user is required.
- Validate: identity/token mode, permissions and consent, root invoke_agent span, MCP discovery/tool invocation, notification routing.
- Deploy the runtime to Azure / AWS / GCP / on-premises — the SDK does not host or deploy it.
- Optionally package and publish to Microsoft 365; operate through Agent Registry, Entra, Defender, Purview.
E · Template agents & user-created instances Preview
- A template/blueprint agent appears in Agent 365.
- A user requests activation, or an admin proactively selects scope.
- Admin approves and activates for specific users, groups, or the tenant.
- An authorized user creates an agent instance, which receives tenant-local identity/resources.
- Runtime operation and monitoring; instance-level block or delete.
Discovery & inventory — how agents become visible
Three separate paths make agents visible to administrators, and they must not be conflated. Agents onboarded to Agent 365 are recorded in the registry and surfaced visually by Agent Map; external platforms are brought in by admin-triggered Connected platforms / registry sync, which imports registry metadata and can expose provider-supported controls; and unmanaged agents you never onboarded are found through a separate Shadow AI discovery experience — a separate Frontier page from All agents that public admin docs do not describe as part of Connected platforms ingestion. Accuracy reviewed 2026-09-16 Public documentation conflicts are noted inline.
Registry sync ingests metadata (and provider-supported controls) — it creates no identity, telemetry or runtime instrumentation. Agent Map reads the same inventory.
The boundary marks that Shadow AI is documented as a separate Frontier page from All agents; public admin docs do not describe it as part of Connected platforms registry ingestion.
Connected platforms / registry sync is in Preview. Status follows Choose an Agent 365 integration option, checked 16 September 2026.
Connected platforms / registry sync Preview
- Create a connection: name, platform, region, optional auto-import at setup, then enter & validate credentials.
- An admin triggers Sync agents; external agents import into the registry. Import brings in registry metadata, and a connected integration can also perform provider-API-supported management actions (for example delete) depending on the credentials granted.
- Monitor connection sync status, last run date, last sync status, total synced agents and errors.
- Documented platforms include Amazon Bedrock, Google Vertex AI, Salesforce Agentforce, Databricks Genie, Anthropic Claude Managed Agents (connector in preview) and Oracle Generative AI Agents — the catalog keeps expanding.
- Import is admin-triggered, with optional auto-import at setup; a recurring sync schedule is not documented as available. Sync itself creates no identity, telemetry or runtime wiring.
Source: Connected platforms, Choose an integration option. See the source note.
Agent Map
- Open from Agents ▸ All Agents ▸ Map — a visual inventory grouped by builder/platform.
- Requires an Agent 365 entitlement (standalone or via E7) and a Global Administrator or AI Administrator role.
- Cards: Total agents, Agents at risk, Agents without owners, Unmanaged agents.
- Filters: Status, Publisher type, Platform, Channel, Data source, Usage. Export the list to Excel.
- The usage/observability filter scale limit is inconsistently documented — the same page states fewer than 4,000 agents in one place and fewer than 4,000 users in another; verify against current docs. The limit applies to usage filters, not to Map access.
- Not read-only: select an agent from the map to assign an owner, block/unblock, install and pin it.
Single Agent Map Preview
- A connected view of one agent with its top 50 users and top 50 tools over the last 7 or 30 days (30 by default).
- Uses Agent 365 observability data; tools with an exception rate above 1% are highlighted. Knowledge signals are not included yet.
- Preview; subject to change.
Source: Agent Map.
Agents ▸ Shadow AI Frontier preview
- A dedicated admin page, separate from All agents, to discover, monitor and govern unmanaged agents.
- Prerequisites: Frontier opt-in, Microsoft Defender for Endpoint (detection), Microsoft 365 E5, Intune enrollment for managed Windows, and optionally Global Secure Access for usage metadata.
- Roles (at least one): Security Administrator, AI Administrator, Global Reader, Security Reader, Security Operator, Reports Reader, User Experience Success Manager, or Intune Administrator.
- Detection covers agents such as OpenClaw, ChatGPT Desktop and Ollama; blocking currently supports OpenClaw on Intune-managed Windows devices.
- Traffic, Users and recent-activity fields populate only when Global Secure Access is enabled.
Source: Understand Shadow AI.
Partner acquisition paths
- Ready-to-deploy agents: fully built partner agents an admin can discover, deploy and manage from the admin center with no custom development.
- Agent factories: platforms to build your own agents on Agent 365; each new agent gets a governed Entra Agent ID, appears in the admin center and inherits identity, compliance and observability controls.
- Not everything is generally available — some integrations are marked coming soon (for example Nvidia), and AI-teammate integrations are Frontier-only.
- The published integration catalog is the source of truth for what each partner supports (Registered, Observable, Work IQ).
Source: Ecosystem partner agents.
Identity objects & relationships
Five identity and metadata objects are routinely confused. They have separate identifiers and separate lifecycles. A blueprint is a credential boundary: one blueprint can create many tenant-local agent identities that all share its credentials. Registration and package records are metadata — they are not the identity.
Telemetry identifiers map onto these objects: gen_ai.agent.id must equal the authenticated agent’s appId (not the Entra object id); the blueprint is separately identified in telemetry by its application appId.
Runtime token flows
Three documented identity patterns. The distinction that matters for authorization and audit is who the token subject is and which appId acts. Return messages are dashed. The Agentic-User exchange follows the documented user_fic on-behalf-of flow [30].
S2S · autonomous · app-only
On-behalf-of · delegated user
Agentic-User Frontier preview
SDKs, tooling & the a365 CLI
Two Microsoft SDKs are routinely confused. They are different products with different jobs, and can be combined.
Microsoft Agent 365 SDK
Adds identity, observability, governed MCP tooling, and notifications to an existing agent. It does not host or deploy the agent.
Package ecosystems
- Python / PyPI
- JavaScript / TypeScript / NPM
- .NET / NuGet
Capability modules
| Capability | Representative package families |
|---|---|
| Notifications | microsoft-agents-a365-notifications · @microsoft/agents-a365-notifications · Microsoft.Agents.A365.Notifications |
| Observability | microsoft-agents-a365-observability-* · @microsoft/agents-a365-observability · Microsoft.Agents.A365.Observability* |
| Runtime / auth / discovery | microsoft-agents-a365-runtime · @microsoft/agents-a365-runtime · Microsoft.Agents.A365.Runtime |
| MCP tooling | microsoft-agents-a365-tooling · @microsoft/agents-a365-tooling · Microsoft.Agents.A365.Tooling |
| Framework adapters | Agent Framework, OpenAI, LangChain, Semantic Kernel, Claude, Azure AI Foundry (by language) |
Microsoft 365 Agents SDK
A different product: it supplies framework and hosting abstractions for building conversational agents; you deploy and host the runtime separately.
- Builds conversational agents
- Handles activity / message delivery and conversation state
- Targets Teams, Microsoft 365 Copilot, web, and custom apps
- Documented samples in .NET, JavaScript / Node.js, and Python
- Can be combined with the Agent 365 SDK
Framework reach (Agent 365 SDK adopters)
M365 Agents SDK, Microsoft Agent Framework, OpenAI Agents SDK, Claude Agent SDK, LangChain, Semantic Kernel, CrewAI, LlamaIndex, or custom code — any can adopt Agent 365 without changing model, orchestration, or hosting.
Agent 365 CLI
Install and verify:
§05A — Behind a365 setup all traces exactly what setup provisions and how it binds custom code to the Entra Blueprint.
Selected lifecycle command families (not exhaustive) — note that cleanup instance, cleanup blueprint, and cleanup azure target distinct resource groups. These are separate commands for separate objects; they are not, by themselves, proof that no deletion cascades — deleting an Entra blueprint does soft-delete its child agent identities and their agent user accounts (see §08).
Behind a365 setup all — provisioning identity, binding code
a365 setup all does not upload, relocate, or run the agent’s code. It builds a chain of references: hosted code → runtime SDK configuration → the Entra Agent Identity Blueprint credential and application ID → a child agent identity → an Agent 365 registration → an optional Microsoft 365 messaging callback and, separately, a catalog package. The URL is never registered globally: it is a routing destination tied to the named blueprint, tenant, and identity, and the hosted app must still implement the expected messaging route and validate the tokens it receives (token flows, SDK & CLI).
Runtime configuration synchronization depends on detecting a supported project, not simply on a project-path flag. The pinned ProjectSettingsSyncHelper uses DeploymentProjectPath, or falls back to the configuration-file directory when that path is missing or does not exist. It detects .NET, Node.js, or Python and updates appsettings.json or .env; without a usable directory or supported project, synchronization is skipped. Config-free setup a365 setup all --agent-name "<name>" can therefore update runtime configuration. The standard-agent orchestrator deliberately skips synchronization for --agent-registration-only. [36]
Standard-agent setup sequence — default / non-AI-teammate path
Solid arrows are calls the CLI drives; dashed arrows are returns. Two OPT frames mark work that only happens under a condition. The dashed banner is a different lifecycle that setup does not perform. This traces the default standard-agent path; --aiteammate provisions only the blueprint and permissions during setup, and --agent-registration-only runs the registration step alone.
Source: Agent 365 CLI setup reference [32], CLI reference [9], and the pinned public DevTools source [36]. Placeholder identifiers only — no tenant data.
Step detail
| # | Operation | Authority / actor | Created or updated | Persists in |
|---|---|---|---|---|
| 1 | Find or create Blueprint application (adds api://{blueprintAppId} and the access_agent_as_user delegated scope) | Agent ID Developer or higher | Multitenant Entra Agent Identity Blueprint application; sponsor/owner and manager relationships attempted | Blueprint app ID + object ID |
| 2 | Create tenant principal, client secret, and inheritable permissions | Blueprint owner / authorized caller | Tenant-local blueprint service principal, a generated credential, and the blueprint inheritablePermissions policy | a365.generated.config.json + Entra |
| 3 | Complete admin consent / app-role grants | Global Administrator, or deferred handoff | Delegated admin consent and, for S2S, application-role assignments on the blueprint principal | Blueprint principal grants (or Action Required) |
| 4 | Create child agent identity | Authorized operator | Child microsoft.graph.agentIdentity service principal linked to the blueprint | agenticAppId (child SP object ID) |
| 5 | Register the agent | Operator with registration permission | Agent 365 registration record linking blueprint and identity | agentRegistrationId |
| 6 | Optional (--m365): register the HTTPS messaging callback | Operator | Associates blueprint + tenant + endpoint through the Microsoft 365 messaging platform | Generated endpoint state |
| 7 | Normal path (skipped by --agent-registration-only or when no supported project is found): synchronize runtime configuration | Local CLI process | Writes .NET appsettings.json or Node/Python .env in the project path, or the a365 config-file directory as fallback | Project or config-file directory |
Object & ID binding — how the code binds to the Blueprint
The customer question — “how does it bind a custom agent to the Entra Blueprint?” — is answered by these identifiers. Setup writes them into runtime configuration whenever a supported project is detected (the conditional write described above); a365 publish later stamps one into the package manifest.
| ID / property | What it is | Where it binds |
|---|---|---|
| agentBlueprintId | Blueprint application (client) ID | Runtime Connections.ServiceConnection.Settings.ClientId and AgentId, the token audience, and manifest.json agentIdentityBlueprintId (written later by a365 publish) |
| agentBlueprintObjectId | Directory object ID of the app registration | Application operations — credentials, owners |
| agentBlueprintServicePrincipalObjectId | Tenant-local service-principal object ID | Permission grants and app-role assignments target this principal |
| agenticAppId | Child agent identity SP object ID returned/stored by the current CLI (despite the property name — not the blueprint client ID) | Written by the current CLI into the generated Observability AgentId config value, and used for the child identity’s own grants and inheritance. That generated mapping is not the validated runtime identity contract: ingestion binds every span’s gen_ai.agent.id to the agent’s authenticated appId / OAuth client_id (the token appid/azp), never an Entra object id. Verify the configured value resolves to the identity appId before trusting it — a written config does not prove the exported identity is correct (observability identity contract, §07 ingestion, [19]). |
| agentRegistrationId | Agent 365 registration-record ID | Registration lookup and reuse — neither the blueprint ID nor the identity object ID |
| clientAppId | The CLI’s human-operator management client-app ID | Signs the operator in and calls management APIs — not the runtime agent identity |
| tenantId | Entra tenant | Principal, identity, grants, registration, and the runtime authority endpoint |
| messagingEndpoint | HTTPS callback, usually ending /api/messages | Only with --m365: routes Microsoft 365 traffic for this blueprint + tenant — not a generic, automatic URL binding |
The endpoint is a routing destination for the named blueprint, tenant, and identity; the hosted app must expose and adopt the expected SDK-validated messaging route, not arbitrary generated logic. See §03 Identity and §04 Token flows. Source [4].
Runtime configuration written by setup
Keys the CLI updates (placeholder identifiers only) — Credential protection source:
| Key | Value / note |
|---|---|
| Connections.ServiceConnection.Settings | AuthType, AuthorityEndpoint (tenant), ClientId and AgentId = blueprint app ID, ClientSecret (plaintext when synchronized; protect in deployment), Scopes |
| ConnectionsMap | Maps every service URL to the connection |
| TokenValidation | Audiences = blueprint app ID, TenantId. Enabled is written false (.NET only) |
| Agent365Observability | The pinned helper copies agenticAppId into AgentId, falling back to agentBlueprintId when absent. Verify or resolve the agent identity’s appId for runtime ingestion; neither this copy nor its fallback proves the authenticated identity matches. AgentBlueprintId is separate blueprint metadata; ClientId and TenantId configure authentication. |
| EnableAgent365Exporter | .NET: EnableAgent365Exporter ??= false (set only when missing/null; explicit values preserved). Node/Python: ENABLE_A365_OBSERVABILITY_EXPORTER=false replaces the first matching key or is appended |
Permissions — three separate layers
| Layer | What it does |
|---|---|
| 1 · Declaration | Setup computes the needed resources/scopes from built-in Graph requirements, ToolingManifest.json (MCP audiences), Observability, Power Platform, an optional Messaging Bot, and customBlueprintPermissions. This grants nothing by itself. |
| 2 · Inheritable permissions | Configures the blueprint so child agent identities can inherit allowed scopes and app roles. A correct inheritance policy can still have nothing effective to inherit. |
| 3 · Grants / admin consent | Delegated admin consent (and, for S2S, app-role assignments) against the blueprint principal. A Global Administrator can complete this during setup; a non-GA receives consent URLs and an Action Required handoff. |
An authorized developer can build much of the structure, but only a tenant admin turns intent into tenant-wide consent. Work IQ / MCP scopes declared in the manifest are not granted — run a365 setup permissions mcp after approval (§06 MCP tooling); the runtime code still loads the tools separately.
Representative Microsoft Graph calls
Representative of the setup path in the pinned source — not the complete call set (lookups, OAuth-grant inspection, app-role assignment, and endpoint registration also occur). Several live operations use Graph beta; do not rewrite them as v1.0 equivalents. This does not change the §09 endpoint catalog.
| Operation | Method & path | Surface |
|---|---|---|
| Create blueprint application | POST https://graph.microsoft.com/beta/applications | beta |
| Create tenant blueprint principal | POST https://graph.microsoft.com/v1.0/serviceprincipals/graph.agentIdentityBlueprintPrincipal | v1.0 |
| Add client secret | POST https://graph.microsoft.com/v1.0/applications/{blueprintObjectId}/addPassword | v1.0 |
| Configure inheritable permissions | POST https://graph.microsoft.com/beta/applications/microsoft.graph.agentIdentityBlueprint/{blueprintId}/inheritablePermissions | beta |
| Create child agent identity | POST https://graph.microsoft.com/beta/servicePrincipals/Microsoft.Graph.AgentIdentity | beta |
| Register the agent | POST https://graph.microsoft.com/beta/copilot/agentRegistrations | beta |
Source: pinned public DevTools setup path [36]; Graph method references [12] [13] [14] [15]; CLI setup reference [32].
What setup all does not do
Out of scope for setup
- Upload, host, or run the agent’s code, or deploy it to Azure/AWS/GCP
- Invent a production URL, or register every URL on a domain
- Add the SDK, auth middleware / token validation, or register MCP tools into arbitrary app code
- Grant tenant-wide consent when the operator lacks the admin role, or treat a Work IQ request as approved consent
- Create an Agentic-User / mailbox by default, or make an agent discoverable just because the blueprint exists
- Upload manifest.zip, approve it, or create a Teams instance
Microsoft 365 package distribution — a separate lifecycle
Setup’s registration is programmatic only. Three outcomes are distinct and do not imply one another:
- Registration creates a management / inventory record and identity references — it does not by itself guarantee every end-user UI surface shows the agent.
- Package distribution — a365 publish → manifest.zip → admin-center upload → availability / approval → instance / hire — is what lights up the applicable Microsoft 365 experiences; instance / hire applies only where the agent type supports it.
- Runtime authentication and telemetry are the hosted app’s own responsibility.
Deploy and host the runtime separately. See §08 Administration.
Re-running, validating & recovering
Setup uses targeted reuse and reconciliation, not universal atomic idempotency. It reuses the blueprint by display name, revalidates and replaces invalid/expired secrets, verifies the stored agentRegistrationId before reuse, and saves state before later steps so partial progress survives. Preserve a365.generated.config.json — do not delete objects to “retry.” Review the final Action Required block for pending consent, and recover narrowly with --agent-registration-only (registration) or setup blueprint --endpoint-only (callback).
What changes in my code?
Agent 365 does not take ownership of your executable or automatically intercept everything it does. Registration establishes a management record linked to its identity. Your application then uses that identity for supported resource access and emits activity telemetry. Additional capabilities require their own runtime integration and tenant configuration.
Provisioning and runtime distinctions reviewed 2026-09-22 against the pinned DevTools source [36] and the observability identity contract [19]. Other source-review dates are unchanged. The responsibilities below are illustrative code areas, not verified files in a supplied application.
| Area | What you add or change | Provisioned for you? |
|---|---|---|
| Configuration / bootstrap | Load and distinguish tenant, blueprint, instance, and authentication settings. Resolve the runtime instance appId, then initialize the SDK and auth client with your chosen credential configuration. | Values written to config (conditionally); the wiring is yours. |
| Messaging host (if needed) | Expose the registered callback route, validate incoming tokens, and route activities. | No host or middleware. --m365 registers the callback reference; you implement and secure the route. |
| Telemetry instrumentation | Install and configure the exporter, enable it, and emit the root invoke_agent span bound to the identity appId. | Exporter flag written (often false); you install and enable it. |
| Existing agent business logic | Keep the existing command or task logic; run it inside an invocation observation wrapper and instrument relevant tool calls. Adopt agent credentials and policy checks where needed. | Yours. |
- Exact IDs recorded — tenant, blueprint app ID (+ object ID), child identity, agentRegistrationId
- Grants effective — query-entra inheritance shows real Effective inheritance, not just policy
- Deployed runtime config — secret in a managed store, TokenValidation enabled with correct audience/tenant
- Callback routing — the deployed /api/messages matches the registered endpoint (only if --m365)
- Microsoft 365 package distribution handled separately — a365 publish → admin upload → approval → instance (where the agent type supports it)
- Observability — exporter enabled, licensing present, root invoke_agent span emitted
Read-only validation & endpoint recovery: CLI query-entra [33], messaging endpoint [35], publish [34]. All commands above are shown for reference only and are not executed by this page.
Governed MCP tooling & tool-call lifecycle
Tool access separates a management plane (declare + consent) from an MCP data plane (discover + execute). Declaring a server does not grant permission; a Global Administrator must separately grant the blueprint’s MCP permissions, and permissions take precedence over local configuration.
Governance facts
- The SDK loads MCP configuration and registers tools with the agent orchestrator; the chosen framework / runtime executes the tool calls. Server definitions are registered and published through the a365 CLI / admin, not by the SDK.
- Blocking an MCP server in the admin center blocks it for users and agents tenant-wide.
- A developer with the appropriate permissions can publish or submit a custom MCP server, but it stays unavailable until a tenant administrator approves it. [31]
- Exact catalog scopes / audiences must be read from the generated ToolingManifest.json — do not hardcode them.
Observability & telemetry
A valid run is an OpenTelemetry span tree with a required root. Without a valid root invoke_agent span the run is invisible to the Defender agent activity view, the admin-center activity/inventory telemetry, and Purview agent experiences — though child spans remain queryable in Defender advanced hunting.
Ingestion requirements
- Identity bindingEvery span’s gen_ai.agent.id must equal the authenticated token’s appid/azp (the agent’s appId / OAuth client_id) — the ingestion URL agentId, not the Entra object id or the blueprint appId. [19]
- Per-run resolutionA shared host serving multiple agents must resolve the intended identity per request/run so the token appid/azp, the emitted gen_ai.agent.id, and the ingestion URL all match — never mix agents in one export request. A single static configured ID is valid only for a deliberate single-instance deployment. See §05A runtime integration.
- Versionapi-version=1 is mandatory for direct ingestion.
- Request limitDirect ingestion is capped at 1 MB per request.
- AcceptanceA 200 OK is not proof of acceptance — inspect the response results.
- License gateWithout an assigned Microsoft 365 E7 or Agent 365 license, telemetry can be accepted at HTTP level but rejected as tenant_not_licensed.
- Correlationgen_ai.conversation.id identifies a conversation / thread, which may span multiple runs; a run is a span tree whose spans share one OTel traceId.
Administration & action semantics
Identity, registration, package, runtime, Azure resources, and agent-owned data each have separate deletion and retention behavior, and no single control blocks or deletes across all of them. One documented cascade is the exception: deleting an Entra blueprint (application or principal) asynchronously soft-deletes its child agent identities and their agent user accounts.
Administrator control surfaces
| Plane | Primary interface | Responsibilities |
|---|---|---|
| Agent catalog / governance | Microsoft 365 admin center → Agents | Inventory, requests, publishing, install/uninstall, user/group assignment, blocking, owner management, package details |
| Agent identity | Microsoft Entra admin center + Graph | Blueprints, principals, identities, sponsors, credentials, permissions, consent, Conditional Access, identity lifecycle |
| Tool governance | M365 admin center → Agents and Tools | Allow/block Work IQ and custom MCP servers; review custom server registration |
| Threat protection | Microsoft Defender | Agent activity views, exposure/misconfiguration risk, suspicious activity, advanced hunting in CloudAppEvents |
| Data security / compliance | Microsoft Purview | DLP, audit, retention, eDiscovery, communication compliance, data security posture |
| Runtime infrastructure | Azure / Foundry | Deploy, scale, start/stop Foundry compute; Azure RBAC |
| Copilot Studio ALM | Power Platform admin center | Move agents and actions across Dev, Test, Production; environment governance |
| Automation | Microsoft Graph | Inventory, package details, registration metadata, identity objects, selected governance actions |
Action semantics — what each action does and does not mean
| Action | Means | Not equivalent to |
|---|---|---|
| Register | Create inventory metadata and/or identity objects | Publish, install, consent, or deploy code |
| Publish to store | Add an approved package to the organizational catalog | Assigning it to users |
| Install / deploy | Make an available agent ready for selected users/groups | Starting its external runtime |
| Activate template | Permit scoped users to instantiate a template agent | Creating every instance automatically |
| Approve request | Accept a request and perform the documented activation/publication | Granting every downstream API permission |
| Block package | Prevent organizational use through governed host surfaces | Deleting source code or every identity |
| Disable identity | Identity-plane restriction on the selected agent identity | Removing catalog/package metadata |
| Stop Foundry agent | Deallocate the underlying Azure deployment | Blocking a package |
| Uninstall | Remove assignment/availability for users | Deleting the source agent |
| Reassign owner | Transfer ownership of a shared Agent Builder or Copilot Studio agent | Changing owners of every agent type, or moving identity credentials |
| Add / remove owners | Manage owners of an Agent Builder agent; owners have equal rights and the last owner cannot be removed | Owner management for Copilot Studio or other agent types |
| Delete registration | Remove beta registry metadata record | Cascade deletion of package, runtime, identity, or data |
| Delete Agent Builder agent | Permanently removes the agent, files, and SharePoint Embedded container | General deletion behavior for all platforms |
| Delete Entra identity/blueprint | Soft-delete the identity for 30 days; deleting a blueprint also soft-deletes its child agent identities and their agent user accounts | Removing host package or external runtime |
| Cleanup Azure | Remove CLI-created App Service resources | Removing registry or Entra objects unless separately requested |
Representative endpoint catalog
Diagram-worthy control points rather than an exhaustive API inventory. Search by function, path, or permission; filter by status. Every path marked preview or beta must be re-verified for the tenant, cloud, and scenario before use.
| # | Lifecycle function | Method & path | Status | Least-privileged permission | Source |
|---|---|---|---|---|---|
| 1 | Create identity blueprint | POST https://graph.microsoft.com/v1.0/applications/microsoft.graph.agentIdentityBlueprint | v1.0 GA | Delegated or application: AgentIdentityBlueprint.Create | [12] |
| 2 | Create blueprint principal | POST https://graph.microsoft.com/v1.0/servicePrincipals/microsoft.graph.agentIdentityBlueprintPrincipal | v1.0 GA | AgentIdentityBlueprintPrincipal.Create. Body uses the blueprint appId, not the application object id. | [ref] |
| 3 | Create agent identity | POST https://graph.microsoft.com/v1.0/servicePrincipals/microsoft.graph.agentIdentity | v1.0 GA | AgentIdentity.Create.All; application alternative AgentIdentity.CreateAsManager | [13] |
| 4 | Enable / disable or update identity | PATCH https://graph.microsoft.com/v1.0/servicePrincipals/{id}/microsoft.graph.agentIdentity | v1.0 GA | Enable/disable: application AgentIdentity.EnableDisable.All AND AgentIdentity.CreateAsManager; broader AgentIdentity.ReadWrite.All; delegated EnableDisable.All. Custom security attribute changes need additional rights. Scopes are not uniform across all PATCH properties. | [ref] |
| 5 | Delete agent identity | DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{id}/microsoft.graph.agentIdentity | v1.0 GA · soft-delete 30d | Delegated AgentIdentity.DeleteRestore.All; application also requires AgentIdentity.CreateAsManager | [13] |
| 6 | Delete blueprint | DELETE https://graph.microsoft.com/v1.0/applications/{id}/microsoft.graph.agentIdentityBlueprint | v1.0 GA · soft-delete 30d | AgentIdentityBlueprint.DeleteRestore.All — delete cascades: child agent identities and their agent user accounts are soft-deleted (30-day restore). [26] | [12] |
| 7 | Register external / custom agent metadata | POST https://graph.microsoft.com/beta/copilot/agentRegistrations | Preview · not for production | AgentRegistration.ReadWrite.All, delegated or application | [15] |
| 8 | Read registration | GET https://graph.microsoft.com/beta/copilot/agentRegistrations/{id} | Preview | AgentRegistration.Read.All or read/write permission | [14] |
| 9 | Update registration | PATCH https://graph.microsoft.com/beta/copilot/agentRegistrations/{id} | Preview | AgentRegistration.ReadWrite.All | [14] |
| 10 | Delete registration | DELETE https://graph.microsoft.com/beta/copilot/agentRegistrations/{id} | Preview · irreversible | AgentRegistration.ReadWrite.All | [14] |
| 11 | Inventory catalog packages | GET https://graph.microsoft.com/v1.0/copilot/admin/catalog/packages | v1.0 GA | CopilotPackages.Read.All, delegated or application. Requires an Agent365 license. | [16] |
| 12 | Block package | POST https://graph.microsoft.com/beta/copilot/admin/catalog/packages/{id}/block | Beta · delegated only | Delegated CopilotPackages.ReadWrite.All; application not available; global commercial only. | [16] |
| 13 | Reassign package owner | POST https://graph.microsoft.com/beta/copilot/admin/catalog/packages/{id}/reassign | Beta · delegated only | Delegated CopilotPackages.ReadWrite.All; application not available; global commercial only. | [16] |
| 14 | Ingest S2S telemetry | POST https://agent365.svc.cloud.microsoft/observabilityService/tenants/{tenantId}/otlp/agents/{agentId}/traces?api-version=1 | Direct OTLP/HTTP+JSON | App role Agent365.Observability.OtelWrite; audience 9b975845-388f-4429-889e-eab1ef63949c. {agentId} must equal the calling agent identity appId. | [11] |
| 15 | Ingest delegated telemetry | POST https://agent365.svc.cloud.microsoft/observability/tenants/{tenantId}/otlp/agents/{agentId}/traces?api-version=1 | Direct OTLP/HTTP+JSON | Delegated scope Agent365.Observability.OtelWrite | [11] |
| 16 | Check tenant telemetry eligibility | GET https://agent365.svc.cloud.microsoft/observabilityService/tenants/{tenantId}/eligibility?api-version=1 | Optional S2S preflight | Auth per the direct OTel guide; do not infer eligibility from licensing alone. Intended for onboarded third-party S2S agents; a 503 response is indeterminate, not a definitive ineligible. | [11] |
| 17 | Work IQ Mail MCP interface | MCP https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_MailTools | Preview · MCP server URL | Delegated Work IQ Mail permission on client/blueprint; exact catalog values from ToolingManifest.json. Standard MCP methods, not REST paths. | [17] |
| 18 | MCP Management server | MCP https://agent365.svc.cloud.microsoft/mcp/environments/{environmentId}/servers/MCPManagement | Preview · MCP server URL | Tenant/admin configuration required; a developer with appropriate permissions can publish or submit a custom MCP server, but it stays unavailable until a tenant administrator approves it. | [17] |
Caveats, unknowns & conflicts
This is a public architecture reference, not a deploy-ready configuration. Beta features are not supported for production. Frontier preview capabilities carry additional guardrails. Roles, OAuth permissions, licenses, and cloud availability differ by operation.
1. GA does not mean every feature is GA
Agent 365 is GA, but the Agent Registration API, Work IQ MCP, MCP Management, package block/reassign APIs, agent user accounts, and notification-dependent AI teammate scenarios carry explicit preview limits — and the documented status of connected-platform / registry sync is itself contested across public docs (see the §02A status note).
2. Built-in integration coverage evolves
Verify platform-specific guidance before adding the Agent 365 SDK to Copilot Studio or Foundry agents.
3. Two registry generations coexist
Legacy /beta/agentRegistry/agentInstances (replacement from May 2026), current package-management APIs, and preview /beta/copilot/agentRegistrations are different API models — not aliases.
4. Package vs registration APIs
Package management governs the organizational catalog; agentRegistration stores imported/managed metadata and an agent card. Different things.
5. Independent controls; one documented cascade
Identity, registration, package, runtime, Azure resources, and agent-owned M365 data have separate deletion operations and retention behavior — there is no universal cross-plane cascade. The documented exception: deleting an Entra blueprint (application or principal) soft-deletes its child agent identities and their agent user accounts (30-day restore).
6. Block behavior differs by platform
Blocking Agent Builder / Copilot Studio agents affects Microsoft Copilot and other hosts; Foundry infrastructure may keep running unless separately stopped.
7. Work IQ is not an S2S path
In the current quickstart it requires delegated context and admin OAuth consent.
8. Agent user accounts are optional
Ordinary identity, telemetry, and many tooling scenarios need no mailbox-bearing user. Frontier preview.
9. Role requirements beyond OAuth scopes
Agent ID Developer/Administrator, Agent Registry Administrator, AI Administrator, Global Administrator, Azure Contributor, and Azure AI Owner apply to different operations.
10. Graph SDKs default to v1.0
Beta endpoints require explicit beta SDK/client configuration.
11. Observability guidance has evolved
Microsoft OpenTelemetry Distro is the recommended new-integration path; existing Observability SDK integrations remain supported.
12. Narrower national-cloud availability
Checked Agent Registration and package governance beta endpoints document global commercial support, but not GCC High, DoD, or China.
Sources
All sources are canonical, public Microsoft Learn documentation. Accuracy reviewed 2026-09-16, with the a365 setup all and runtime-integration corrections reviewed 2026-09-22; unresolved public documentation conflicts are noted inline. The date on each entry is when the page was checked, not a claim that Microsoft updated it that day.
- Overview of Microsoft Agent 365 — GA 2026-05-01; control-plane purpose and licensing. Public · 2026-09-16
- Choose an Agent 365 integration option — built-in, registry-sync, and SDK mechanisms. Public · 2026-09-16
- Microsoft Agent 365 SDK overview — SDK boundary, capabilities, languages, package catalog. Public · 2026-09-16
- Agent 365 identity — objects, cardinality, credentials, S2S/OBO/Agentic-User, sponsors. Public · 2026-09-16
- Quickstart: Connect an existing agent to Agent 365 — skills onboarding, runtime modes, Work IQ restrictions. Public · 2026-09-16
- Agents for Microsoft 365 Copilot (declarative) — declarative-agent architecture and build interfaces. Public · 2026-09-16
- Governance and lifecycle actions for agents — install, uninstall, block, delete, owners, Foundry start/stop. Public · 2026-09-16
- Agents admin guide for Microsoft 365 — custom ZIP upload, assignment, deployment, publication. Public · 2026-09-16
- Agent 365 CLI reference — exact command families and boundaries. Public · 2026-09-16
- Agent management in Microsoft 365 admin center — template activation and instance management. Public · 2026-09-16
- Direct OpenTelemetry integration — exact ingestion and eligibility endpoints; two-step S2S. Public · 2026-09-16
- Create agentIdentityBlueprint — v1.0 method and permissions. Public · 2026-09-16
- Create agentIdentity — v1.0 method and permissions. Public · 2026-09-16
- Agent Registration API overview — beta CRUD surface. Public · 2026-09-16
- Create agentRegistration — exact beta endpoint, schema, permissions. Public · 2026-09-16
- Agent 365 Package Management API overview — package inventory and governance operations. Public · 2026-09-16
- Work IQ MCP overview — preview status, MCP server URLs, governance, clients. Public · 2026-09-16
- Graph API for Agent Registry and agent details — current Agent 365 admin API direction. Public · 2026-09-16
- Agent 365 observability concepts — identity binding, scopes, limits, downstream surfaces. Public · 2026-09-16
- Install and use the Agent 365 CLI — installation, authentication application, WAM/device-code. Public · 2026-09-16
- Add and manage tools — ToolingManifest, CLI configuration, consent, BYO MCP lifecycle. Public · 2026-09-16
- Understand Shadow AI in the Microsoft 365 admin center — Frontier public-preview unmanaged-agent discovery, detection/blocking, prerequisites and roles. Public · 2026-09-15
- Use Agent Map in the Microsoft 365 admin center — visual agent inventory, clusters, filters, summary cards, licensing and roles. Public · 2026-09-15
- Connected platforms in the Microsoft 365 agent registry — connect/authenticate, admin-triggered Sync agents, sync monitoring, metadata-only import. Public · 2026-09-15
- Ecosystem partner agents available in Agent 365 — ready-to-deploy agents vs agent factories; coming-soon and Frontier-only qualifiers. Public · 2026-09-15
- Understand agent identity deletion (Microsoft Entra Agent ID) — deleting a blueprint application or principal asynchronously soft-deletes its child agent identities and their agent user accounts; 30-day restore; restoring the parent after cleanup does not restore descendants. See also how to delete an agent identity. Public · 2026-09-16
- Choose an integration option — describes Registry sync as a preview integration path; page updated 2026-08-13. Public · 2026-09-16
- Microsoft 365 Roadmap item 559615 — connected-platform / registry sync capability. Public · 2026-09-16
- Microsoft Agent 365 service description — capability listing; page updated 2026-09-15. Public · 2026-09-16
- Agent user OAuth flow (Microsoft Entra Agent ID) — user_fic on-behalf-of chain: blueprint token T1, agent identity credential T2, resource token whose subject is the agent’s own user account. Public · 2026-09-16
- a365 develop-mcp CLI reference — a developer with appropriate permissions can publish or submit a custom MCP server, which stays unavailable until a tenant administrator approves it; page updated 2026-09-04. Public · 2026-09-16
- Agent 365 CLI setup reference — exact setup all / setup blueprint flags and boundaries; page updated 2026-09-01. Public · 2026-09-16
- CLI query-entra reference — read-only blueprint-scopes, inheritance, and instance-scopes checks. Public · 2026-09-16
- CLI publish reference — builds manifest.json + manifest.zip — a separate lifecycle from setup. Public · 2026-09-16
- Agent messaging endpoint — opt-in HTTPS callback registration, deferral, and endpoint-only recovery. Public · 2026-09-16
- Public Agent 365 DevTools source at pinned commit 08e48a9 (2026-09-11) — the setup implementation traced for this section; NuGet 1.1.221 exposes no reliable source-commit mapping, so behavior is current public source, not guaranteed for every installed binary. Public · 2026-09-16