Back to blog
checklistproductionOWASP LLM06AI agents

AI agent security checklist before production

Published on 2026-10-306 min read
In short: Before putting an AI agent into production, check 20 points across five families: scope and permissions, untrusted inputs, outputs and exfiltration, human approval, observability. The controls that matter apply outside the model, in code and access rights, because the prompt guarantees nothing.

Why a checklist specific to AI agents?

Because an agent is not a chatbot: it calls tools, reads data and acts without you approving each step. The risk changes nature, since a wrong answer becomes a wrong action.

OWASP defines Excessive Agency (LLM06:2025) as the vulnerability that enables damaging actions in response to unexpected, ambiguous or manipulated model output, whatever the cause (hallucination or prompt injection). The checklist below turns that principle into verifiable points. It complements a full agent penetration test without replacing it.

How to use it: for each point, mark OK, To fix or Not applicable, with the evidence (screenshot, config line, log excerpt). A point without evidence is an unverified point.

What are the 20 points to check?

Here is the full checklist. Points marked Blocking must be resolved before any production release.

No.FamilyPoint to verifyPriority
1ScopeEvery agent tool is justified by a written use caseBlocking
2ScopeNo open-ended tool (free shell, arbitrary URL, free SQL)Blocking
3ScopeService accounts hold minimal rights (read-only where possible)Blocking
4ScopeThe agent acts with the rights of the user who calls itImportant
5ScopeSecrets (keys, tokens) appear neither in the prompt nor in the contextBlocking
6InputsAll third-party content sources are listed (emails, pages, tickets, documents, RAG)Blocking
7InputsThird-party content is fenced as data and has no instruction authorityImportant
8InputsIncoming webhooks and APIs are authenticatedBlocking
9InputsRAG applies access control before sending to the modelBlocking
10InputsAn indirect prompt injection test was run on every sourceBlocking
11OutputsModel output is treated as untrusted before reaching another systemBlocking
12OutputsNo automatic rendering of external images or links in the interfaceImportant
13OutputsOutbound calls are limited to a domain allowlistImportant
14OutputsThe system prompt contains no sensitive dataImportant
15ApprovalHuman approval precedes any send, payment, deletion or sensitive writeBlocking
16ApprovalLimits (amounts, recipients, volumes) are enforced in codeBlocking
17ObservabilityEvery tool call is logged with its parameters and its triggerImportant
18ObservabilityRate and cost caps exist per user and per sessionImportant
19ObservabilityAn alert flags abnormal behavior (volume, new recipients)Important
20OperationsA kill switch and an access-revocation procedure are testedBlocking

The following sections explain the reasoning behind each family.

What to check on scope and permissions (points 1 to 5)?

Check that the agent can only do what its use case requires. OWASP separates three causes of Excessive Agency: too much functionality, too many permissions, too much autonomy. Points 1 to 5 address the first two.

A simple test: list the tools and, for each, write the sentence "the agent needs this to...". Any tool for which you cannot write the sentence should go. Prefer narrow tools ("create a draft reply") over open ones ("send an email to anyone"). For agents wired to MCP servers, apply the same logic to each server: our MCP security page details the risks.

What to check on inputs (points 6 to 10)?

Check that any content the agent reads but you do not control is treated as hostile. This is the territory of indirect prompt injection, described on our prompt injection page.

Point 10 is easy to forget: testing sometimes stops at the chat input without covering the email, web page or document the agent processes in the background. Point 9 also deserves attention: a RAG that indexes every document with no per-permission filter exposes data to any user who asks the right question.

What to check on outputs (points 11 to 14)?

Check that what the model produces can neither attack another component nor carry data out. OWASP (LLM05:2025, Improper Output Handling) asks you to treat the model as an untrusted user and validate its output before it reaches a downstream function.

In practice: context-aware encoding (HTML, SQL), parameterized queries, a strict content security policy (CSP) in the interface, and refusal to load external images or links generated by the model. On point 14, OWASP reminds us that the system prompt must not be treated as a secret or as a security control.

What to check on human approval (points 15 and 16)?

Check that no irreversible action runs without explicit agreement from a person, and that caps are hard-coded. A rule written in the prompt ("never refund more than 50 EUR") can be bypassed; a check inside the refund API cannot.

Make sure the approval is informed: the person must see the exact action (recipient, amount, content), not a summary written by the model. Otherwise an attacker can manipulate the summary.

What to check on observability and operations (points 17 to 20)?

Check that you will be able to detect, understand and stop a hijack. Without a tool-call log you cannot reconstruct what happened. OWASP recommends logging and rate limiting as damage-limiting measures.

Test the kill switch before you need it: who can shut the agent down, how fast, and how do you revoke the tokens it holds? A procedure that was never tried is a procedure that will fail on incident day.

In what order should you fix the gaps?

Start with the blocking points that touch permissions and human approval (1, 2, 3, 15, 16), because they reduce the impact of every other flaw. A successful injection against an agent with no dangerous rights causes little damage.

Then handle inputs (6 to 10) and outputs (11 to 14), then observability. Rerun the checklist whenever you add a tool or data source or change the model, and keep the evidence: it also helps during a client audit or a security questionnaire.

How do you go from checklist to real testing?

The checklist verifies the design; an adversarial test verifies that it holds against someone looking for the flaw. After the 20 points, have the agent attacked with real scenarios: booby-trapped content, attempts to leave the perimeter, tool abuse.

Our Agent Red Team Express (1,900 EUR, 5 days) covers exactly this step for one agent. For several agents or white-label delivery by an agency, see AI agent penetration testing. The overall approach is presented on our AI agent red teaming page.

Does your product ship an AI agent? CleanIssue tests what a stranger can make it do with the Agent Red Team Express (5 days, €1,900), or a custom red team for several agents and MCP servers.

Know what your agent can do before an attacker does.

Tell us about your agent, its tools and your context. A free 30-minute discovery call.

Book a call