Skip to content

Answer

What is prompt injection?

Prompt injection is what happens when text a model was supposed to read as data gets treated as an instruction instead.

It exists because a language model receives instructions and content through the same channel. There is no structural separator the model can rely on, so the boundary is a matter of persuasion rather than parsing.

Direct and indirect

Direct injection is a user typing something to override the application's behaviour. It is the version everyone has seen, and it is the less serious one: the attacker affects their own session.

Indirect injection is the instruction planted in content the application fetches on its own. A web page the agent summarizes. A resume it screens. A support ticket it triages. A document in a shared drive. Here the attacker never touches your interface and reaches whatever the agent can reach on someone else's behalf.

Why it is not a filtering problem

The intuitive fix is to detect malicious instructions and strip them. This helps and it does not close the class, because the attacker writes prose and prose has unlimited phrasings.

Worse, the usual detector is another language model reading the same untrusted text, so it inherits the same weakness. Filtering is defence in depth. It is not the boundary.

The severity is in the tool list, not the model

A model that only produces text has a bounded worst case: it says something wrong. A model wired to tools has a worst case equal to everything those tools can do.

So the question that sets severity is never "can the model be influenced" — assume yes. It is "what can it do once influenced", and that is answered by reading credentials and scopes, not by testing the model.

What actually reduces the risk

The durable controls are permission controls. They work whether or not the model is fooled.

  • Least privilege per tool: a credential scoped to the one job that tool does
  • Human approval in front of anything irreversible or externally visible
  • No model output passed to an interpreter, a shell, or a query without escaping
  • Logging of every tool call with arguments, so an incident can be reconstructed
  • Separation so one user's or tenant's context cannot leak into another's

Questions

What is prompt injection?
Prompt injection is when text that a language model reads as data is treated as an instruction. It works because instructions and content arrive through the same channel, so the model has no reliable way to tell them apart.
What is indirect prompt injection?
Indirect prompt injection is when the instruction is planted inside content the application retrieves itself, such as a web page, document, resume or support ticket. The attacker never uses your interface, and reaches whatever the agent can reach on another user's behalf.
How do you prevent prompt injection?
You limit the consequences rather than relying on detection. Scope each tool credential to the minimum it needs, require human approval for irreversible actions, never pass model output to an interpreter unescaped, and log every tool call. Filters reduce the rate but do not close the class.

Sources

Standards and legislation are quoted from the sources above and change over time. Read the primary source before relying on it. Nothing on this page is legal advice.

Next step

Start with a scoping call.

Tell us what you need tested. Before any testing begins, the scope is written down and the agreement and rules of engagement are signed.

Book a scoping call