Retrieved documents, tool results and user messages all arrive on the same channel as your instructions. A model cannot reliably distinguish the text you wrote from text someone else placed in your index — which means a prompt is not a security boundary.
Six controls worth building in
Where each control must not live
- Per-agent allow-list on the tool registry
- Query-level scoping on every read
- Per-session counters enforced server-side
- HMAC signature plus idempotency key
- Max iterations and a wall-clock timeout
- Prompt text listing what is allowed
- A filter the model is asked to apply
- “Do not call this too often”
- Accepting any POST that parses
- Asking the agent to stop when it is done
None of this is exotic security work. It is ordinary authorization, applied on the assumption that one of the participants in your system will occasionally be persuaded to do the wrong thing.




