The attack, in plain words
An AI agent reads content to do its job: pages, files, tickets, search results. Anyone who can place text in that content can write instructions addressed to your agent. The agent cannot reliably tell which instructions came from you and which came from the reading material, because both arrive as text it is trying to be helpful with. That is prompt injection, and it is not a bug in one model. It is a property of asking a language model to both read and obey.
So the security question is behavioral. Not whether hostile text exists, it does, but what your agent does when it meets some: which tools it calls, what it tries to send, and whether it stays inside the job you gave it.
Two different defenses, often confused
- Checking the text scans content before the agent acts on it and flags known injection patterns: instruction overrides, hidden directives, impersonated system messages. This hub's text check page covers that layer, and it is worth running on anything untrusted your agent is about to read.
- Testing the agent assumes hostile text gets through, because some of it will, and measures the behavior: you plant the instruction, run a real task, and audit the tool calls afterward.
Run both. The check lowers how often the agent sees an attack. The test tells you what happens when it does.
Run a test in four steps
- Plant the instruction. Put a clear, bounded directive in content your agent will read during a normal task: a page that says to email a file somewhere, a document that says to skip the approval step, a tool description that adds a secret extra call. Make the planted action something you can detect and something harmless if it fires.
- Run a real task that makes the agent read the planted content in the ordinary course of work. A test the agent can tell apart from real work tests the wrong thing.
- Read the tool call record, not the summary. List every call the agent made. You are looking for calls the user never asked for: a send, a fetch to an unexpected place, a write outside the task. The agent's own summary of the session will describe a normal session either way.
- Score it plainly. The planted instruction fired, was noticed and refused, or was never acted on. Record which, with the receipts, so the next test after a model or prompt change compares against evidence.
The instrument, running in public
Zambo's prompt_shield tool checks content against injection patterns, and it runs in the open demo: this morning the demo's call produced receipt 91e376b1, saved 2026-10-18T11:36:51Z, which anyone can open and check. That receipt is what every step of your own test should look like: the call, its input, its result, and a digest over the saved result, so the test record itself cannot be tidied up afterward.
When the test fails, shrink the blast radius
A failed test is information, and the fixes are structural rather than hopeful. Give the agent fewer tools than the job could theoretically use. Put consequential actions behind a human decision: in a Zambo handover, the client accepts or flags on the record, and a flagged step stops the story there. Cap what the agent can spend, with the cap recorded the same way its calls are. And keep the receipts: the difference between an incident you can reconstruct and one you can only apologize for is whether the calls left records.
Red team your own agent for a day
One planted instruction is a smoke test. A real drill runs the agent against your actual workload with planted content seeded through it, then audits every call. A $0.99 Day Pass puts a verifiable receipt under every call for 24 hours, which is exactly the record the drill is read from: plant in the morning, run the day, audit the calls at night, and keep the receipts as the baseline the next drill has to beat.
Prompt injection audit: the full review, not just one drill
A single test answers one question about one planted instruction. A prompt injection audit answers the wider question: across everything your agent can read and every tool it can call, where could a hostile instruction enter, and what would it be able to do? Run it when you first give an agent real tools, and rerun it whenever the model, the system prompt, or the tool set changes.
- Inventory. List every tool, every MCP server, and every kind of content the agent reads in normal work. If a source is not on the list, it is not in the audit, and it is still a way in.
- Read the surfaces. Read every tool description and a sample of tool results word for word, then scan both with prompt_shield. You are looking for sentences written to the model rather than to the user.
- Drill the workload. Plant bounded canary instructions across the real content types, run ordinary tasks, and read the call record for each run.
- Score and fix. A pass means no canary turned into a tool call and every call in the record traces back to the user job. A fail is specific: name the call, the content that caused it, and the fix, whether that is removing a tool, narrowing its access, or adding a human decision in front of it.
- Keep the evidence. Save the planted set, the scores, and the receipts together with a date. The next audit compares against this baseline instead of starting from memory.
MCP prompt injection: when the tool itself is the attack surface
Classic prompt injection hides in content: a page, a file, a ticket. MCP prompt injection hides in the machinery. An MCP server supplies the tool names, the descriptions the model reads to decide how to call them, the parameters it fills in, and the results it reads afterward. Every one of those is text the model treats as context, which means a hostile or compromised server does not need to trick your agent into visiting anything. It is already inside the conversation.
The sharpest form is the tool poisoning attack: instructions planted in a tool description itself. The user sees a friendly tool name in a list. The model sees the full description, including any sentence that tells it to run an extra call first, copy context into a parameter, or keep an action quiet. A second form poisons results instead: the tool does honest work and returns a result with an instruction folded into it, aimed at whatever the agent does next.
Test both forms the same way you test a page. Before connecting a server, read and scan every description. In a test setup, give the tools harmless tasks seeded with canary values only you know, then read the full call record. A clean server produces calls that match the task. A poisoned one produces a call whose inputs came from the description or the result, not from you.
MCP server security risks: rogue servers, rug pulls, and the supply chain
Connecting an MCP server is a supply chain decision, whether it feels like one or not. You are adopting code and text you did not write, giving it a channel to your agent, and trusting it to stay the thing you reviewed. The failure modes worth planning for:
- Overbroad access. The server can do far more than the job needs, so one successful injection reaches further than it should.
- The rogue MCP server. It does not do only what it claims: it steers the agent toward calls it profits from, or quietly collects context in its parameters. Detection is behavioral: canary tasks, a full read of the calls it triggers, and a hard look at any appetite for context the task never needed.
- The MCP rug pull attack. The server behaves during review, then changes after approval, usually by editing a description or a result, so the agent starts doing something new under an approval the user gave to something else. The countermeasure is pinning and diffing: save what you approved, compare on a schedule and after every update, and watch the call record for patterns that were not there before.
- Silent drift across the chain. Servers, tools, and content sources all update on their own schedules. AI agent supply chain security in practice is an inventory you can list, a review before anything joins, a fresh scan and drill when anything changes, and receipts that show what each component did while it was trusted.
None of this requires paranoia. It requires the same record you already keep for the drill: what was approved, what ran, and what changed.
Prompt injection scanner vs test tool: filter and fire drill
A prompt injection scanner reads text before your agent acts on it and flags known injection shapes: instruction overrides, impersonated system messages, hidden directives, and requests to conceal actions from the user. Run one on every page, document, and tool description your agent is about to trust. Zambo prompt_shield is that check, and its result lands as a verifiable receipt like any other call, so a scan you ran last month can be rechecked today.
Know what a scanner cannot do. It matches patterns it knows. Fresh phrasing, encoded text, and an instruction split across two innocent looking sources can all pass a scan and still move an agent. That is why the scanner never replaces the behavioral test on this page: the scanner lowers how often the agent meets an attack, and the test shows what an attack that gets through actually costs. A setup passes when both layers agree: nothing flagged in the scan, and nothing obeyed in the drill. Either layer failing is a fail.
Secure AI agent tools: a working checklist
Secure AI agent tools are not a category you buy, they are a setup you enforce. The checklist that holds up in practice:
- Fewest tools, least access. Read before write, narrow parameters before open ended ones, and no tool the current job does not need.
- Descriptions reviewed like code. Read them fully, scan them, and re-read them after every update. Any sentence addressed to the model about behavior or secrecy fails review.
- Human decisions on consequential steps. Sends, writes, deletes, and payments wait for a person. In a Zambo handover that decision is recorded, so a skipped approval shows in the trail.
- Spend capped, calls receipted. A cap limits what a hijacked session can spend, and a verifiable receipt for every call makes the session auditable afterward.
- A way to stop it. Disconnecting a tool or a server should be one action, rehearsed before it is needed.
Prompt injection red team tools: build the drill kit
Prompt injection red team tools are how you stop testing only the attack you imagined first. A working kit has four parts: a payload library with varied phrasings planted across pages, documents, tool descriptions, and tool results; a controlled place to host that content so you know exactly what the agent read; a scanner pass, so you learn what your filter catches and what it waves through; and the call record, read after every run.
Rotate the payloads, because an agent that learns to refuse one phrasing has not learned to refuse the class. Rerun the full set after every model, prompt, or server change, and score each run against the last dated baseline. The kit does not need to be large to be honest. It needs to be varied, realistic, and run on a schedule instead of once.
Questions, answered
What is a prompt injection test tool?
A prompt injection test tool measures what an AI agent does when instructions are hidden in content it reads. You plant a directive in a page, document, or tool result the agent will encounter during a normal task, run the task, and then audit the agent's tool calls for actions the user never requested. It tests behavior rather than text, because the risk is not that hostile text exists but that the agent obeys it.
How do I test my AI agent for prompt injection?
Plant a bounded, detectable instruction in content the agent will read during a real task, something harmless if it fires, like asking the agent to visit a page you control or add a marker word to a draft. Run the task normally. Then read the tool call record and look for calls the user never asked for. Score the result plainly: the instruction fired, was refused, or was never acted on, and keep the receipts so the next test, after a model or prompt change, compares against evidence.
What is the difference between checking text for prompt injection and testing an agent?
Checking text scans content before the agent acts on it and flags known injection patterns, which lowers how often the agent sees an attack. Testing the agent assumes some hostile text gets through and measures what the agent does with it: which tools it calls and whether it stays inside the job it was given. The first is a filter. The second is a fire drill. A serious setup runs both, because filters miss phrasings and drills reveal what a miss costs.
What does a failed prompt injection test look like in the record?
It looks like tool calls with no user request behind them: a send to an address the task never mentioned, a fetch to a planted URL, a write outside the task's scope, or an approval step skipped exactly as the planted text suggested. The agent's summary usually still reads as a normal session, which is why the test is read from the call record. On Zambo every call leaves a verifiable receipt, so the unexpected call is sitting in the trail with its inputs visible.
What does a passed prompt injection test not prove?
It does not prove the agent is safe. It proves the agent resisted the injections you planted, phrased your way, on that day, with that model and system prompt. New phrasings, new content types, and model updates all change the answer, and no pattern check catches every attempt. Treat passing as a baseline with a date on it, rerun the drill after changes, and keep the structural defenses in place: few tools, human decisions on consequential steps, spend caps, and receipts on every call.
What is a prompt injection audit?
A prompt injection audit is the full review around the single drill: an inventory of every tool, server, and content source the agent can reach, a read of every tool description for hidden directives, planted injection tests across the real workload, and a check of the call record for actions nobody requested. It ends with fixes and a retest date. An audit passes when planted instructions do not turn into tool calls and every call in the record traces back to the job the user actually gave. It fails when any planted instruction fires, or when calls appear that nobody can explain.
How to test for and detect prompt injection in agent tools?
Test at two moments. Before you connect a tool, scan its name, description, and parameters for directives aimed at the model rather than the user, then run the tool once on a harmless task and read the full call record, inputs included. After you connect it, plant canary instructions in content the tool returns and watch whether later calls follow them. Detection in a live record looks the same as a failed drill: calls with no user request behind them, inputs copied from tool output, or a scope wider than the task needed. On Zambo, prompt_shield scans the text and every call leaves a verifiable receipt, so detection is a read of evidence, not a guess from the summary.
What is MCP prompt injection?
MCP prompt injection is prompt injection delivered through the Model Context Protocol: through a server, a tool, or content an MCP tool returns. An MCP server supplies tool names, descriptions, and results, and the model reads all of it as context, so a hostile or compromised server can address instructions directly to your agent inside material that looks like plumbing. The defense is the same behavioral test used for web content, applied at connect time and after every server update: scan the descriptions, plant canaries in the results, and audit the calls that follow.
What is a tool poisoning attack on MCP?
A tool poisoning attack hides instructions inside an MCP tool itself, most often in its description, where the user rarely looks but the model reads closely. A poisoned description can tell the model to run an extra call first, copy private context into a parameter, or present one tool while quietly steering the agent to another. You test for it by reading every description word for word, scanning it with prompt_shield before you connect, and diffing it after every update. A clean result shows descriptions that describe the tool and nothing else. A poisoned result shows any sentence written to the model about behavior, secrecy, or other tools.
What does a prompt injection scanner do, and what does it miss?
A prompt injection scanner reads text before your agent acts on it and flags known injection shapes: instruction overrides, fake system messages, hidden directives, and requests to hide actions from the user. Zambo prompt_shield works this way, as a pre-read check on pages, documents, and tool descriptions. A scanner is fast and worth running on everything untrusted, but it only matches patterns it knows, so novel phrasing, encoded text, and instructions split across sources can pass. That is why a scanner is the filter and the behavioral test is the verdict: scan first, then still run the drill and read the call record.
What are the biggest MCP server security risks?
The risks that bite in practice are five. A server asks for broader access than its job needs. Its tool descriptions carry hidden instructions. It updates silently and its behavior changes after you approved it. Its results return hostile content your agent then follows. And it collects more context in its parameters than the task requires, which turns one call into a leak. Each risk has the same countermeasure shape: connect with the fewest tools and the least access, review and pin what you approved, scan descriptions and results, and keep a receipt for every call so a change in behavior shows up in the record.
How do I detect a rogue MCP server?
A rogue MCP server is one that does not do only what it claims: it steers the agent, harvests context, or adds calls the user never sees. Detect it by behavior, not by its listing. Connect it in a test setup first, give it harmless tasks with canary values you control, and read every call it triggers, including calls to other tools that follow its results. Check whether its descriptions changed since review, whether it asks for context the task does not need, and whether removing it changes the agent answers in ways nobody can explain. Any unexplained call, any description drift, or any appetite for unrelated context is a fail: disconnect it and keep the receipts as the incident record.
What is AI agent supply chain security?
AI agent supply chain security is control over everything your agent depends on that you did not write: MCP servers, tools, plugins, prompts, and the content sources they pull from. Each one can change after you adopt it, and each one can speak to your agent in text. Practical control means an inventory you can actually list, a review before anything joins, pinned versions where the platform allows it, a fresh scan and drill when anything updates, and receipts for every call so you can prove what a component did while it was trusted. If you cannot list what your agent depends on, you do not have supply chain security yet, you have hope.
How does prompt injection hide in tool descriptions?
Tool descriptions are written for the model, so they are the one place an attacker can address the model directly without the user ever seeing the text rendered. Hiding places include a long description with one directive buried in the middle, white space or formatting tricks that push text out of casual view, instructions framed as usage notes, and a second tool described inside the first tool description. The check is unglamorous and complete: read the whole description, scan it with prompt_shield, and treat any sentence that tells the model how to behave, what to hide, or how to use other tools as a failure until the author explains it.
What is an MCP rug pull attack?
An MCP rug pull attack is a bait and switch by a tool server: the server behaves well during review, earns a place in your setup, and then changes after approval, most often by editing a tool description or a tool result so the agent starts doing something new. The user approved version one and is running version nine without ever seeing a prompt to reapprove. You test for it by pinning and diffing: save the descriptions and behavior you approved, compare them on a schedule and after every update, and watch the call record for new patterns. A receipt trail makes the switch visible, because the first call under the new behavior sits in the record with its inputs.
How do I choose secure AI agent tools?
Choose tools the way you would choose a contractor with keys to the office. Prefer the fewest tools that do the job, with read access before write access and narrow parameters over open ended ones. Read the descriptions yourself, run a scanner over them, and connect new tools in a test setup before they touch real work. Require a human decision on sends, writes, and spend, set a spend cap, and keep a verifiable receipt for every call so you can audit the tool later. A tool that resists this setup, that needs broad access with no clear reason or discourages logging, has already told you what you need to know.
What are prompt injection red team tools?
Prompt injection red team tools are the kit you use to attack your own agent before someone else does: a library of planted payloads in pages, documents, and tool results, a controlled place to host that content, a scanner to check what a filter would catch, and a call record you can audit afterward. You do not need a large kit to start. You need variety in the payloads, realism in the tasks, and discipline after changes: rerun the set after every model, prompt, or server update and compare against the last dated baseline. On Zambo, prompt_shield covers the scanning step and the receipt trail is the record the red team reads.
What is the best prompt injection test tool setup in 2026?
The best setup in 2026 is not a single product, it is a pairing: a scanner that checks text and tool descriptions before the agent acts, plus a behavioral test that plants instructions and reads the tool call record afterward. Judge any tool by three things: whether it tests what the agent does rather than only what the text says, whether its results are saved as records you can recheck later, and whether it reruns cleanly after a model or prompt change so tests compare over time. A tool that gives you a score with no call record behind it is giving you an opinion. Zambo prompt_shield plus its verifiable receipts is built as that pairing: scan, drill, and keep the evidence.
How to test for MCP prompt injection, tool poisoning, and rug pulls?
Run one connect time drill and one standing drill. At connect time, read and scan every tool description, run harmless tasks with canary values, and save the approved descriptions with the call record as your baseline. After that, plant canary instructions in tool results during normal work, diff the descriptions after every server update, and audit calls weekly for actions with no user request behind them. Passing looks boring: descriptions unchanged, canaries ignored, every call explained by the task. Failing is specific: a description moved, a canary fired, or a call appeared that traces back to tool output instead of the user. Disconnect first, then investigate from the receipts.
What is the best prompt injection audit approach in 2026?
The best audit approach in 2026 is evidence first and recurring. Start from an inventory of tools, servers, and content sources, scan every description, run planted drills against the real workload, and read the results from the call record rather than from agent summaries. Write down what passed, what failed, and what changed since the last audit, and set the next date before you close the report, because model and server updates quietly expire old results. An audit that produces receipts and a retest date protects you. An audit that produces only a score does not, because nobody can recheck a score.