Resource · Definition

How do you extend IAM to agents?

Extending IAM to agents means the same identity provider, groups, and grants that already govern people also govern AI agents, at the tool call, without a second access model.

Scroll for definition
Nolan Sullivan headshotBy Nolan Sullivan, Founding Growth Engineer
Published
Definition

extending IAM to agents

Extending IAM to agents means the same identity provider, groups, and grants that already govern people also govern AI agents, at the tool call, without a second access model. IAM is extended to an agent when its session authenticates as a directory principal, either the driving person or a dedicated identity with a named owner, and every tool call is allowed or denied against that principal’s existing roles.


Agent identityDefinitionSpeakeasy

Most organizations already run a serious IAM program. Employees typically sign in through Okta or Entra, groups map to roles, roles map to grants, and offboarding is a single directory event. None of that reaches agents by default, because agents act after the login. An agent connected to a Model Context Protocol (MCP) server calls tools directly, and the server calls the downstream system with its own separate credential, not one tied to the identity of whoever is driving.

The default workaround shows what unextended IAM looks like, with one shared service account for every agent and a server-level allowlist that is the same for everyone. Extending IAM to agents replaces that with the access model the organization already trusts.

How cleanly the extension maps depends on the kind of agent. One that an employee drives directly in a client like Claude Desktop inherits the employee’s grants in an obvious way, while a custom agent built by one person and triggered by another raises the question of whose permissions apply at all. The broader identity problem behind both cases is mapped in agent identity.

Why do existing IAM controls miss agent tool calls?

IAM as deployed governs the login. A person authenticates through SSO, the identity provider asserts who they are, and the application decides what they can see. That gate sits at the session boundary of applications built for people.

Agent traffic typically bypasses that gate. An agent calls tools over MCP, and the MCP server authenticates to the downstream system with a credential of its own, usually a service account or a long-lived API key provisioned when the server was set up. The person’s roles are generally not consulted, the call is attributed to the service account rather than to anyone in particular, and disabling the person in the IdP typically changes nothing about what the agent path can reach.

This is the same gap that makes non-human identity a discipline of its own, made up of credentials that act with real reach but belong to no one the directory knows about.

It also compounds, since each new MCP server adds another standing credential outside the directory, which is why an agent inventory that records what each agent runs as is the companion control to extending IAM at all.

What does it mean for an agent to inherit a person’s grants?

Inheritance means the agent session authenticates as a directory principal and carries that principal’s existing roles into every tool call. For an agent a person drives, the principal is the person. The session starts with their SSO login, and the agent can call create_refund only if their roles already allow it. For an autonomous agent, the principal is a dedicated directory identity with a named human owner, so someone answers for it the same way a manager answers for a service they run.

The consequence is that existing permissions can apply to agents without new access-control machinery. Teams generally do not need to write an agent-specific policy language or rebuild the role model, since the grants already reviewed, audited, and scoped for people are the grants available to the agent. Inheritance sets the ceiling rather than copying the whole grant, and most organizations restrict the agent to a subset of the driver’s roles, so a person whose role allows a destructive call can still drive an agent that is denied it.

How a person's grants narrow as they carry into an agent tool callA person's directory roles, including permission for a destructive create_refund call, pass into an agent session that inherits the same role set. At the tool call, a gateway evaluates each call individually. A read-only lookup call is allowed. The destructive create_refund call is denied, narrower than what the person's own role would allow.REFERENCE · INHERITANCEA person's roles set the ceiling for an agent's tool callsThe agent session carries the person's roles,while the gateway still evaluates each tool call on its own.01 · Directory principal
Support engineer
Signs in through the IdP
Roles grantview_orderupdate_customercreate_refundThe role set the IdP asserts.
inherits02 · Agent session
Same principal
No new policy for this session
Org policy narrowsview_orderupdate_customercreate_refundDenied for this agent only.
calls tools03 · Tool call decision
view_order: allowed, role includes it
update_customer: allowed, role includes it
create_refund: denied, even though the role allows it
The role set typically carries over unchanged, but the gateway can still deny an individual call the role would otherwise allow.

Two supporting pieces make inheritance precise rather than approximate:

  • Composite identity. A session records more than the person. It binds the agent workload, the client it runs in, and the task at hand together as one principal. What that tuple contains and why each element matters is covered in agent composite identity.
  • Task-scoped credentials. Instead of the person’s password or a long-lived key, the agent authenticates with a short-lived credential minted for the task and bound to the identity, which expires when the task completes. The mechanics are covered in task-scoped credentials.

How this identity model governs what agents actually do in production is walked through end to end in governing agent actions with enterprise identity.

Whose permissions does a custom agent run with?

Inheritance is clean when the person driving the agent is the person whose grants apply. An employee working an agent directly in Claude Desktop or an IDE is that case. The session starts with their login, every action is attributable to them, and the agent carries their roles, usually narrowed rather than widened.

A custom agent breaks that symmetry, since the person who builds a workflow and the person who triggers it are often different people. Three identities could plausibly govern the run, and each maps to IAM differently:

  • The builder’s. The agent runs as the engineer who wrote it, so everyone who triggers it borrows that engineer’s reach. This is the confused deputy problem, where authorization reflects who built the tool rather than who is using it, and the audit trail attributes every run to one person who performed none of them.
  • The triggering user’s. Attribution improves, but the fit is wrong in both directions. The workflow may need a call the user’s role does not include, which blocks legitimate runs, and the user’s role includes far more than the workflow needs, which the agent inherits for no reason.
  • The workflow’s own. The agent gets grants scoped to what the workflow does. But that creates a principal that is neither a person nor a traditional service account, and the directory needs somewhere to put it.

Sometimes the directory can absorb this. The workflow is registered as a dedicated principal with a named owner, the same pattern autonomous agents use, and its grants are reviewed like any other role. Other times the workflow needs a concept the identity system does not have, and that concept is task-scoped credentials, a short-lived credential minted per run, naming the triggering person as subject and the agent as actor, and scoped to what this workflow needs for this task. The credential asserts which agent is acting and for whom, without granting either party’s full standing permissions, and it expires when the run completes.

How is tool-call RBAC different from an MCP server allowlist?

A server allowlist and tool-call RBAC both answer “is this call allowed?”, but they answer it at different places with different information.

PropertyServer allowlistTool-call RBAC
When the decision is madeOnce, when the server is configuredOn every tool call
Who it varies byNobody; the same for every callerThe directory principal behind the session
What it knowsThe server and its tool listThe person, the system, and the action
What revocation takesRedeploying or reconfiguring the serverA directory change, effective on the next call

A server allowlist is a property of infrastructure. If the GitHub MCP server exposes twelve tools and the allowlist admits eight, every engineer, contractor, and intern who connects gets the same eight. The decision was made before any of them showed up, and a flat allowlist has no way to differentiate one caller from another without a separate server or an equivalent extra layer in front of it.

Tool-call RBAC scopes policy to the person, the system, and the action, rather than a server-level list that treats every caller the same. A support engineer’s session can call create_refund because their role allows it, while a contractor connected to the identical server is read-only. Enforcing that requires a decision point on the path of every call, which is the job of an MCP gateway. It terminates the agent session, resolves the principal, and evaluates each tool call against that principal’s grants before anything reaches the downstream system.

What happens to agent access when you deprovision a user?

The answer shows whether IAM actually extends to agents or just looks like it does on paper. When IAM is extended to agents, agent access is derived from the directory rather than copied out of it. Disabling the account in the IdP means sessions can no longer authenticate as that person and their grants no longer resolve, so agent access ends at the same point their other access ends. Directory Sync keeps users, groups, and attributes current in between, so a role change can narrow an agent’s reach without anyone editing agent configuration.

When IAM is not extended, offboarding can miss the agent path. A shared service account exists independently of any one employee, so one person leaving does not affect it. An API key embedded in an MCP server config was never tied to that person’s identity in the first place. And the leaver’s security review has no register that would surface either credential.

Autonomous agents need one more control here. Because their principal is a dedicated identity rather than the leaver’s own account, the named owner field is what lets the agent inventory flag agents whose owner has left and needs replacing.

How does the Speakeasy AI Control Plane extend the directory to agents?

Everything above is an architecture, and the Speakeasy AI Control Plane ships it as a product. The platform puts a gateway on the path between agents and tools and wires its decisions to the directory the organization already runs:

  • Sessions authenticate through the existing IdP. Okta, Microsoft Entra ID, Auth0, WorkOS, Google Workspace, Ping Identity, or most SAML or OIDC providers. Directory Sync keeps users, groups, and attributes current.
  • The gateway evaluates each tool call. Every call is allowed or denied against the principal’s existing roles, with policy scoped to the person, the system, and the action rather than a server-level allowlist that is the same for everyone.
  • Existing permissions apply to agents with no new machinery. The role model stays where it is, and agents are one more thing it governs.
  • Deprovisioning in the IdP revokes agent access. The directory event that disables the person’s login is the event that ends their agents’ reach.

The details of the identity model, the credential lifecycle, and the audit trail behind each decision are on the agent identity product page. To see your own directory governing agent tool calls, talk to us.

Frequently asked questions

What does it mean to extend IAM to agents?

Extending IAM to agents means the same identity provider, groups, and grants that already govern people also govern AI agents, at the tool call, without a second access model. IAM is extended to an agent when its session authenticates as a directory principal, either the driving person or a dedicated identity with a named owner, and every tool call is allowed or denied against that principal's existing roles.

Do agents need a separate access model from people?

No. When IAM is extended to agents, every existing permission applies to them with no new machinery, and the groups, roles, and grants already in the directory decide what each agent can call. A separate access model, usually a shared service account behind a static allowlist, creates a parallel permission system that drifts from the directory and that offboarding typically does not touch.

What identity does an AI agent authenticate as?

An agent authenticates as a directory principal. An agent a person drives authenticates as that person, so its tool calls carry the driver's own roles. An autonomous agent authenticates as a dedicated identity with a named human owner. Neither case uses a shared service account, because a shared account makes every agent's calls indistinguishable and can keep working after the people behind it have left.

Does an agent inherit all of a person's permissions?

Inheritance sets the ceiling rather than copying the grant outright. An agent a person drives can never exceed their grants, and most organizations narrow it further, denying the agent destructive calls that the person's own role allows. The directory still makes the access decisions, and the agent operates under a restricted subset of the driver's roles.

Whose permissions does a custom agent built by someone else run with?

Not the builder's permissions. Running the agent as the person who built it lets everyone who triggers it borrow the builder's reach, which is the confused deputy problem. Running it as the triggering user fits badly in both directions, blocking calls the workflow needs and inheriting grants it never uses. The workable answers are a dedicated directory principal for the workflow with a named owner, or a task-scoped credential minted per run that names the triggering person as subject, the agent as actor, and only what the workflow needs as scope.

Which identity providers can govern agent access?

Okta, Microsoft Entra ID, Auth0, WorkOS, Google Workspace, Ping Identity, and most SAML or OIDC providers. With Directory Sync connected, users, groups, and attributes stay current, so agent authorization follows the directory as it changes, and deprovisioning a user in the IdP revokes their agent access with it.

How is tool-call authorization different from an MCP server allowlist?

A server allowlist is one decision, made when the server is deployed, and it is the same for every caller. Tool-call authorization is a decision per call, where a gateway evaluates each tool call against the person behind the session, the system being called, and the action being taken. Two people connected to the same server get different answers because their directory roles differ.

What happens to an agent's access when a user is deprovisioned?

When IAM is extended to agents, agent access is derived from the directory, so disabling the account in the IdP revokes it. Sessions authenticating as that person stop authenticating, and their grants stop resolving. When IAM is not extended, the agent path can run on a shared credential the directory has no record of, and offboarding typically leaves it running.

AI everywhere.

Control here.