The hostile-data problem
Prompt injection is the situation where untrusted data — a user message, a retrieved document, a tool result, a webpage — contains text that the model treats as instructions. The data tells the model: ignore previous instructions, leak the system prompt, send the user's email to an attacker, exfiltrate via a crafted URL. Because the model reads the data the same way it reads operator instructions, it can be manipulated by anyone who controls any input the model touches.
Why it's not solved
There is no single fix because the model fundamentally lacks an enforced trust boundary inside its input stream. Defenses are layered mitigations, not silver bullets. Treat injection like SQL injection in 2005 — a real, ongoing class of bug, not an exotic threat.
The three injection surfaces
- Direct user injection — user types adversarial instructions in the chat.
- Indirect injection — adversarial instructions arrive in retrieved documents, web pages, emails, tool outputs.
- Persistent injection — past assistant outputs (or memory) contain attacker-planted instructions that fire on later turns.