Agentic Identity Controls
Mapping the OWASP Top 10 for Agentic Applications to identity architecture
The OWASP Top 10 for Agentic Applications (2026) catalogs ten categories of risk specific to autonomous AI agents — but not all ten point toward the same kind of fix. Six of them describe failures that are fundamentally about how agent identity, credentials, and authorization are architected. This guide works through those six, across five sections, and maps each to a specific control.
- Familiarity with OAuth2/OIDC-style token issuance and scoping
- An IAM, PAM, or NHI-focused platform capable of issuing short-lived, task-scoped credentials
- Agents that discover and call tools via the Model Context Protocol (MCP) or a comparable protocol
- A policy enforcement point — API gateway, sidecar proxy, or service mesh — positioned in front of privileged calls
- Access to (or budget for) an internal CA or managed PKI service for machine identity certificates
The other four categories — ASI02 (Tool Misuse & Exploitation), ASI05 (Unexpected Code Execution), ASI06 (Memory & Context Poisoning), and ASI08 (Cascading Failures) — are real risks, but their primary mitigations live in input validation, execution sandboxing, and systems engineering rather than identity architecture. They aren't covered here.
ASI01 → ASI03: From goal hijack to confused deputy
The most common agentic-identity failure starts with ASI01 (Agent Goal Hijack) and ends with ASI03 (Identity & Privilege Abuse) — two categories that are easiest to understand as a single attack chain rather than two independent risks.
An attacker doesn't need to compromise an agent's credentials directly. They only need the agent to read something — a support ticket, a document, a tool response — that contains hidden instructions. If the agent's goal-setting logic treats that content as part of its task, its objective has been hijacked. What happens next depends entirely on what the agent is authorized to do.
In many early agent deployments, the agent's service account inherits the same permissions as the human user who invoked it, often with a margin added because provisioning one broad role is simpler than provisioning per-task roles. When the hijacked goal calls for a privileged action — export a user table, modify an IAM policy, delete a resource — the agent executes it with its own valid, high-privilege credentials. The agent becomes a confused deputy: a legitimate identity, doing something illegitimate, because nothing in the credential itself encoded what the agent was supposed to be doing at that moment.
ticket content
carries token
Two controls close this gap, and they have to work together. Just-in-time (JIT) scoped tokens mean the agent's credential is valid only for the specific micro-task it's executing — a token issued for "summarize this ticket" simply doesn't include iam:* or export:users, regardless of what the agent's baseline role would otherwise allow. Dual-context token lineage means every privileged call carries two identities: the agent's, and the human's on whose behalf it's acting. If the human who submitted the ticket doesn't have permission to export the user table, the gateway blocks the call — even though the agent's own service account, in isolation, would have been allowed to make it.
Both are architecture patterns rather than shipping products, and turning them into runtime enforcement that survives real agent behavior is what the current wave of agent-access-control vendors is competing on. It is worth understanding how one early approach holds up against the confused-deputy case before standardizing on a single platform.
ASI04: Verifying MCP nodes in the agentic supply chain
ASI04 (Agentic Supply Chain Vulnerabilities) covers a different trust boundary: not what the agent is allowed to do, but who it's talking to while it does it.
Modern agents discover and call tools dynamically through protocols like the Model Context Protocol — the agent doesn't have a hardcoded list of approved endpoints; it asks an MCP server what tools are available and connects to whatever it's told. If that MCP server is compromised, spoofed, or simply an unvetted "shadow" node someone stood up for a side project, the agent will connect to it anyway — and hand over whatever session token or credentials it's currently holding.
The fix isn't about what the agent decides to trust. It's about removing the agent's ability to connect to anything that hasn't already proven its identity at the network layer, before any agent-level decision happens.
request
verification
This control operates independently of the JIT-scoping and dual-context checks from the previous section — an agent holding a perfectly scoped, perfectly authorized token can still leak that token to a malicious MCP node if nothing verifies the node's identity before the connection is established. Both controls are necessary; neither substitutes for the other.
Implementation steps
Before any agent receives a token, map the privileged actions in your environment — IAM changes, bulk data exports, destructive operations, financial transactions — and group them into permission sets that match actual agent workflows (ticket triage, code review, report generation). A token issued for one workflow should not carry permissions that belong to another, even if the same agent sometimes performs both.
Integrate your IAM, PAM, or NHI platform so that every agent task triggers issuance of a token scoped to that task's permission set, with an expiry measured in minutes rather than hours. The token should not outlive the task that requested it.
Configure the gateway or proxy in front of privileged calls to require two identity tokens on every request: the agent's, and the originating human's. If either token lacks the requested permission, deny the request — regardless of what the other token would allow on its own.
Before any agent connects to a tool server, that server needs a certificate issued by your internal CA or a managed PKI service — distinct from any credential the agent itself holds. Certificates should be scoped to specific nodes and rotated on a defined schedule.
Configure the gateway or proxy sitting between agents and MCP servers to require a mutual TLS handshake, validating the presented certificate against your CA before any MCP protocol traffic — tool discovery or tool calls — is allowed to proceed.
Decide in advance what happens when a node's certificate can't be validated — an expired CA chain, a network partition to the validation service. The safe default is to refuse the connection, not to fall back to an unverified path. See "Where this breaks" below for why this matters in practice.
ASI07: Insecure inter-agent communication
Once an organization has more than one agent, those agents start talking to each other — one agent's output becomes another's input, often with no human in the loop at all. ASI07 covers what happens when those messages aren't authenticated: a compromised or spoofed agent can inject messages into the chain, and a receiving agent has no way to tell a legitimate peer from an impostor.
This is structurally the same problem ASI04 solves for agent-to-tool connections, applied to agent-to-agent connections: the receiving agent needs to verify who sent a message before acting on it, independent of what the message claims about itself.
Issue each agent its own cryptographic identity — a certificate or signed key pair from your machine identity platform — and require every inter-agent message to be signed. Receiving agents validate the signature against the sender's registered identity before processing the message, not against a shared secret or a static allowlist, which doesn't survive an agent being compromised or decommissioned. Pair this with schema validation: a signed message in an unexpected format is still rejected, since signature validity proves identity, not intent.
ASI09: Human-agent trust exploitation
ASI09 doesn't target an agent's credentials at all — it targets the human's trust in the agent's output. An agent that's been compromised, or whose goal has been subtly redirected, doesn't need to break any access control if it can simply persuade a human with the right permissions to take the action for it: approve this vendor payment, grant this service account admin access, disable this alert because it's a false positive.
This is an identity problem rather than a pure UX problem because the exploit works precisely when neither identity is doing anything wrong — the human really does have permission to approve the payment, and the agent really is the agent it claims to be. What's missing is a check on the action itself, not on either party's identity.
Tie authorization requirements to the risk tier of the action, not to the identity requesting it. High-impact actions — anything touching payments, access grants, or production configuration — require a fresh, specific human consent event that the agent cannot pre-fill, batch, or fast-track: a step-up authentication challenge, an approval channel separate from the one the agent's recommendation arrived on, or a cooling-off period before execution. The goal is to ensure the human is approving the action itself, not rubber-stamping the agent's framing of it.
ASI10: Rogue agents
ASI10 covers agents that operate outside their intended policy — through compromise, through gradual drift as their context or fine-tuning changes, or through deliberate misalignment. What makes this an identity problem rather than purely a monitoring problem is the response: once a rogue agent is identified, how quickly can its access actually be cut off?
In many organizations, an agent's identity is provisioned once during initial setup and then left alone — the same pattern that created the orphaned-credential problem for human accounts, but recurring at the speed and scale of machine identities. An agent flagged as compromised but whose credentials remain valid for hours while a ticket works through an access-revocation queue has not, for practical purposes, been contained.
Treat agent identity as something with an active lifecycle, not a one-time provisioning event. Behavioral baselining — what tools an agent normally calls, at what volume, against what data — gives you a signal when an agent starts deviating from its registered purpose. Pair that signal with a revocation path that lives at the identity-provider level: a single action that invalidates every outstanding token for that agent identity immediately, rather than a request to disable an account that only takes effect on the next credential refresh.
Where this breaks
This guide covers the architectural controls. The compliance landscape page covers why these controls increasingly determine cyber insurance eligibility and audit outcomes, and the audit and compliance mapping guide goes framework-by-framework on what auditors and underwriters actually look for. For vendors building toward dual-context token issuance, mTLS node verification, and agent identity lifecycle management, see the vendor index.