Most Microsoft 365 tenants now hold agents that nobody listed: shared Copilot Studio and Agent Builder agents, partner agents installed from the store, Foundry agents and agents with their own Entra identity. No single screen used to show all of them, and the views that exist count them differently. This runbook builds one reconciled inventory from the Microsoft 365 admin center agent registry, the Microsoft Graph package API, the Power Platform inventory, the Entra agent identities list and the Purview audit log. It covers read-only discovery first, then ownership fixes, blocking and soft deletion with a rollback. It is for Microsoft 365, Entra and Power Platform administrators and the security engineers who own AI governance. For the operating model behind a registry, see the AI agent registry guide.
This is an independent guide from NHI Mgmt Group, based on Microsoft's public documentation as of November 2026. It is not sponsored or reviewed by Microsoft. Agent 365 features are changing quickly, so confirm menu names and licensing against Microsoft's current documentation.
Key takeaways
- Start in the agent registry. Agents > All agents in the Microsoft 365 admin center is Microsoft's unified inventory, including agents without an Entra agent identity, and viewing it needs no specific licence.
- Use the least privileged role. AI Reader is the documented least-privilege role for viewing agents in Agent 365 and Entra Agent ID; keep AI Administrator and Agent ID Administrator for the change steps.
- Reconcile four sources, not one. The registry, the Power Platform inventory, the Entra Agent identities list and Purview audit records each see a different slice, and duplicate rows in the registry are by design.
- Fix owners before you block. Shared agents become ownerless when their creator is deleted; Assign new owner is the documented fix for shared Agent Builder and Copilot Studio agents.
- Prefer reversible actions. Block and soft delete can be undone (soft deleted agents can be restored for 30 days); Permanently delete cannot.
When you need this
- Before broad Copilot or Agent 365 rollout: establish a baseline so that every later agent is a change you can see, review and attribute.
- After a leaver wave or reorganisation: the registry's Agents without owners tile shows shared agents whose creator has left.
- For an audit or AI register request: NIST SP 800-53 CM-8 and NIST CSF 2.0 ID.AM-02 expect a maintained inventory of software and services; agents are part of that estate. The AI Register and AI Inventory Template gives the governance record this inventory feeds.
- After a consent phishing or agent abuse report: you need to find every agent with a given connector, permission or authentication pattern quickly. The CoPhish 2025 case showed Copilot Studio agents being used to wrap OAuth consent phishing in a trusted Microsoft domain, which is the kind of agent an inventory must surface.
Where agents show up in Microsoft 365
Microsoft is converging agent visibility under Agent 365. The Microsoft 365 admin center becomes the unified registry and control plane, while Entra continues to provide identity through Agent ID and lists only agents that have an Entra agent identity. In practice you still need several views, because each answers a different question.
| Source | What it lists | Minimum role to read | Limit to know |
|---|---|---|---|
| Microsoft 365 admin center: Agents > All agents > Registry | Microsoft, partner-built, published by your org and shared by creator agents, with owner, channel, platform, risk count | AI Reader | The same Copilot Studio agent can appear twice; risk data needs an E7 or Agent 365 licence and can lag up to an hour |
Graph /copilot/admin/catalog/packages | Agent packages with isBlocked, availableTo, deployedTo, elementTypes, platform, agentIdentityId | CopilotPackages.Read.All | Requires an Agent 365 licence; global cloud only, not US Government L4, L5 or 21Vianet |
| Power Platform admin center: Manage > Inventory and Manage > Copilot Studio | Copilot Studio and Agent Builder agents, agent flows, apps, environments, connectors | AI Reader (AI-scoped view) or Global Reader (full) | Modified on does not work for agents; classic chatbots are on a separate page; changes appear within 15 minutes |
| Entra admin center: Entra ID > Agents > Agent identities and Agent blueprints | Agent identity objects and agents that use a service principal, with status, blueprint, owners and sponsors | Any Entra user account can view | Agents without an Entra agent identity are not here |
| Microsoft Purview: Audit | Who used which agent: AgentId, AgentName, AgentVersion, AppIdentity on Copilot interaction records | Audit search permission | Shows use, not existence; an unused agent leaves no record |
The registry groups agents by publisher type. Treat each type differently in the inventory, because the available admin actions differ.
| Publisher type | Typical origin | Inventory question | Available control |
|---|---|---|---|
| Microsoft agents | Built and maintained by Microsoft | Is it deployed, and to whom? | Install, uninstall, block |
| External partner-built agents | Store or partner publishers | Which permissions and data sources were consented? | Install, uninstall, block |
| Published by your org | Line of business agents approved for the store | Who owns and reviews it, and what does it call? | Block, delete, publish or reject requests |
| Shared by creator | Individual makers sharing Agent Builder or Copilot Studio agents | Is the creator still here, and who can use it? | Assign new owner, block, delete |
Before you start
- Roles: grant AI Reader to the people running discovery. For the Entra sign-in log steps, Reports Reader is the documented minimum. Keep AI Administrator (registry actions), Agent ID Administrator (agent identity changes) and Power Platform Administrator in a separate, approved group for steps 7 to 9. The Microsoft Entra Agent ID Guide explains the identity model behind those roles.
- Licensing: viewing the registry needs no specific licence. Risk signals, the registry Security tab and the Graph package API need a Microsoft E7 or Agent 365 licence. Check Billing > Licenses > Subscriptions before you plan around them.
- Conditional Access: if MFA is enforced for Azure Resource Manager, the Power Platform inventory may not load until the Power Platform admin center application and Microsoft Azure Management are included in that policy, as Microsoft documents.
- Record format: agree the fields first: agent name, IDs (package ID, Copilot Studio ID, Entra object ID), publisher type, platform, environment, owner, sponsor, channels, deployment scope, permissions, knowledge sources, tools, last activity and decision. Store it with your AI register.
Step-by-step
Steps 1 to 6 are read-only. Steps 7 and 8 change ownership or access but are reversible. Step 9 is destructive.
- Export the registry. In the Microsoft 365 admin center go to Agents > All agents > Registry, clear any saved filter (Microsoft notes that a leftover filter is the usual reason an agent seems missing), then choose Export with All agents. Note the summary tiles: Total agents, Agents without owners, Unmanaged agents and Agents at risk. Export the active users report too; it lists each user's total agents used, sessions and last activity for the last 30 days.
- Pull the same list from Microsoft Graph. Scripting the list gives you a repeatable baseline and fields the export may not include, such as
isBlocked,deployedToandagentIdentityId. Microsoft's documented pattern uses Graph PowerShell with paging:
Useful documented filters includeConnect-MgGraph -Scopes 'CopilotPackages.Read.All' $uri = "https://graph.microsoft.com/v1.0/copilot/admin/catalog/packages" do { $response = Invoke-MgGraphRequest -Method GET -Uri $uri $response.value | ForEach-Object { $_ } | Export-Csv packages.csv -Append -NoTypeInformation $uri = $response.'@odata.nextLink' } while ($uri)$filter=supportedHosts/any(h:h eq 'Copilot'),elementTypesvaluesDeclarativeAgentandCustomEngineAgent,platformvaluesCopilot StudioandMicrosoft 365 Copilot Agent Builder, andlastModifiedDateTime gefor changes since the last run. The API rejectsor,neandcontainswith 400 Bad Request, so filter further offline. - Open the details of every agent that matters. For agents published by your org, shared agents and partner agents, open the details pane and record: the Users tab (Installed for and Available to), the Data & Tools tab (Can read capabilities, knowledge sources, tools such as Microsoft 365 connectors, MCP servers and custom actions, and the Agent ID), and the Permissions tab, which separates application and delegated permissions. Flag any application permission such as
Group.Read.AllorRoleManagement.Read.Directoryfor review. Data & Tools is read-only and can be empty if metadata has not synced, so an empty tab is not proof of no access. - Export the Power Platform inventory. In the Power Platform admin center open Manage > Inventory, filter to agents, and choose Download, which exports the whole inventory to CSV rather than just the loaded rows. Add Environment type and Connectors columns first. Check Manage > Copilot Studio > Classic chatbots separately. For a scheduled job, Microsoft documents
pac resource-query query-resources(preview), the Power Platform API and Azure Resource Graph; the Query Power Platform resources connector action needs delegated user authentication and returns 403 for service principals. Agents sitting in the default environment deserve a closer look; the Securing Microsoft Copilot Studio Agents Guide covers why. - List agent identities in Entra. Go to Entra ID > Agents > Agent identities, use Choose columns to show Blueprint App ID, Owners and Sponsors and Uses agent identity, and export. A value of No in Uses agent identity means the agent uses an ordinary service principal. Then open Agent blueprints and use View linked agent identities for each blueprint. To see which agents actually authenticate, filter Entra ID > Monitoring & health > Sign-in logs with Is Agent = Yes, or query Graph:
This is a beta endpoint, so treat its shape as subject to change.GET https://graph.microsoft.com/beta/auditLogs/signIns?$filter=signInEventTypes/any(t: t eq 'servicePrincipal') and agent/agentType eq 'AgentIdentity' - Add usage from Purview audit. In the Purview portal choose Audit and search the operation
CopilotInteraction(Microsoft Copilots) andConnectedAIAppInteraction(custom-built agents registered in your organisation) for 30 to 90 days. Export and group byAgentId, whose prefix shows the category (for exampleCopilotStudio.Declarative.orCopilotStudio.CustomEngine.), and byAgentName. Microsoft advises filtering onAppIdentityoffline after export. Admin operations such asCreatePluginandDeletePluginshow changes to the estate. - Reconcile and assign owners (reversible). Join the sources on agent ID and name. Classify each agent as approved, needs owner, needs review or remove. For ownerless shared Agent Builder and Copilot Studio agents use Assign new owner; the new owner gets full edit and delete rights and the previous owner loses all access. For Agent Builder agents with an owner, Add owner gives a second owner; groups are not supported. Set owners and sponsors on Entra agent identities as well, and see Agent Identity Recertification for the review cycle.
- Contain what you cannot justify (reversible). Use Block in the registry or the Power Platform inventory for published agents, or Uninstall for agents installed for users. Know the scope: blocking a Foundry or SharePoint agent affects only Microsoft 365 Copilot Chat, while blocking an Agent Builder or Copilot Studio agent also affects Copilot and other host apps. For an agent identity, use the Entra disable control, which blocks its sign-ins. Hold this state for a full business cycle. If the Power Platform Firewall is in active enforcement mode, admin center actions fail and Microsoft directs you to the Power Platform API instead.
- Delete (soft, then permanent). Delete agent soft deletes: the agent is unavailable but retained, and Restore agent works for 30 days, after which Microsoft 365 deletes it permanently. Permanently delete removes the agent and its resources at once and cannot be undone, so use it only after the hold period and owner sign-off. Foundry agents also have Stop, which deallocates compute and needs the Azure AI Owner role.
Verify it worked
- Counts reconcile: every registry row maps to an inventory record, and every Entra agent identity with sign-ins maps to a registry or Power Platform agent. Unmatched identities are your shadow agents.
- Owner tile: Agents without owners falls to zero, or each remaining item has a ticket.
- Blocked state is real: the Graph package shows
isBlockedtrue, the Entra identity status shows Disabled, and Purview shows no newCopilotInteractionrecords for thatAgentId. - No breakage: the help desk and the agent owners report no failed business process during the hold period.
Rollback and common errors
| Situation | Fix |
|---|---|
| A blocked agent is needed | Unblock in the registry or Power Platform inventory; re-enable the Entra agent identity if you disabled it |
| A soft deleted agent is needed | Restore agent within 30 days; it returns with its previous configuration |
| Wrong person assigned as owner | Run Assign new owner again; there is no documented revert, and the displaced owner loses read access |
| Expected agent missing from the registry | Clear filters; a published Copilot Studio agent may only appear after See agent in Microsoft 365 creates a shared entry |
| Same agent counted twice | By design: shared and published entries are separate rows; removing one does not remove the other |
| Registry Activity does not match Copilot usage reports | Expected: the usage report covers only Copilot Chat, Word, Excel and PowerPoint; do not compare them directly |
| Admin action fails silently | Check Power Platform Firewall enforcement mode and use the Power Platform API route |
Common failure patterns
- Trusting one view: the Entra list misses agents without an agent identity, and the registry does not show which agents actually sign in. Reconcile both.
- Reading an empty Data & Tools tab as safe: Microsoft states coverage is incomplete. Check the authoring platform for knowledge sources and connectors.
- Ignoring the default environment: maker agents built there are easy to share widely and hard to attribute later.
- Blocking without checking scope: a block on a Foundry agent leaves it reachable outside Copilot Chat; stop or remove its access at the source too.
- Deleting first: permanent deletion removes the evidence you need if the agent turns out to be part of an incident such as the consent abuse pattern in CoPhish 2025.
Hardening afterwards
- Schedule the Graph pull: run the package query weekly with
lastModifiedDateTime gethe last run date, and review every new or changed agent. - Gate publication: review pending requests (
requestStatus eq 'pending') and use Publish to store or Reject submission deliberately, not by default. - Bring agents under identity controls: where agents have Entra agent identities, apply Conditional Access and lifecycle workflows. See the Agent Identity and Access Guide.
- Feed detection: alert on new agent identities (audit Create service principal events for agents) and on Risky Agents findings in ID Protection.
Small tenant or large enterprise
A small tenant can work from the registry export and the Entra list in a spreadsheet each quarter, at no extra licence cost. A large enterprise should script the Graph package API and the Power Platform inventory into its CMDB or AI register, use AI Reader for a dedicated discovery account, and route new agents to environment owners automatically. The Agent 365 licence that unlocks risk signals and the package API is usually justified once agents number in the hundreds.
Metrics
| Metric | Direction |
|---|---|
| Agents without owners | Zero, or each with a ticket |
| Agent identities with sign-ins but no registry or inventory record | Zero |
| Agents with application permissions and no review in 12 months | Falling |
| Agents shared to the entire organisation | Known and justified |
| Days from agent creation to inventory record | Under 7 |
Framework mapping
| Framework | Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | CM-8 System Component Inventory; AC-2 Account Management; AC-6 Least Privilege | Agents as inventoried components with managed identities and minimal permissions |
| NIST CSF 2.0 | ID.AM-02; PR.AA-05; DE.CM-03 | Inventory of software and services; permission review; monitoring of technology usage |
| CIS Controls v8.1 | Control 2 Inventory and Control of Software Assets | Authorised and unauthorised software, applied to agents |
| MITRE ATT&CK | T1078.004 Cloud Accounts | Unowned agent identities as valid cloud accounts for abuse |
Practitioner checklist
- Grant AI Reader for discovery and keep change roles in a separate approved group.
- Export the registry with filters cleared and record the four summary tiles.
- Pull
/copilot/admin/catalog/packageswith paging into a dated baseline. - Record users, data, tools and permissions for every org, shared and partner agent.
- Download the Power Platform inventory and check classic chatbots separately.
- Export Entra agent identities and blueprints, and filter sign-in logs on Is Agent.
- Group Purview
CopilotInteractionrecords byAgentIdto show real use. - Assign owners, block before deleting, and hold for a business cycle.
- Schedule a weekly delta pull and review pending publish requests.
Standards and references
- Microsoft Learn: Agent registry in the Microsoft 365 admin center
- Microsoft Learn: Understand agent details in Microsoft 365 admin center
- Microsoft Learn: Governance and lifecycle actions for agents
- Microsoft Learn: List Copilot packages API
- Microsoft Learn: Agent registry convergence
- Microsoft Learn: Manage agent identities in your organization
- Microsoft Learn: Power Platform inventory
- Microsoft Learn: Audit logs for Copilot and AI applications
Related NHI Mgmt Group resources: AI agent registry · Microsoft Entra Agent ID Guide · Securing Microsoft Copilot Studio Agents Guide · Microsoft 365 Copilot Security Deep Dive · How to inventory AI agents in AWS Bedrock