Home AI Solutions Ready-made Solutions Peers & Simulation RAG & Retrieval Use Cases Frameworks Blog Deutsch Contact Us
Back to the blog

Three Years of Notes, One Sentence

Reading back through what we have published, the same finding appears under a dozen different headings. It is not a principle we set out with. It is what was left after each attempt to enforce something the easy way failed in production.

The Same Finding, Repeatedly

A document told our extraction step what to do and it complied, so we removed the tools from that step. A prompt told an agent not to modify the pipeline and it did, so we removed the permission. An instruction told an assistant to say when it did not know and it did not, so we made retrieval decide.

Each was written up separately, months apart, as a specific lesson about a specific system. Put together they are one lesson, and it took considerably longer to see that than it should have.

Inputuntrusted Guardrailspolicies · pii Agentleast privilege ApprovalhumanActiontraced
Untrusted input arrives — treat it as data, not instructions. 1/4

What the Sentence Actually Says

Anything you want to be true of a system has to be made true by something that cannot decide otherwise. A prompt is a request to a component that is free to ignore it. A document is a request to a person who may not read it. A credential scope, a tool list, a schema and a separate index are none of those.

Besanson published work in 2026 arguing that governance controls are commonly attached to prompts, dashboards and documentation after the fact, and that this creates a structural mismatch with what the controls are supposed to guarantee.

Wanted propertyWhere we put it
Content cannot issue commandsThe reading step has no tools
An agent cannot break its own testsA token without that permission
No answer without evidenceRetrieval threshold, before generation
One tenant cannot observe anotherSeparate index, separate cache

Where We Learned It, Briefly

The supplier footer that gave orders. The agent that edited the workflow running its tests. The assistant that abstained on two percent when it should have on nine. The shared cache that leaked through timing. The index that answered questions about documents a user could not see. The memory a colleague could write to. The self-improving prompt with no nameable version. The review screen that showed everything and helped less.

Eight systems, eight write-ups, one shape. In every case the first fix was textual, it worked in testing, and it failed on contact with a situation nobody had described in the text.

The Two Cases Where It Was Not Available

Answer quality, and expectations. There is no architectural mechanism that makes an answer correct, and none that makes a user understand what a system is for. Both had to be handled with measurement and conversation, which are weaker instruments and the only ones on offer.

That is the honest boundary of the sentence. It applies to what a system may do, not to how well it does it, and treating a measured error rate as if it were an enforced constraint is the mistake in the opposite direction.

Why the Textual Version Is Always Tried First

Because it is fast, it demonstrates well, and it usually works. A prompt instruction handles the ordinary case immediately, and the failure appears weeks later in circumstances that look like bad luck rather than like a design decision.

We still write the instruction. It is worth having and it is not the control, and our reviews now ask, for each stated property, what would enforce it if the model ignored the instruction entirely. Where the answer is nothing, the property is a hope.

What This Costs

More components. Separate indexes, separate credentials, separate servers by scope, a gateway, a validator per step. Every one of those is infrastructure that has to be run and understood, and a system built this way is harder to explain than one held together by a well-written prompt.

That is a real cost and we have paid it wrongly at least once, when a small internal tool got a permission model it did not need. The sentence is a default rather than a law, and the question that scales it is what a failure would cost here.

What We Would Tell Someone Starting

Write the properties down before the system exists, in the customer's words, and next to each one write what enforces it. Where the answer is a prompt, a document or a training session, mark it and decide deliberately whether that is acceptable for this property in this process.

Most of the time it is. The value of the exercise is the small number of rows where it obviously is not, and those are the rows that would otherwise have become an article like the eight above.

What We Do Not Claim

We do not claim architecture guarantees anything. A tool list can be wrong, a credential can be over-scoped, and a separate index can be built from the wrong permission model. What changes is that those are mistakes someone can inspect rather than behaviour someone has to trust.

We also do not claim this generalises past the kind of work we do. Everything here comes from bounded business systems with documents, records and consequences, and a team building something open-ended may reasonably find that the constraints they need cannot be expressed this way at all.

Sources