What agent authorization is, which model to use, how delegated authority travels in a token, and where the decision belongs so a prompt cannot move it.
Every request an AI agent makes raises two questions. Who is calling, and is this call allowed? The first has a settled answer: give the agent an identity and authenticate it. The second is where agent deployments actually break, because an agent chooses its own next action, and no permission you grant in advance knows what it will pick.
Agent authorization is the discipline of answering that second question correctly, one action at a time. Get it right and a compromised agent is a contained incident. Get it wrong and the agent does exactly what it was permitted to do, at machine speed, with a log entry that names a service account instead of a person.
This guide covers what agent authorization is, why role-based grants fail for agents specifically, which authorization model to choose, how delegated authority travels in a token, what the standards bodies are building, and where the decision has to be made so that a prompt cannot move it.
Agent authorization is the process of deciding whether a specific agent may take a specific action on a specific resource, under current policy and the authority delegated to it by a human. The decision is made per action rather than granted once, and it is made before the action executes rather than reviewed afterwards. When policy routes that decision to a person instead of resolving it automatically, you are running human in the loop approval.
The definition applies equally to classic software agents and to model-driven ones. Software and AI agent identity and authorization are the same problem with different failure modes: a scripted integration does a fixed set of things badly when compromised, and a model-driven agent does an open-ended set of things plausibly. Both need their own identity and their own grant. Only one of them can be talked into changing its mind.
Three properties separate real agent authorization from a permissions checkbox:
AI agent authentication and authorization get discussed as one topic and solved as one project, which is how the harder half gets underfunded. They are not the same question.
| Authentication | Authorization | |
|---|---|---|
| Question | Who is calling? | Is this specific call allowed? |
| Answered | Once per session or per credential | Every action |
| Input | A credential the caller presents | Identity, delegation, action, resource, context |
| Failure mode | An impostor gets in | A legitimate caller does something it should not |
| Hard part for agents | Mostly solved by giving each agent an identity | The agent decides its own next action |
Authentication for agents is largely a matter of not skipping it. Authorization is the open problem, and it is the one this page is about.
Role-based access control works because human jobs are stable. A support representative does support things, so you grant the support role and move on. The grant is a reasonable prediction of what the person will need, and when the prediction is wrong, the person files a ticket.
An agent does not file a ticket. It reasons about its goal, looks at the tools it can reach, and picks. So the role you grant has to cover not the actions the agent will take, but every action it might plausibly decide to take while pursuing its objective. That is a much larger set, and it grows every time someone adds a tool.
OWASP has a name for the result. Excessive agency is the risk of granting an agent more permission, more functionality, or more autonomy than its task requires, and the damage is done by the extra capability being used rather than by the agent being breached. A role broad enough to keep an agent from getting stuck is, by construction, excessive agency written into your identity provider.
Two structural facts make this worse than it sounds. Agents are non-human identities, and they proliferate faster than anyone governs them, so the over-broad role gets copied to the next agent as a template. And agents act unattended, so the gap between a wrong decision and a human noticing is measured in log-review cycles.
The fix is not a tighter role. It is moving the decision from provisioning time to request time.
Four models are actually in use. They differ on two axes: how finely a grant can be expressed, and how much of the current situation the decision can see.
| Model | How a grant is expressed | Strength for agents | Fails first when |
|---|---|---|---|
| RBAC (role-based) | Subject is assigned a role; the role holds permissions | Simple, universally supported, easy to audit | The agent needs an action outside its role, so the role gets widened until it covers everything |
| ABAC (attribute-based) | Rules over subject, object, action, and environment attributes | The decision can see context: time, sensitivity, risk, source | Action granularity stays coarse and rule sets become hard to reason about at scale |
| ReBAC (relationship-based) | Permission derives from a graph of relationships between subjects and objects | Excellent for per-object questions such as "may this agent read this document" | The question is not about an object relationship but about an action's risk right now |
| Policy-based (per-action, runtime) | A policy engine returns a verdict for a concrete request, using identity, delegation, action, resource, and context | Matches how agents behave: one verdict per action, delegation-aware, context-aware | Latency and policy sprawl, both of which are engineering problems rather than model limits |
Attribute-based access control is the formal ancestor of the runtime approach, and NIST's guide to attribute-based access control is still the clearest statement of the idea that a decision should be computed from subject, object, action, and environment attributes rather than looked up from a table.
In practice most teams end up with a hybrid: coarse roles to establish a floor, relationships for object-level questions, and a policy decision at request time for anything an agent initiates. That is fine. What is not fine is leaving the agent path on roles alone.
An agent almost never has authority of its own. It has authority someone lent it. That is the single most important thing to model correctly, and it is why AI agents need authenticated delegation rather than a service account with a permissions list.
Authenticated delegation means the agent's request carries cryptographic evidence of three things: which agent is calling, which human delegated the task, and what that human consented to. Delegated authority for AI agents is bounded by the delegating human's own entitlements, so an agent can never do something its principal could not do directly. Without that binding you have an agent with standing power and no one to attribute it to.
The OAuth on-behalf-of flow is how this is implemented. A user authorizes an agent for a defined scope, the agent receives a token that records both itself and the user, and when the agent calls a downstream service the token is exchanged for a narrower one that preserves both identities.
The mechanism underneath step four is OAuth 2.0 Token Exchange, which distinguishes the party acting from the party on whose behalf the action is taken: an actor token and a subject token go in, and the issued token keeps the two apart. That distinction is the whole ballgame. Collapse the agent and the user into one identity and you have impersonation, which authorizes correctly and audits uselessly.
Forwarding matters as much as issuing. A token passed unchanged from hop to hop turns one over-permissive grant into a chain of them. Exchange at every boundary, and keep the chain visible in the claims.
IETF AI agent authentication and authorization is an active area of work rather than a settled one, which is useful to know before you commit an architecture to a single vendor's shape.
These are drafts. They will change, and some will not ship. Design to the shape they share, which is an identity per agent plus a delegation chain in the token, and you will be able to adopt whichever wins without re-architecting.
On the tool side, the MCP identity model matters because the Model Context Protocol is where most agent tool calls now terminate, and its specification defines how a client is authorized to invoke a server's tools.
Two separations decide whether any of the above survives production.
The first is architectural and long-established. The component that decides should be separate from the component that enforces. NIST's zero trust architecture names these the policy decision point and the policy enforcement point, and requires the decision to be made per request rather than inherited from a prior grant. Separation is what lets you change a rule in one place and have every enforcement point honour it immediately.
The second separation is newer and matters more. The decision must be made outside the model, before the action executes. An agent's instructions are data, and data can be attacker-controlled. Prompt injection, poisoned tool descriptions, and malicious content retrieved mid-task are all ways of persuading an agent to want something it should not, and the catalogue of agentic threats is full of variations on tool misuse and privilege compromise. The specific mechanics are covered in our guide to AI agent attacks.
None of that matters if the verdict is produced by something the model cannot influence. An agent that has been talked into attempting a transfer still gets a denial, because the policy engine never read the prompt. Authorization inside the agent, by contrast, is a suggestion.
In practice the enforcement point for tool calls is a gateway, which is the argument for MCP access control, and where that gateway sits relative to the model and the tools is a structural choice covered in AI agent architecture.
A verdict is not a credential. Once the decision is yes, the agent still needs something to present to the resource, and the safest version of that is narrow and short-lived: an ephemeral credential minted for the approved action and expiring on its own. Authorization decides; the credential carries the decision.
And when a requested action falls outside what the delegation should cover automatically, the right answer is not to widen the grant. It is to ask the person. Step-up authentication interrupts the agent and requires the human to approve that specific action before it proceeds, which keeps a human-in-the-loop exactly where the risk is instead of everywhere.
Who is accountable for AI agents is the question every security leader asks first and most architectures answer last. It is not a philosophical question. It is a data-model question, and it has a concrete answer: the audit record has to carry enough identity to name a person.
AI agent ownership and AI agent accountability are separate layers, and conflating them is why incident reviews stall:
This is the runtime half of a wider program. The policy, review, and approval structure around it belongs to AI agent governance.
AI agent permissions management is where the model meets operations, and it fails in the same ways identity management has always failed, only faster.
Ranking this work is easier with a view of what each agent can actually reach. An agentic risk map gives you that ordering.
Four honest limits, because a control oversold is a control that gets blamed.
Agent authorization is the process of deciding whether a specific agent may take a specific action on a specific resource, under current policy and the authority a human delegated to it. The decision is made per action rather than granted once, and it is made before the action executes rather than audited afterwards.
Authentication answers who is calling and is settled once per credential. Authorization answers whether this particular call is allowed and has to be answered every time. For AI agents authentication is largely solved by issuing each agent an identity. Authorization is the hard half, because the agent chooses its own next action.
Give the agent its own identity, record which human delegated the task, and evaluate every action against policy at request time using a decision point the model cannot influence. Cap the agent at its delegating human's entitlements, then issue a narrow short-lived credential for the approved action.
It is the pattern where a service acts for a user rather than for itself. The user consents to a specific agent and scope, a token is issued naming both the agent and the user, and each downstream hop exchanges that token for a narrower one that preserves both identities so the final resource can attribute the action.
The named human owner of the agent is accountable for what it was permitted to do, and the delegating principal is accountable for the specific action taken on their authority. That only works if the audit record carries the verdict, the scope, the agent identity, and the human identity together.
It should not. Delegated authority is bounded by the delegating human's own entitlements, so an agent acting for someone must never be able to do what that person could not do directly. An agent that exceeds its principal is either running on a standing service account or has been granted authority nobody reviewed.
Authentication tells you which agent is calling. Agent authorization tells you whether this call is allowed, and for anything autonomous that is the decision that matters. Make it per action, at runtime, against the authority a named human delegated, in a component the model cannot reach. Then log it in a way that can name that person afterwards.
Agen gives every agent its own identity and authorizes each action at runtime, with the human behind the agent carried through to the audit record. See how that works in the identity foundation for every AI agent.
Keep reading
What ephemeral credentials are, how they are issued, how long they should live, and how to move AI agents off static secrets without breaking production.
Written by
Agen.co
Step-up authentication asks for stronger proof only when an action's risk earns it. How it works, when to trigger it, and how it extends to AI agents.