Classic painting used as the article cover
← Back to blog

Playbook

Building an Enterprise Agent Inventory

A practical playbook for discovering, normalizing, and owning every agent across AI platforms, SaaS, cloud, and code.

Paulina XuJun 15, 202610 min
Agent InventoryEngineeringGovernance

Overview

Building an enterprise agent inventory starts with a single, slightly uncomfortable assumption: agents will appear in more places than you expect. An inventory is the system of record that turns that sprawl into something you can reason about. This playbook is about how to actually build one.

The challenge is that agents do not live in one tidy directory. A data-analytics team may stand one up inside a notebook platform. A marketing team may authorize a third-party agent through an OAuth grant nobody else sees. A platform team may deploy one into a Kubernetes cluster as a service account. They span AI platforms, SaaS tools, automation systems, cloud environments, code repositories, internal apps, developer workstations, and data platforms. Some are built in-house. Many are third-party agents authorized by individual employees with a single click.

A good inventory is not a spreadsheet you fill out once. It is built in five repeatable steps—discovery, normalization, ownership, permissions, and lifecycle state—and then kept alive. The rest of this post walks through each step in order.

The goal: a living map of every autonomous actor in the enterprise—what it is, who owns it, what it can touch, and whether it is still allowed to operate. That map becomes the foundation for authorization, monitoring, audit trails, lifecycle management, and compliance.

Step 1: Discovery

You cannot inventory what you cannot see. Discovery is the work of finding agents across the many surfaces where they quietly come into existence. No single signal is complete, so the practical approach is to pull from several at once and treat each as a partial view.

  • OAuth grants: Authorizations issued to third-party agents through your identity provider—often the fastest way to surface SaaS-embedded and external agents.
  • API usage: Traffic patterns and key usage that indicate an automated, non-human caller hitting internal or partner endpoints.
  • Service accounts: Non-human identities in cloud and directory systems that an agent uses to act.
  • SaaS integrations: Connected apps and add-ons inside platforms like your CRM, HRIS, or ticketing system.
  • Network activity: Egress to model providers or tool endpoints that hints at an agent running somewhere unexpected.
  • Code repositories: Agent frameworks, prompts, and tool definitions checked into source control.
  • Cloud deployments: Functions, containers, and jobs running agent workloads.
  • Self-registration: A submission workflow where teams declare agents they are building or adopting.

Consider a procurement team that authorizes a vendor-supplied agent to read purchase orders and draft supplier emails. To finance, it looks like a helpful add-on. From a discovery standpoint, it shows up as an OAuth grant against the procurement SaaS, an outbound integration to a mail API, and—if nobody asked—nothing in any official record. Three signals, one previously invisible agent. Discovery is the act of connecting those dots before an incident does it for you.

Step 2: Normalization

Discovery produces a messy pile of signals from systems that all describe agents differently. Normalization is where you collapse that into one consistent schema so that an agent found in a code repo and an agent found via an OAuth grant are described the same way. Without it, the inventory is just a list of links you cannot query.

At minimum, every record should capture the same core fields:

{
  "name": "supplier-comms-assistant",
  "owner": "procurement-ops",
  "technical_owner": "platform-team",
  "purpose": "Draft supplier emails from open purchase orders",
  "connected_systems": ["coupa", "outlook-graph"],
  "permissions": ["po:read", "mail:send"],
  "credentials": ["svc-procure-agent"],
  "users": ["procurement-ops"],
  "lifecycle_state": "production",
  "risk_classification": "medium"
}

The exact shape matters less than the consistency. Once every agent—whether it is a recruiting-screener in the HRIS or a revenue-forecast job in the data warehouse—maps to the same fields, you can finally ask portfolio-level questions: which agents can send external email, which touch regulated data, which have no owner.

Step 3: Ownership

Ownership is the field people skip and later regret. Every agent should have a business owner—the person accountable for why it exists and whether it should continue. Many should also have a technical owner who understands how it runs and can change or stop it.

Without ownership, basic questions have no answer. When a legal-intake agent starts mis-routing privileged documents, who reviews its access? When a marketing automation agent keeps emailing a suppressed segment, who pauses it? When the engineer who built a data-pipeline agent leaves the company, who inherits it? An ownerless agent does not become safer over time. It becomes an orphaned access path that nobody is watching.

A useful rule: if an agent has no business owner, it should not be in production. Discovery can find an ownerless agent, but only a named owner can decide what happens to it next.

Step 4: Permissions at a Useful Level of Detail

The inventory should record permissions at a resolution that is actually useful for risk decisions. It is not enough to note that an agent is connected to the CRM or connected to the data lake. Connection is a binary. Risk lives in the verbs.

The inventory should show what an agent can actually do against each system:

  • read and export — can it pull and remove data from the system?
  • create, update, and delete — can it change records?
  • send and share — can it reach the outside world or other people?
  • approve — can it complete an action that normally requires human sign-off?

The difference is not academic. A sales-ops agent with read on the CRM is a reporting convenience. The same agent with export and send can quietly exfiltrate a customer list. An IT-operations agent with read on cloud config is harmless; the same agent with delete can take down production. Capturing the verbs is what lets you separate the two without inspecting every agent by hand.

Step 5: Lifecycle State

Lifecycle state is the field that stops prototypes from silently becoming production systems. Every agent should be tagged with where it sits in its life:

  • experimental — early exploration, not connected to anything sensitive
  • pilot — running with a limited scope and audience
  • approved — reviewed and cleared, but not yet broadly live
  • production — operating with real access and real consequences
  • deprecated — on its way out, scheduled for removal
  • decommissioned — retired, credentials revoked, access removed

The common failure mode is a quiet promotion that never happened on paper. A finance team builds an experimental agent to reconcile a few invoices, it works well, and six months later it is reconciling thousands of invoices a day with write access to the ledger—still tagged experimental and never reviewed. Lifecycle state, kept honest, forces that promotion to be a decision rather than an accident.

Keeping the Inventory Live

The most important property of an agent inventory is that it is not static. Agents change. Permissions expand. Owners leave. Workflows evolve. New integrations get added on a Friday afternoon. An inventory that was accurate at launch and never touched again is worse than no inventory at all, because it creates false confidence—a clean-looking record that no longer matches reality.

The way to keep it honest is to combine two forces that are individually insufficient:

  • Automated signals continuously rediscover agents and flag drift—a new OAuth scope, a service account that gained a permission, an agent that stopped reporting. Automation is what finds things.
  • Human review supplies the context automation can never infer—why an agent exists, whether the new permission is intended, and whether it should still be allowed to operate at all.

Automation without review produces a haystack of unexplained findings. Review without automation produces a confident document that silently rots. Together, they produce an inventory you can actually trust.

In Practice

Most teams do not need to perfect all five steps before getting value. A pragmatic sequence works better than a big-bang rollout:

  • Start with the highest-signal source. For many enterprises that is OAuth grants in the identity provider—it surfaces third-party and SaaS-embedded agents fast, with little instrumentation.
  • Normalize early, even if the schema is thin. A small consistent record beats a rich inconsistent one. You can add fields later; you cannot retrofit consistency cheaply.
  • Backfill ownership before permissions. An owner can describe an agent's permissions; a permission map cannot tell you who to call.
  • Set lifecycle state at discovery time. Tag every newly found agent immediately, even if the tag is just "unreviewed." Untagged agents are the ones that drift.

The first pass will be uncomfortable. Expect to find agents nobody remembers authorizing, agents with permissions far broader than their purpose, and agents whose owner left two reorgs ago. That discomfort is the inventory doing its job: it is the difference between assuming you are governed and being able to show it.

A Living Map, Not a One-Time Audit

Built well, an agent inventory is a living map of enterprise agent activity—assembled from automated discovery, organized through a consistent schema, anchored by clear ownership, sharpened by action-level permissions, and kept honest by lifecycle state and continuous review.

Everything downstream depends on it. Authorization needs to know what an agent should be allowed to do. Monitoring needs to know what normal looks like. Audit trails need to know which agent acted and on whose behalf. Lifecycle management needs to know what to retire. Compliance needs evidence that all of this is governed. None of those are possible without a current, trustworthy record underneath.

You do not build an agent inventory to file it away. You build it because it is the one record that every other part of agent operations quietly depends on.