Security Objective
Agent authorization is the control that decides whether one concrete, fully resolved action request may execute. It answers a single question in one place: who is asking, under whose authority, to do exactly what, to which resource, with which parameters, to which destination or audience, in which tenant or workspace scope, for which task, at what time, and under which policy version.
The reason this control carries so much weight in AI systems is that a model's interpretation of language is probabilistic, while the consequences of an action are not. Every attack pattern documented on this site ends at the same place: the model can be influenced, and whether that influence becomes a security impact depends on a decision made outside the model. AI agent prompt injection, multi-agent propagation and tool output injection all converge on it.
This page is the reference for that control. It is not a general identity and access management guide, and it deliberately does not restate what belongs to least privilege, human approval or information flow control.
Authentication Is Not Authorization
Knowing which user, agent or tool sent a request establishes an identity claim. It does not establish permission for the requested operation. In agentic systems this distinction is easy to lose, because a call arrives over an authenticated channel from a component that belongs to the same deployment, and the receiving side treats belonging as permission.
| Question | Authentication | Authorization |
|---|---|---|
| What it establishes | Which identity made the request | Whether this request may proceed |
| Typical evidence | Credential, token, signed assertion, mutual TLS | Policy evaluation over a resolved request |
| Failure meaning | The caller cannot be identified | The caller is identified but not permitted |
| Enough on its own | No | Only for the exact request evaluated |
Model Decision Is Not an Authorization Decision
A model can produce text that looks like an authorization outcome. It can state that a user approved something, that a policy permits an action, that a recipient is internal, or that a file is non-sensitive. None of that is an authorization decision; it is generated content about authorization.
{ tool: "send_mail", to: "...", attachment: "...", note: "user already approved" }Discard the model's claim, resolve the identity, scope and policy facts from trusted context, and evaluate the concrete request independently.
The requested operation and its parameters, treated as an untrusted proposal that must be validated and authorized.
The practical rule is narrow and strict: a security-relevant fact that originates in model output is an input to validation, never an input to the permission decision.
The Learn article AI Agents and Tool Calling introduces this proposal-versus-decision split within the full agent loop.
Agent Identity Is Not the Initiating Principal
Two identities are present in almost every agent action, and collapsing them is one of the most consequential modelling errors in this area. The acting agent or workload identity is the runtime that executes. The initiating principal is the human, service or workload whose task caused the action to exist.
| Property | Acting agent identity | Initiating principal |
|---|---|---|
| What it answers | Which runtime executed the call | Whose task and authority the action serves |
| Typical lifetime | Long-lived deployment identity | Bound to a session, task or request |
| Risk if used alone | Standing authority applied to every task | No accountable executor in the audit trail |
| Authorization role | One input among several | Determines which delegated scope applies |
Microsoft's Zero Trust guidance on least privilege for AI agents, which is vendor guidance and identified as such, describes giving agents their own distinct identities and binding their permissions to the task and to the user on whose behalf they act rather than relying on shared or standing credentials. The architectural point generalizes: record both identities, and never silently convert a user's delegated authority into the agent's standing authority.
What an Authorization Decision Must Bind
A decision is only as precise as the facts it binds. A useful minimum for agentic actions is the following set, resolved before evaluation and recorded with the decision.
The human, service or workload whose task caused the request, with the delegation that applies.
The runtime identity that will execute, distinct from the principal.
The concrete object, mailbox, record, repository or endpoint, not a resource class.
The specific operation, not a capability category.
The resolved concrete values, including recipients, paths, amounts and payload sources.
Where the effect or data lands, including external recipients and tenants.
The isolation boundary the request claims to act within.
The objective the action serves, where the application can supply it reliably.
When the decision was made and which rule set produced it.
Where the Decision and the Enforcement Live
Two components are worth separating even in a small system. The decision point evaluates a resolved request against policy and returns a decision with a reason. The enforcement point sits on the execution path and will not perform the operation without an allow decision for that exact request.
The flow is linear, but the trust model is not. The user task and the model's proposed action are request content and remain variable; they say what is wanted, never what is permitted. The resolver, decision point and enforcement point are system components, and the identity, session, delegation and policy facts they use are resolved out of band from trusted stores, not read out of the prompt. Being a system component does not make the content it handles trusted, and the downstream resource returns data and results that carry their own trust and may themselves be externally influenced.
Place the decision as close as practical to the consequential action, so that the request evaluated is the request executed.
Orchestrator Checks Do Not Guarantee Downstream Enforcement
An authorization check in the orchestrator protects the orchestrator's own execution path. It does not constrain what the target system will accept from a credential that reaches it by another route. Where the target system is the real policy enforcement point, the action must be authorized there as well.
- Agent plan
- Orchestrator policy check
- Broad downstream credential
- Target system executes
The target system accepts whatever the credential permits. Any path that reaches the credential inherits its full authority.
- Agent plan
- Orchestrator policy check
- Scoped, audience-restricted credential
- Target system authorizes the request
Both layers evaluate. The credential that leaves the orchestrator cannot do more than the delegated scope allows.
Downstream revalidation checks
- The target system evaluates the request under its own policy, not only the orchestrator
- The credential presented downstream is scoped to the resource and audience of this task
- The initiating principal and delegated scope survive the hop in a verifiable form
- A denial downstream is recorded as a distinct event from an orchestrator denial
Capability Availability Is Not Permission
Tool discovery answers what the agent can see. Authorization answers whether this task may use it. Systems frequently conflate the two, exposing a registered tool to every session and treating registration as consent.
| Question | Tool availability | Authorization |
|---|---|---|
| Decided by | Registration and session configuration | Policy evaluation of a concrete request |
| Granularity | The tool as a whole | One invocation with resolved parameters |
| Changes with task | Often not | Should change with principal, scope and purpose |
| Sufficient for execution | No | Yes, for exactly that request |
Reducing which tools are exposed at all is valuable, but it belongs to least privilege. Authorization still has to evaluate each invocation that the exposure permits.
Token Possession Is Not Universal Authority
Tokens are a common carrier of delegated authority, and they are frequently over-read. A token establishes what its issuer asserted, for which audience, with which scopes or roles, and for how long. It is not a general permission to act on the holder's behalf everywhere.
Which target the token is intended for, so a token obtained for one resource is not accepted by another.
Which operations the delegation covers, evaluated alongside resource-side policy.
How long the assertion remains acceptable, which bounds but does not replace revocation.
Whether the token is usable only by the intended presenter.
RFC 8707, Resource Indicators for OAuth 2.0, is used here narrowly: it defines a way for a client to signal the specific protected resource it intends to access when requesting a token, which supports issuing tokens restricted to that target audience. That is one useful mechanism for avoiding broadly valid tokens. It is not a claim that OAuth is required for agent authorization, nor that any token mechanism resolves agent security on its own.
Delegation Is Not Unlimited Impersonation
When an agent acts for a user, the useful model is delegation with preserved context, not impersonation. Delegation records who delegated, what was delegated, for which task, resource and action, and for how long. Impersonation discards that and leaves a request that is indistinguishable from the user acting directly.
| Aspect | Delegated user authority | Application or workload authority |
|---|---|---|
| Source of permission | A specific user delegation for a task | The service's own entitlements |
| Scope shape | Bounded by the user's rights and the delegated subset | Independent of any one user |
| Cross-principal reach | Should not reach other principals' resources | May be broad, which is why its use must be narrow and explicit |
| Audit meaning | Action attributable to the user and the agent | Action attributable to the service only |
A frequent failure is silent promotion: a task starts under delegated user authority, hits a permission gap, and falls back to the service's own broader credential. That fallback should be an explicit, policy-governed decision, not an implicit retry.
Authorization Context Must Not Be Model-Authored
The facts a decision depends on have to come from somewhere trustworthy. In agentic systems, the tempting shortcut is to let the model assemble them, because the model already has them in context as text.
| Fact | Acceptable source | Not acceptable |
|---|---|---|
| Initiating principal | Authenticated session or identity service | A field in the model's tool call |
| Tenant or workspace scope | Application routing and session context | A value the model inferred from retrieved content |
| Approval state | The approval service record for this request | A model-set flag such as isApproved |
| Data classification | The classification service or resource metadata | A model assertion that a file is harmless |
| Policy version | The policy store at decision time | Anything reproduced in generated text |
Where a value has to originate in the model, because only the model knows what the user asked for, it is treated as a proposal: resolved against an authoritative source, validated, and then authorized. Resolution and validation are not the same as trust.
Exact-Action Authorization
Exact-action authorization means the decision is made after parameters are concrete, on the request that will actually execute. A broad permission to send email should not authorize an arbitrary combination of recipient, attachment, body and data source.
allow: send_mailallow: send_mail where principal=<user>, agent=<workload>, mailbox=<user mailbox>, recipient_domain in <allowed>, attachment_class <= internal, task=<invoice run>, policy=v14The first grant is satisfied by any mail. The second is satisfied only by the mail that was actually assessed.
Stale Authorization and Time-of-Check Gaps
A plan approved at one moment may execute against different facts. The target may resolve differently, a parameter may be rewritten by a later step, the classification of an attachment may change, the delegation may have expired, or the policy may have been updated.
Facts worth re-evaluating at execution time
- The resolved target resource and its identifier
- Concrete parameters, including recipients, paths and amounts
- The initiating principal and the delegation still being valid
- Data sensitivity or classification of anything attached or included
- The policy version in force at execution rather than at planning
Where an execution-relevant fact has changed materially, the correct behaviour is to authorize the execution request again rather than rely on the earlier decision about the plan.
Confused Deputy at Privilege Boundaries
A more privileged component that performs work because the caller is authenticated is a confused deputy. The caller's identity is established; the question of whether the caller's delegated scope covers the requested operation has not been asked.
- Caller agent
- Privileged agent authenticates caller
- Privileged action executes
The privileged component lends its own authority to whatever it is asked to do by a known caller.
- Caller agent
- Privileged agent authenticates caller
- Delegated scope and initiating principal evaluated
- Action authorized or denied
Identity, delegated scope and the originating task are all evaluated before the privileged component acts.
Every privilege boundary in the system needs this check, including internal ones that feel like implementation details.
Per-Hop Authorization in Multi-Agent Systems
Delegation across agents must not amplify authority. A downstream agent should receive at most the subset required for its subtask, and every hop should have a scope that can be enforced independently rather than inherited by convention.
- 01Bound subset per hop
The delegated scope handed to a downstream agent is a subset of the upstream scope, derived from the subtask rather than copied wholesale.
- 02Preserved initiating principal
The principal and task travel with the delegation in a form the receiving side can verify, not as prose in a message.
- 03Independent enforcement
Each hop authorizes the request it receives; no hop treats an upstream allow as sufficient for its own action.
- 04No re-expansion
A downstream component cannot request a broader grant than the delegation it received, and attempts to do so are denied and recorded.
The attack-side view of what happens without this is documented in multi-agent prompt injection; this page is the control reference rather than the threat description.
Human Approval Is a Layer, Not the Base Model
Human approval is valuable for selected high-impact actions, and it is a poor substitute for an authorization model. If the base decision is missing, approval becomes the only gate, and it is the gate most easily worn down by volume.
| Property | Approval of intent | Authorization of the concrete action |
|---|---|---|
| What is agreed | That a kind of action should happen | That this exact request may execute |
| Covers parameters | Usually not | Yes, by construction |
| Survives parameter change | Should not | Re-evaluated when facts change |
| Scales with volume | Poorly | Yes |
An approval that is worth having is specific and informed: it names the resource, the parameters and the destination that will be used. Approval UX, consent quality and fatigue belong to the human-in-the-loop control rather than to this page.
Boundaries With Neighbouring Controls
Authorization is one control among several that meet at the action boundary. Keeping the responsibilities apart makes each of them testable.
| Control | Question it answers | Not its job |
|---|---|---|
| Agent authorization | May this concrete request execute, under whose authority | Deciding how much authority exists in the first place |
| Least privilege | How much standing authority, identity and credential reach exists at all | Evaluating individual requests |
| Human-in-the-loop | Should a person confirm this high-impact action | Serving as the base permission model |
| Information flow control | May this data reach this destination | Whether the operation itself is permitted |
| Output validation | Is the structure, type and parameter set valid | Whether the caller may perform it |
| Tool-chain analysis | Is the sequence of actions unsafe in combination | Single-request permission |
Sequence-level composition is covered in Tool-Chain Analysis; a chain result never pre-authorizes a call.
Deny by Default and Fail Closed
When a security-relevant fact is missing or ambiguous, the safe outcome is a denial with a reason code. The unsafe outcome is a system that lets the missing fact be completed from model-authored text, because that converts an availability problem into an authorization bypass.
Fail-closed conditions
- The initiating principal cannot be resolved for this request
- The tenant, workspace or project scope is ambiguous
- The target resource does not resolve to exactly one object
- The delegation has expired or cannot be verified
- The policy store is unreachable or the applicable rule set is unknown
- A required parameter is absent and would otherwise be inferred
Each of these produces a denial that is visible, attributable and testable, which is what makes deny-on-missing-context measurable later.
Revocation and Short-Lived Authority
Authorization decisions are made against a state that can change. Two operational properties matter here, and both are kept deliberately bounded because credential lifecycle in general belongs to least privilege and identity management.
How long it takes, in practice, for a withdrawn delegation or disabled agent identity to stop being accepted at enforcement points.
How long a delegation or credential remains valid, which bounds exposure between revocation and expiry.
Microsoft's vendor guidance on least privilege for AI agents discusses just-in-time and time-bound elevation for agent identities rather than persistent standing rights. The relevant point for authorization is narrower: the enforcement point must consult current state, so that a withdrawal takes effect at the next decision rather than at the next credential renewal.
Worked Scenario: A Routine Vendor Invoice Email
The scenario is synthetic, bounded and reversible. Its purpose is to show that proposal, authorization and execution are three separate facts, not to demonstrate any technique.
An employee asks the assistant to prepare and send the routine monthly invoice email to the usual vendor contact.
The planner produces a concrete send_mail action with a resolved recipient address and a specific attachment drawn from the finance workspace.
The resolver establishes the initiating user from the session, the agent workload identity, the mailbox the delegation covers, the allowed recipient domains for this task, the classification of the attachment and the tenant scope. None of these values are read from the model's output.
The decision point evaluates the exact request. The proposed combination of recipient and attachment falls outside the policy for this task: the attachment classification is not permitted for the resolved recipient.
The enforcement point denies the request with a reason code before any mail transaction is attempted.
Deepest observed gate: authorization. No message was sent, no attachment left the workspace, and no data reached an unauthorized destination.
What the Scenario Does and Does Not Prove
| Claim | Supported by the run | Not supported |
|---|---|---|
| The enforcement point denied this request | Yes, with a recorded reason code and policy version | That it denies every out-of-scope request |
| No data reached an unauthorized destination | Yes, for this run | That the deployment cannot exfiltrate data by another path |
| The binding model was sufficient here | Yes, for this action and these parameters | That the same binding covers other tools |
| Planning was influenced or merely imprecise | Only if paired trials were run | Any conclusion about model quality from a single observation |
A single contained run demonstrates that one gate held for one request. Coverage claims require the measurements in the testing section, with their denominators stated.
Authorization Telemetry
Authorization telemetry is what makes the control investigable. The minimum is a record per decision that ties the proposal, the resolved context, the decision and the outcome together.
- 01Proposed action
The operation and parameters the model produced, stored as a proposal with its correlation and task identifier.
- 02Resolved context
Initiating principal, acting agent identity, tenant or workspace scope, delegation and task, each with its source.
- 03Target and parameters
The concrete resource, destination or audience and the parameter set, with sensitive values handled according to data policy.
- 04Decision
Allow or deny, the reason code, the policy or rule version, and the decision point that produced it.
- 05Approval
Whether a human approval applied, what it covered and who granted it.
- 06Execution
Whether the enforcement point executed, and what the downstream system returned.
Four states that must stay distinct
- Proposed: the model requested the action
- Authorized: the decision point allowed this exact request
- Executed: the enforcement point performed it
- Succeeded: the downstream system reported a completed effect
Collapsing these into a single event makes it impossible to tell a blocked attempt from a completed action, which is precisely the distinction an investigation needs.
Testing and Metrics
Each measure below is reported separately, with its denominator stated. There is no composite authorization score, because a single number hides which property failed.
| Measure | Numerator | Denominator |
|---|---|---|
| Authorization Decision Coverage | Consequential action requests evaluated by the policy point | Consequential action requests observed |
| Deny-on-Missing-Context Rate | Incomplete-context requests denied | Incomplete-context requests tested |
| Scope Violation Block Rate | Out-of-scope requests denied | Out-of-scope requests tested |
| Parameter Substitution Block Rate | Materially changed requests denied or re-authorized | Materially changed requests tested |
| Cross-Principal Isolation Rate | Unauthorized cross-principal requests denied | Cross-principal attempts tested |
| Delegation Non-Amplification Rate | Downstream grants within the upstream delegated scope | Downstream delegations tested |
| Downstream Revalidation Coverage | Actions revalidated by target enforcement | Actions requiring downstream enforcement |
| Authorization False-Deny Rate | Benign authorized tasks denied | Benign authorized tasks tested |
Revocation Enforcement Time is reported as an operational latency rather than a rate: the time between a withdrawal and the first enforcement point that stops accepting the withdrawn authority. Benign task utility is reported separately as well, and is never folded into a security figure, because a system that denies everything scores perfectly on every block rate.
To practice these properties in a controlled setting, the Agent Authorization lab is a deterministic simulation of exact-action authorization, principal and delegation binding, re-authorization after material parameter changes and per-hop non-amplification.
Incident Response and Common Mistakes
When an agent action goes wrong, the first job is to establish which of four different failures occurred, because the remediation differs entirely.
Preserve and classify
- Preserve the original user objective and the model-proposed action
- Preserve the resolved authorization context and the full decision trace
- Preserve the downstream request and response, including any denial reason
- Classify: influence only, policy decision failure, enforcement bypass, or downstream authorization gap
- Determine whether any effect executed, and whether it is reversible
- Record whether the deepest reached stage was proposal, authorization, execution or completed effect
Recurring mistakes
- Treating an authenticated internal caller as an authorized one
- Accepting an approval flag or permission claim from model output
- Authorizing a plan and executing different parameters
- Collapsing the initiating principal into the agent's standing identity
- Relying on an orchestrator check while the downstream credential remains broad
- Granting one token that several resources accept
- Logging only successful actions, so denials and proposals are invisible
Standards and guidance referenced
- OWASP
- Top 10 for Agentic Applications 2026, ASI03 Identity & Privilege Abuse (neighbouring risk framework), LLM01:2026 Prompt Injection (related attack class)
- IETF
- RFC 8707 Resource Indicators for OAuth 2.0 (resource and audience restriction)
- Microsoft
- Least privilege for AI agents with Microsoft Entra Agent ID (vendor guidance), Identity, Access, and Least Privilege (vendor guidance), Authorization in Microsoft Entra Agent ID (product-specific)
On source use: the Microsoft pages are vendor and product guidance and are labelled as such, with product-specific behaviour not generalized beyond that product. OWASP's Top 10 for Agentic Applications 2026 is used as a neighbouring risk framework for identity and privilege abuse, not as an authorization standard. RFC 8707 is used narrowly for explicit resource indication and audience restriction, with no implication that OAuth is required or sufficient. NIST SP 800-207 was considered and intentionally omitted, because its policy decision and enforcement terminology adds no claim this page needs beyond the generic architecture already described here. Related attack-side material is available in the attack library, including indirect prompt injection and persistent prompt injection.
Frequently Asked Questions
Is this just IAM for agents?
It builds on identity and access management but adds the agentic parts: two identities per action, model-proposed parameters, delegation across hops and re-authorization when execution-relevant facts change.
Can the model make the authorization decision if it is a strong model?
No. The point is not model quality, it is independence. A decision derived from the same content that may have been influenced is not an independent control.
Is an authenticated agent-to-agent call safe?
Authentication identifies the caller. The receiving component still has to evaluate the delegated scope and the initiating principal before performing a privileged action.
Does a broad approval like send email cover the message the agent composed?
It should not. Approval of intent is not authorization of parameters. The recipient, attachment and data source belong in the authorized request.
Is an orchestrator-side check enough?
Only for the orchestrator's own path. Where the target system is the real enforcement point, the request has to be authorized there too, with a credential scoped to that resource.
Does OAuth solve agent authorization?
No. Token mechanisms, including resource indicators from RFC 8707, help restrict audience and resource. They do not decide whether this principal may perform this action with these parameters.
What should happen when the initiating principal cannot be resolved?
Deny with a reason code. Completing missing security context from model-authored text turns an availability problem into an authorization bypass.
How does this differ from least privilege?
Least privilege determines how much authority exists at all. Authorization decides whether one concrete request may use it. Both are needed, and neither substitutes for the other.
Can an action be authorized and still blocked?
Yes, and that is correct behaviour. Information flow rules may deny sending particular data to a particular destination even when the operation itself is permitted.
What is the minimum useful telemetry?
One record per consequential action linking proposal, resolved context, decision with reason and policy version, approval if any, and execution result, keeping proposed, authorized, executed and succeeded distinct.
References
- Least privilege for AI agents with Microsoft Entra Agent IDMicrosoft Learn · GuidanceReviewed 2026-09-20
- Identity, Access, and Least PrivilegeMicrosoft Learn · GuidanceReviewed 2026-09-20
- Authorization in Microsoft Entra Agent IDMicrosoft Learn · Technical documentationReviewed 2026-09-20
- OWASP Top 10 for Agentic Applications 2026OWASP GenAI Security Project · GuidanceReviewed 2026-09-20
- RFC 8707 Resource Indicators for OAuth 2.0IETF · Standard · 2020-02Reviewed 2026-09-20
- LLM01:2026 Prompt InjectionOWASP GenAI Security Project · GuidanceReviewed 2026-09-20