// what it is
To the model, your instructions and the text it reads are the same stream. It can't reliably tell "the developer told me to" from "some text I ingested told me to." So any content it reads can act as an instruction. OWASP ranks this LLM01 — the top LLM risk — two editions running.
The dangerous kind is indirect
You don't have to type the attack. The malicious instruction hides in a web page, a document, an email, or a tool result your agent pulls in on its own. The user never sees it. Give the agent tools — read account, send email — and that hidden text turns into real actions.
Willison calls the worst case the "lethal trifecta": private data + untrusted content + the ability to send data out. Line all three up and you get exfiltration with no traditional code bug in sight.
Why "better prompts" don't fix it
SQL injection has a clean fix: parameterized queries separate code from data, so user input can never become a command. LLMs have no equivalent. There's no reliable way to mark a span of text as "data, never instructions." OWASP's own words: research "does not fully mitigate," and there's no fool-proof method.
Shrink the blast radius
You can't delete the risk, so you contain it. Treat the model as a component that will be tricked, and limit what a trick can do:
Sources: OWASP LLM01: Prompt Injection · Simon Willison — prompt injection · Prompt injection (overview)
One concept a week. Free.
The deeper, copy-paste version of each ToolCall short — in your inbox.
// total: 0.00 · spam: void · unsubscribe: one click
