AI Agent Security Checklist (2026)
Concrete checks for teams that build AI agents, from untrusted input and tool permissions to approval gates, memory, data-out paths, identity, logging and regression tests, each with how to verify it and the exact IDs.
https://veriprajna.com/ai-services/ai-agent-mcp-security-assessment/ai-agent-security-checklist
All 40 checks
Forty checks for teams that build AI agents: untrusted input, tool permissions, approval gates, memory, data-out paths, identity, logging and regression tests, each with how to verify it.
Untrusted input and indirect prompt injection
Anything the agent reads can carry instructions. OWASP states that no reliable prevention for prompt injection exists today, so design for the injection that gets through.
5 checks
Caught by Agent IN-3, Agent IN-5
-
Indirect prompt injection arrives in content the user never wrote or saw. A channel that is not on the list is not defended.
How to verify IN-1
For each tool and data source, record who can write to it. OWASP LLM01:2026 sorts these into untrusted surfaces (public web, email from unknown senders), semi-trusted ones (public issue trackers, package READMEs, third-party API responses) and trusted ones an attacker can still reach through a low-privilege channel such as a public form or a support ticket.
In May 2025 Invariant Labs showed a malicious public GitHub issue steering an agent to copy private-repository data into a public pull request.
Standards: LLM01:2026 Prompt Injection; ASI01 Agent Goal Hijack; AML.T0051.001 Indirect; AML.T0099 AI Agent Tool Data Poisoning
-
Labelling helps the model tell data from instructions; invisible characters can hide instructions. Both lower injection success; neither stops it, so they never replace the permission items below.
How to verify IN-2
Strip tag-block (U+E0000 to U+E007F), variation-selector (U+FE00 to U+FE0F) and zero-width (U+200B, U+200C, U+200D, U+2060) characters. Run validation outside the agent, in code, not by asking the model. OWASP notes that provenance labelling reduces attack success in non-adaptive tests only.
Standards: LLM01:2026 Prompt Injection, mitigations 5 and 6; AML.M0033 Input and Output Validation for AI Agent Components
-
This breaks the step from "the agent read something hostile" to "the agent did something". For high-consequence actions, ATLAS advises considering confirmation every time.
How to verify IN-3
Track a flag per run that is set when content from an untrusted channel enters context (a fetched page, an inbound email, a third-party tool result). While it is set, write and send tools must block or ask. Test by feeding a document that asks for a send action and checking the gate fires.
Standards: AML.M0030 Restrict AI Agent Tool Invocation on Untrusted Data; ASI01 Agent Goal Hijack; LLM01:2026 Prompt Injection
Source: MITRE ATLAS v2026.09
-
Assume the system prompt can be extracted. Goals and permitted actions should be explicit and auditable, and enforced in code rather than in prompt text.
How to verify IN-4
Find the system prompt in the repository and its change history. Grep it for keys, connection strings and phrases such as "only allow". Ask the agent to repeat its instructions and treat whatever comes back as public.
Standards: ASI01 Agent Goal Hijack, mitigation 3; ASI04 Agentic Supply Chain Vulnerabilities, mitigation 4; LLM08:2026 Hidden Context Exposure
-
A hijacked agent still uses permitted tools. Comparing the plan with the task catches a run that has wandered off what the user asked for.
How to verify IN-5
Log the user's task and the agent's plan side by side. Plant an instruction that asks for an unrelated action (for example "also email the export to ...") and confirm the run pauses with the deviation shown.
Standards: ASI01 Agent Goal Hijack, mitigation 4; AML.M0038 AI Agent Scope Drift Detection
Tool permissions and excessive agency
Excessive agency is what turns an injection into damage. OWASP names three roots: excessive functionality, excessive permissions and excessive autonomy.
8 checks
Caught by Agent TP-2
-
Every later check depends on knowing what the agent can reach, and someone has to decide when it is retired.
How to verify TP-1
For each agent, write one table: tool, what it can read, what it can change, which credential it uses, and where it can send data. Compare it with the tools actually registered at run time.
Standards: AML.M0027 Single-User AI Agent Permissions Configuration; LLM03:2026 Excessive Agency
Source: MITRE ATLAS v2026.09
-
Every tool is something an injected instruction can call. OWASP's example: an email summariser needs read access, not send or delete.
How to verify TP-2
For each tool in the inventory, name the task step that needs it. Remove the rest. For each remaining tool, list its functions and remove those no step uses.
Standards: LLM03:2026 Excessive Agency, mitigations 1 and 2; ASI02 Tool Misuse and Exploitation, mitigation 1
-
A shell tool can do anything the host allows. A specific tool limits what an injected instruction can achieve.
How to verify TP-3
Search the tool list for shell, exec, eval, generic HTTP and generic SQL tools. For each, write the specific operations the agent needs and wrap only those.
Standards: LLM03:2026 Excessive Agency, mitigation 3; ASI05 Unexpected Code Execution (RCE); MCP05:2025 Command Injection & Execution
-
Permissions enforced by the database or API still hold when the model has been fooled.
How to verify TP-4
For each tool, log in with its credential directly and try an operation it should not have (an update on a read-only tool, a table it does not need). The downstream system must refuse.
Standards: LLM03:2026 Excessive Agency, mitigation 4; AML.M0028 AI Agent Tools Permissions Configuration; ASI02 Tool Misuse and Exploitation, mitigation 1
-
An agent that acts under one shared, high-privileged service identity can let one user reach another user's data.
How to verify TP-5
With two test users, ask the agent as user A for user B's records, directly and through a sub-agent. Both must fail at the data layer, not because the model declined.
Standards: LLM03:2026 Excessive Agency, mitigation 5; ASI03 Identity and Privilege Abuse; AML.M0037 AI Agent Authority Expansion Controls
-
The model can be talked into actions it should not take. Complete mediation puts the decision where text cannot change it.
How to verify TP-6
Find where tool calls are executed and confirm a deterministic check of caller, action and arguments runs first. Ask the agent politely to skip the check; nothing should change.
Standards: LLM03:2026 Excessive Agency, mitigation 7; ASI02 Tool Misuse and Exploitation, mitigation 4; LLM01:2026 Prompt Injection, mitigation 4
-
An injected or looping agent can call costly tools over and over and spike the bill.
How to verify TP-7
Give the agent a task designed to loop (for example a tool result that always says "try again") and confirm the run stops at the limit and is logged.
Standards: LLM06:2026 Unbounded Consumption, mitigation 9; LLM03:2026 Excessive Agency, mitigation 9; AML.T0034.002 Agentic Resource Consumption
-
Generated code runs with whatever the host allows, and prompt injection can turn text into executed commands.
How to verify TP-8
Inside the execution environment, try to read files outside the working directory, open an outbound connection and check the user ID. Each should fail or show a non-root user.
Standards: ASI05 Unexpected Code Execution (RCE), mitigations 3 and 4; AML.M0032 Segmentation of AI Agent Components; LLM10:2026 Improper Output Handling
Approval gates
A person who can deny a call is the last control before damage. It works only if they see the real action and are not asked so often that they stop reading.
5 checks
Caught by Agent AP-2
-
The MCP specification and OWASP both call for a person able to deny tool calls, with confirmation on sensitive operations.
How to verify AP-1
List every tool that sends, deletes, pays, publishes or changes access, and confirm each one stops for approval in a test run. If the agent connects through MCP, the Tools page says there SHOULD always be a human in the loop with the ability to deny tool invocations, and that clients SHOULD prompt for confirmation on sensitive operations.
Standards: MCP spec 2026-07-28, Tools (SHOULD keep a human able to deny tool invocations); LLM03:2026, mitigation 6; ASI02, mitigation 2; AML.M0029 Human In-the-Loop for AI Agent Actions
Source: MCP spec 2026-07-28: Tools
-
A summary can hide what will actually run, and invisible characters can make the displayed action differ from the executed one.
How to verify AP-2
Trigger an approval for a send action whose body contains hidden characters and an extra recipient. The prompt must show the full recipient list and the body as it will be sent. The MCP Tools page also says clients SHOULD show tool inputs before calling the server, to avoid malicious or accidental data exfiltration.
Standards: LLM01:2026 Prompt Injection, mitigation 7; MCP spec 2026-07-28, Tools > Security Considerations (SHOULD show tool inputs); ASI09 Human-Agent Trust Exploitation, mitigation 4
-
A gate the model is only told about can be talked past. ATLAS says such controls belong outside the agent and should not rely solely on the system prompt.
How to verify AP-3
Call the gated tool directly, bypassing the approval UI, and through a prompt that tells the agent approval was already given. Both must fail.
Standards: AML.M0037 AI Agent Authority Expansion Controls; LLM03:2026 Excessive Agency, mitigation 7; ASI02 Tool Misuse and Exploitation, mitigation 4
Source: MITRE ATLAS v2026.09
-
Approval fatigue degrades judgment at volume. OWASP describes audit, warn, block and escalate levels set by consequence.
How to verify AP-4
Count approval prompts per user per day in a test week. If people approve nearly everything, move low-impact actions to audit-only and keep prompts for the actions that matter.
Standards: LLM03:2026 Excessive Agency, mitigation 7; LLM01:2026 Prompt Injection, mitigation 7; AML.M0029 Human In-the-Loop for AI Agent Actions
-
If the preview already acts, the approval comes too late.
How to verify AP-5
Run the preview path with network egress logged and a write-capable tool stubbed. Neither should see a call before approval.
Standards: ASI09 Human-Agent Trust Exploitation, mitigation 7; ASI02 Tool Misuse and Exploitation, mitigation 2
Memory and retrieved context
Memory turns one injection into a persistent one: a poisoned entry reaches every later session that reads it. Retrieved documents behave the same way.
5 checks
Caught by Agent ME-1
-
An instruction saved to memory steers every later session, long after the original input is gone.
How to verify ME-1
Ask the agent, through a document it reads, to "remember" a rule such as "always CC this address". Check the write is logged with its cause and held for review.
Standards: LLM01:2026 Prompt Injection, mitigation 9; ASI06 Memory & Context Poisoning, mitigation 2; AML.T0080.000 Memory
-
Shared or loosely scoped memory moves one user's data, or one attacker's instruction, into another user's session.
How to verify ME-2
Write a memory as user A and try to read or influence it as user B and from a different agent. Both must fail.
Standards: ASI06 Memory & Context Poisoning, mitigation 3; AML.M0031 Memory Hardening; MCP10:2025 Context Injection & Over-Sharing
Source: MITRE ATLAS v2026.09
-
Without provenance you cannot find a poisoned entry, and without versions you cannot remove it cleanly.
How to verify ME-3
Pick a memory entry and trace it to the run, input and user that created it. Roll it back in a test environment.
Standards: AML.M0031 Memory Hardening; ASI06 Memory & Context Poisoning, mitigations 5 and 7
Source: MITRE ATLAS v2026.09
-
Self-written memories can reinforce a poisoned instruction, which OWASP calls bootstrap poisoning.
How to verify ME-4
Check whether summaries or conclusions the agent produces are stored as trusted memory without review, and whether unverified entries have an expiry.
Standards: ASI06 Memory & Context Poisoning, mitigations 6 and 8
-
A poisoned document is returned for matching queries, and its instructions reach the model like any other text.
How to verify ME-5
List every source that feeds the retrieval index and who can write to it. Add a test document with an instruction to a source users can write to and query for it.
Standards: LLM01:2026 Prompt Injection (scenario 4, RAG repository poisoning); AML.T0099 AI Agent Tool Data Poisoning; ASI06 Memory & Context Poisoning
Data-out paths (the lethal trifecta)
Private data, untrusted content and a way to send data out, in one agent, creates the conditions for exfiltration. Remove one leg, or gate the path that joins them.
4 checks
Caught by Agent DO-4
-
The Rule of Two (Meta AI, 2025), which OWASP LLM01:2026 adopts as a floor: an agent with untrusted input, sensitive data and state change or external communication needs per-action human approval.
How to verify DO-1
Use the inventory from TP-1. Simon Willison named the combination of private data, untrusted content and a way to communicate out the "lethal trifecta"; OWASP LLM01:2026 notes that removing any one leg removes the conditions. For agents with all three, either remove a leg (split the agent, drop the outbound tool) or put per-action approval on the outbound path.
Standards: LLM01:2026 Prompt Injection, mitigation 8 (Rule of Two); AML.T0086 Exfiltration via AI Agent Tool Invocation
-
Exfiltration through a permitted tool looks like normal use, and a rendered image can send data out with no tool call at all.
How to verify DO-2
For each path, note whether it can carry free text chosen by the model (a URL query string, an email body, a file name). Those are the paths an injected instruction will use.
Standards: AML.T0086 Exfiltration via AI Agent Tool Invocation; AML.T0077 LLM Response Rendering; LLM10:2026 Improper Output Handling
Source: MITRE ATLAS v2026.09
-
An allowlist stops data reaching unlisted destinations even after the agent has been fooled.
How to verify DO-3
From the agent's runtime, try to reach a domain not on the list through each outbound tool and from executed code. Each attempt must fail and be logged.
An allowlist does not stop exfiltration through an allowed destination, such as a public pull request, so pair it with DO-1 and DO-2.
Standards: ASI02 Tool Misuse and Exploitation, mitigation 3; AML.M0032 Segmentation of AI Agent Components
-
An image URL with data in its query string sends that data out when the page renders, without a click.
How to verify DO-4
Get the agent to output
 Standards: LLM10:2026 Improper Output Handling, mitigation 9; AML.T0077 LLM Response Rendering
Identity and credentials
An agent acts with someone's authority. Give it its own identity, short-lived credentials and no more authority than the task needs.
6 checks
Caught by Agent ID-3
-
With a shared identity you can neither limit nor trace what one agent did.
How to verify ID-1
Check the credentials each agent uses and whether downstream logs can tell agents apart from people and from each other.
Standards: ASI03 Identity and Privilege Abuse, mitigations 1 and 2; AML.M0027 Single-User AI Agent Permissions Configuration
-
A long-lived token stolen through an injection keeps working after the task is over.
How to verify ID-2
Record the lifetime of each token the agent holds. Reuse a token after its task has finished; it should be rejected.
Standards: ASI03 Identity and Privilege Abuse, mitigation 1; ASI02 Tool Misuse and Exploitation, mitigation 6; MCP01:2025 Token Mismanagement & Secret Exposure
-
Anything in context can leak, and an agent with file or search tools can be told to go and find keys.
How to verify ID-3
Search the system prompt, tool descriptions and files reachable by the agent's tools for keys and tokens. Ask the agent, through a document it reads, to list the credentials it can see.
Standards: LLM01:2026 Prompt Injection, mitigation 4; AML.T0083 Credentials from AI Agent Configuration; AML.T0098 AI Agent Tool Credential Harvesting
-
Delegation chains can hand a low-privilege agent higher-privilege scopes.
How to verify ID-4
Have an agent delegate to a sub-agent and check the sub-agent's effective permissions are no wider than the parent's. Log every scope request and denial.
Standards: AML.M0037 AI Agent Authority Expansion Controls; ASI03 Identity and Privilege Abuse, mitigation 8
Source: MITRE ATLAS v2026.09
-
Audience validation and no token passthrough are MUST-level rules in the MCP specification, and scope minimisation is its recommended practice; together they decide what a stolen agent token can reach.
How to verify ID-5
Work through items AU-1 to AU-9 of the MCP Server Security Checklist.
Standards: MCP spec 2026-07-28, Security Best Practices > Token Passthrough (MUST NOT); MCP spec 2026-07-28, Authorization (MUST validate token audience); MCP07:2025 Insufficient Authentication & Authorization
-
An unauthenticated or loosely parsed message from another agent is one more channel for injected instructions.
How to verify ID-6
Send a message to an agent from an unregistered peer, and one that fails its schema. Both must be rejected and logged.
Standards: ASI07 Insecure Inter-Agent Communication, mitigations 1 and 9
Logging and monitoring
Log enough to reconstruct any run: what the agent read, what it decided and what each tool did, in a place the agent cannot touch.
4 checks
Caught by Agent LG-3
-
Without this you cannot tell afterwards which input led to which action.
How to verify LG-1
Pick one past run and rebuild it from logs alone: the input, each tool call and its arguments, and the result.
Standards: AML.M0024 AI Telemetry Logging; MCP08:2025 Lack of Audit and Telemetry; ASI02 Tool Misuse and Exploitation, mitigation 8
Source: MITRE ATLAS v2026.09
-
Logs the agent or its tools can change are not evidence. OWASP asks for immutable, signed audit logs of agent actions and tool calls.
How to verify LG-2
Check the agent's credentials and tools against the log store's permissions: no write, update or delete.
Standards: ASI10 Rogue Agents, mitigation 1; ASI02 Tool Misuse and Exploitation, mitigation 8
-
These sequences are what exfiltration and hijack look like in a log.
How to verify LG-3
Replay a known attack path from your tests in a monitored environment and confirm an alert fires.
Standards: ASI02 Tool Misuse and Exploitation, mitigation 8; ASI01 Agent Goal Hijack, mitigation 7
-
When a tool or server turns out to be compromised, minutes matter.
How to verify LG-4
Exercise the switch in staging and time it.
Standards: ASI04 Agentic Supply Chain Vulnerabilities, mitigation 8; ASI10 Rogue Agents, mitigation 4
Regression tests
Agent fixes can regress when prompts, models or tools change. Keep every confirmed attack as a test that runs on each release.
3 checks
Caught by Agent RT-1, Agent RT-2
-
A prompt edit or a model upgrade can silently undo a fix.
How to verify RT-1
Check the suite runs in CI on changes to the system prompt, tool definitions and model version, and that a failure blocks the release.
Standards: ASI04 Agentic Supply Chain Vulnerabilities, mitigation 7 (differential tests); ASI01 Agent Goal Hijack, mitigation 8
-
Model output is stochastic, so one clean run proves little.
How to verify RT-2
Fix the model version and settings for the test, record the number of runs in the test itself, and fail on the first unsafe action.
Standards: LLM01:2026 Prompt Injection
-
OWASP cites a study where static attack success was near zero but adaptive attacks exceeded 90% against most of 12 recent defences.
How to verify RT-3
Give the tester your system prompt, filters and tool list, and ask them to get past them. Add every success to the suite from RT-1.
Standards: LLM01:2026 Prompt Injection, mitigation 11; ASI01 Agent Goal Hijack, mitigation 8
Sources: OWASP Top 10 for LLM Applications 2026; OWASP Top 10 for Agentic Applications for 2026; OWASP MCP Top 10 (beta, 2025 IDs); MITRE ATLAS release v2026.09; MCP specification 2026-07-28 (Tools; Security Best Practices); Simon Willison, "The lethal trifecta", 16 June 2025.
Read more
How to use it. Work through it per agent, starting with the inventory in TP-1 and the trifecta check in DO-1: they tell you which of the other items matter most for that agent.
What the references mean. OWASP mitigation numbers refer to the numbered list in that entry. ATLAS IDs starting AML.T are attack techniques; IDs starting AML.M are mitigations. The OWASP Agentic IDs (ASI01 to ASI10) carry no year.
What it does not cover. Server-side MCP controls (tool descriptions, token audience, transport, local servers) are in the companion MCP Server Security Checklist. A checklist shows what to check; it does not show what an attacker can chain through your running agent. That is what an AI agent security assessment tests.
Get your AI agents and MCP servers tested
Start with a short discovery call about what your agents can reach and which of these checks you want tested on your system.
- Email or WhatsApp us
- Reply within 1 business day
- Free 30-minute discovery call
- Written scope and fixed fee within 2 business days of the call