OWASP Top 10 for Agentic Applications:2026
A guide to the ten risk categories in the OWASP Top 10 for Agentic Applications:2026 framework, addressing autonomous AI decision-making, tool execution, identity boundaries, and multi-agent systems.
Edition 2026. Risk names follow the official OWASP publication.
ASI01:2026
Agent Goal Hijack
Agent Goal Hijack occurs when an attacker embeds prompt exploits in external data or RAG context to steer an autonomous agent away from its original user objective toward malicious tasks.
| What can go wrong | Untrusted prompt inputs or RAG context manipulate the agent's objective and decision logic, causing it to abandon original instructions and pursue malicious goals. |
|---|---|
| Business effect | An agent can be coerced into revealing secrets, approving unauthorized transactions, or corrupting critical system data. |
| First control to verify | Enforce goal-scoping and authorization bounds at the application layer. |

Isolate external untrusted data from system prompt instructions. Require human approval for high-risk goal transitions.
- Attack entry — A document or tool result hides instructions that redirect the task.
- Trust boundary failure — Untrusted prompt inputs or RAG context manipulate the agent's objective and decision logic, causing it to abandon original instructions and pursue malicious goals.
- Impact — An agent can be coerced into revealing secrets, approving unauthorized transactions, or corrupting critical system data.
- Risk reduction — Enforce goal-scoping and authorization bounds at the application layer.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
An agent can be coerced into revealing secrets, approving unauthorized transactions, or corrupting critical system data.
Risk-reduction focus
- Enforce goal-scoping and authorization bounds at the application layer.
- Isolate external untrusted data from system prompt instructions.
- Require human approval for high-risk goal transitions.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI02:2026
Tool Misuse and Exploitation
Tool Misuse and Exploitation happens when an agent invokes connected tools or APIs with unvalidated parameters, enabling an attacker to trigger harmful actions like data deletion or internal API calls.
| What can go wrong | An agent is tricked into calling integrated tools, database APIs, or external services with unvalidated parameters. |
|---|---|
| Business effect | Attackers leverage the agent's tool access to manipulate internal databases or exfiltrate confidential records. |
| First control to verify | Enforce strict parameter schemas and reject unexpected inputs. |

Apply least privilege access to tools used by agents. Audit and log all tool executions.
- Attack entry — A request induces an agent to call a tool with unsafe parameters.
- Trust boundary failure — An agent is tricked into calling integrated tools, database APIs, or external services with unvalidated parameters.
- Impact — Attackers leverage the agent's tool access to manipulate internal databases or exfiltrate confidential records.
- Risk reduction — Enforce strict parameter schemas and reject unexpected inputs.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
Attackers leverage the agent's tool access to manipulate internal databases or exfiltrate confidential records.
Risk-reduction focus
- Enforce strict parameter schemas and reject unexpected inputs.
- Apply least privilege access to tools used by agents.
- Audit and log all tool executions.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI03:2026
Identity and Privilege Abuse
Identity and Privilege Abuse occurs when an agent operates with excessive privileges or shared accounts, enabling unprivileged users to execute admin actions or cross tenant boundaries via the agent's identity.
| What can go wrong | An agent runs with overprivileged credentials or shared service accounts, letting normal users trigger elevated actions through the agent. |
|---|---|
| Business effect | Attackers achieve privilege escalation or breach multi-tenant user boundaries through the agent's identity. |
| First control to verify | Delegate user context explicitly to the agent. |

Prohibit shared admin or root service accounts. Revoke transient agent tokens upon task completion.
- Attack entry — A low-privilege request is executed under a powerful agent identity.
- Trust boundary failure — An agent runs with overprivileged credentials or shared service accounts, letting normal users trigger elevated actions through the agent.
- Impact — Attackers achieve privilege escalation or breach multi-tenant user boundaries through the agent's identity.
- Risk reduction — Delegate user context explicitly to the agent.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
Attackers achieve privilege escalation or breach multi-tenant user boundaries through the agent's identity.
Risk-reduction focus
- Delegate user context explicitly to the agent.
- Prohibit shared admin or root service accounts.
- Revoke transient agent tokens upon task completion.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI04:2026
Agentic Supply Chain Vulnerabilities
At runtime, the agent loads a tampered plugin, model, agent card, or MCP/A2A artifact. Dynamic third-party components activate without verified provenance, integrity, or attestation.
| What can go wrong | Dynamic third-party components activate without verified provenance, integrity, or attestation. |
|---|---|
| Business effect | Untrusted components can inject instructions, exfiltrate data, or spread compromise. |
| First control to verify | Allowlist and pin runtime dependencies to reviewed versions. |

Allowlist and pin runtime dependencies; verify signatures and attestations before activation.
- Attack entry — At runtime, the agent loads a tampered plugin, model, agent card, or MCP/A2A artifact.
- Trust boundary failure — Dynamic third-party components activate without verified provenance, integrity, or attestation.
- Impact — Untrusted components can inject instructions, exfiltrate data, or spread compromise.
- Risk reduction — Allowlist and pin runtime dependencies; verify signatures and attestations before activation.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
Untrusted components can inject instructions, exfiltrate data, or spread compromise.
Risk-reduction focus
- Allowlist and pin runtime dependencies to reviewed versions.
- Verify provenance, signatures, and attestations before activation.
- Monitor runtime integrity and revoke compromised tools or agent connections.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI05:2026
Unexpected Code Execution
Unexpected Code Execution occurs when an agent generates and executes dynamic code directly on host systems without sandbox isolation, allowing attackers to achieve remote code execution.
| What can go wrong | An agent generates and executes Python scripts, shell commands, or queries directly on the host server without isolation. |
|---|---|
| Business effect | An attacker achieves remote code execution (RCE) and gains full control over the underlying infrastructure. |
| First control to verify | Execute agent-generated code inside network-isolated sandboxes. |

Enforce strict resource and runtime limits. Validate and inspect system commands prior to execution.
- Attack entry — External content induces generation and execution of untrusted code.
- Trust boundary failure — An agent generates and executes Python scripts, shell commands, or queries directly on the host server without isolation.
- Impact — Untrusted code runs with process privileges and can compromise data or systems.
- Risk reduction — Execute agent-generated code inside network-isolated sandboxes.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
An attacker achieves remote code execution (RCE) and gains full control over the underlying infrastructure.
Risk-reduction focus
- Execute agent-generated code inside network-isolated sandboxes.
- Enforce strict resource and runtime limits.
- Validate and inspect system commands prior to execution.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI06:2026
Memory & Context Poisoning
Memory and Context Poisoning happens when malicious data is written into an agent's long-term memory or vector store, corrupting its future reasoning and decision-making capabilities.
| What can go wrong | False data or embedded exploits corrupt an agent's short-term memory, vector stores, or long-term knowledge base. |
|---|---|
| Business effect | The agent produces biased decisions, outputs false guidance, or executes latent malicious instructions. |
| First control to verify | Validate data integrity and permissions before storing in memory. |

Isolate memory stores between different tenants. Periodically audit memory quality and purge stale context.
- Attack entry — False information is persisted in memory or a knowledge store.
- Trust boundary failure — False data or embedded exploits corrupt an agent's short-term memory, vector stores, or long-term knowledge base.
- Impact — The agent produces biased decisions, outputs false guidance, or executes latent malicious instructions.
- Risk reduction — Validate data integrity and permissions before storing in memory.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
The agent produces biased decisions, outputs false guidance, or executes latent malicious instructions.
Risk-reduction focus
- Validate data integrity and permissions before storing in memory.
- Isolate memory stores between different tenants.
- Periodically audit memory quality and purge stale context.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI07:2026
Insecure Inter-Agent Communication
Insecure Inter-Agent Communication occurs when messages exchanged across a multi-agent network lack mutual authentication or encryption, allowing adversaries to spoof agents or tamper with commands.
| What can go wrong | Exchanges between agents in a multi-agent network lack mutual authentication, encryption, or message integrity checks. |
|---|---|
| Business effect | An attacker impersonates peer agents, tampers with inter-agent messages, or injects malicious requests into the network. |
| First control to verify | Encrypt transport with mTLS or TLS and verify signed messages and sender identity. |

Enforce message schemas between agents. Verify agent identity before processing commands.
- Attack entry — A peer-agent message is forged or altered in transit.
- Trust boundary failure — Exchanges between agents in a multi-agent network lack mutual authentication, encryption, or message integrity checks.
- Impact — An attacker impersonates peer agents, tampers with inter-agent messages, or injects malicious requests into the network.
- Risk reduction — Encrypt transport with mTLS or TLS and verify signed messages and sender identity.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
An attacker impersonates peer agents, tampers with inter-agent messages, or injects malicious requests into the network.
Risk-reduction focus
- Encrypt transport with mTLS or TLS and verify signed messages and sender identity.
- Enforce message schemas between agents.
- Verify agent identity before processing commands.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI08:2026
Cascading Failures
A planner, tool, memory store, or peer agent emits a faulty or poisoned signal. Delegation, retries, and feedback loops propagate it without effective failure isolation.
| What can go wrong | Delegation, retries, and feedback loops propagate it without effective failure isolation. |
|---|---|
| Business effect | The fault spreads across agents or workflows, causing outages, data corruption, resource exhaustion, or unsafe privileged actions. |
| First control to verify | Isolate failure domains with scoped access and least privilege. |

Isolate failure domains; enforce downstream validation, circuit breakers, and fan-out limits.
- Attack entry — A planner, tool, memory store, or peer agent emits a faulty or poisoned signal.
- Trust boundary failure — Delegation, retries, and feedback loops propagate it without effective failure isolation.
- Impact — The fault spreads across agents or workflows, causing outages, data corruption, resource exhaustion, or unsafe privileged actions.
- Risk reduction — Isolate failure domains; enforce downstream validation, circuit breakers, and fan-out limits.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
The fault spreads across agents or workflows, causing outages, data corruption, resource exhaustion, or unsafe privileged actions.
Risk-reduction focus
- Isolate failure domains with scoped access and least privilege.
- Validate outputs and high-impact actions before propagating them downstream.
- Use circuit breakers, quotas, and fan-out limits to contain amplification.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI09:2026
Human-Agent Trust Exploitation
Human-Agent Trust Exploitation leverages the anthropomorphic and persuasive nature of AI agents to deceive human operators into approving harmful actions or revealing credentials.
| What can go wrong | An adversary uses an agent's persuasive, human-like interaction to trick users into executing harmful actions. |
|---|---|
| Business effect | Users unsuspectingly disclose credentials, authorize wire transfers, or execute untrusted files. |
| First control to verify | Display clear indicators when interacting with AI agents. |

Require out-of-band verification for critical transactions. Train users on social engineering risks involving agents.
- Attack entry — A persuasive recommendation induces a person to approve a risky action.
- Trust boundary failure — An adversary uses an agent's persuasive, human-like interaction to trick users into executing harmful actions.
- Impact — Users unsuspectingly disclose credentials, authorize wire transfers, or execute untrusted files.
- Risk reduction — Display clear indicators when interacting with AI agents.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
Users unsuspectingly disclose credentials, authorize wire transfers, or execute untrusted files.
Risk-reduction focus
- Display clear indicators when interacting with AI agents.
- Require out-of-band verification for critical transactions.
- Train users on social engineering risks involving agents.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }ASI10:2026
Rogue Agents
A compromised or misaligned agent pursues an undeclared goal while individual actions appear legitimate. Behavioral-integrity and governance controls fail to detect or contain sustained deviation from declared function and scope.
| What can go wrong | Behavioral-integrity and governance controls fail to detect or contain sustained deviation from declared function and scope. |
|---|---|
| Business effect | The agent can disclose data, spread misinformation, hijack workflows, sabotage operations, collude, or self-replicate. |
| First control to verify | Attest each agent identity and its declared tools, goals, and behavior. |

Attest identity and declared behavior; monitor deviations and enable rapid quarantine, credential revocation, and kill switches.
- Attack entry — A compromised or misaligned agent pursues an undeclared goal while individual actions appear legitimate.
- Trust boundary failure — Behavioral-integrity and governance controls fail to detect or contain sustained deviation from declared function and scope.
- Impact — The agent can disclose data, spread misinformation, hijack workflows, sabotage operations, collude, or self-replicate.
- Risk reduction — Attest identity and declared behavior; monitor deviations and enable rapid quarantine, credential revocation, and kill switches.
The diagram contrasts the unsafe route with the control that interrupts it. Select the image to inspect it at full size.
Why it matters
The agent can disclose data, spread misinformation, hijack workflows, sabotage operations, collude, or self-replicate.
Risk-reduction focus
- Attest each agent identity and its declared tools, goals, and behavior.
- Continuously monitor deviations from behavioral and governance baselines.
- Provide rapid quarantine, credential revocation, and kill switches.
Go code example for a web application using Fiber v3
// Vulnerable pattern: trust request-controlled target
app.Get("/records/:id", func(c fiber.Ctx) error {
return c.JSON(repo.Find(c.Params("id")))
})
// Fixed pattern: authorize server-side
if !policy.CanRead(c.Locals("principal"), id) { return fiber.ErrForbidden }Compliance Readiness Self-Assessment
Select items your organization has completed to evaluate your readiness score.