Least privilege begins with a complete list, because you cannot narrow access to a tool you did not know existed. Agents compound the problem: the Frontier Model Forum describes them as systems that invoke tools, query external services, hold memory across sessions and coordinate with other agents, and notes that this expanding tool access pushes the attack surface well beyond what any single prompt exposes (FMF issue brief). Your inventory has to reflect that, which takes four sources rather than one.
- Declared configuration. Tool declarations in your framework, server manifests, plugin registries and function-calling schemas. Export them programmatically; do not read the documentation.
- Credential material. Every OAuth grant, API key and service account the runtime can present. A tool you never registered but whose credential sits in the environment is a live tool.
- Delegation paths. Sub-agents, orchestrator handoffs and inter-agent messaging. A child agent's toolset belongs in the parent's effective permission set.
- Runtime telemetry. Actual calls from logs. This is how you find the connector someone wired in for a demo and never removed.
If your agents live inside SaaS platforms, commercial inventory tooling already maps this. AppOmni's Agent Inventory surfaces agents running in Salesforce Agentforce, ServiceNow and Microsoft 365 Copilot, lists every tool each one may use along with its execution mode, and lets administrators remove permissions platform by platform (AppOmni). For in-house builds, a nightly schema export plus a week of call logs gets you the same view.
Record one row per agent-tool pair, not per tool. The same tool usually needs a different contract for a support agent than for a finance agent, and the pairing is what review actually examines.
| Column | What to record | Why it earns its place |
|---|---|---|
| Tool and owner | Registered name plus maintaining team | Assigns the re-review duty |
| Transport | Direct API, MCP server, plugin, sub-agent | Shows where enforcement can live |
| Credentials | Account or token the tool runs as | Exposes shared service accounts |
| Data touched | Systems, tables, fields, document sets | Drives the data scope decision |
| Verbs exposed | Every operation offered | Separates read from write |
| Chained dependencies | Tools whose output feeds this one | Surfaces composition risk |
| Live callers | Agents that can invoke it | Finds orphaned grants |
Red teamers reach for the same artefact first: enumerate every tool the agent can call, every external system it can reach and every delegation path, because that defines the blast radius of a successful attack (DeepTeam). If your inventory is thinner than the one a tester would build, it is not finished.



