Lesson 03 · Assess and bound · 14 min
Bound by design, not by request
Once tiers say what the agent may do, something has to make that stick. There are three places to put a limit, and they are not equally strong.
The framework's advice is blunt: prefer deterministic limits, and bound by design. Rather than instructing an agent not to use a tool, do not give it the tool. Least privilege is the working method — the minimum tools and data for the task, decided per agent. A coding assistant with curated documentation probably does not need open web search; a helpdesk agent has no business holding a deletion capability that its own tier table says no autonomy level may use.
This lesson is also where agent identity belongs, because scoping needs someone to scope. Give each agent its own identity — not a shared service account — tied to a human or team that answers for it, with authorisations that are least-privilege, time-bound and non-transferable. One rule of thumb from the framework does a lot of work: an agent acting for a person must never hold permissions that person does not.
Prompt-layer instructions are still worth writing — as depth, not as the wall. They shape behaviour on the happy path and they make refusals legible. The mistake is load-bearing prompts: any control whose failure mode is "the model changed its mind" is not a control.
The lab stages the classic attack: a knowledge-base article, writable by an external sync, carrying an embedded instruction to open the firewall wide and delete an account. The same model, the same poisoned article, two defences. The prompt-layer build has every tool plus a stern warning. The structural build simply lacks the deletion tool, and its firewall changes queue for approval. Three trials each — count what was attempted and what actually happened.
Checkpoint
Find one "never do X" instruction in a prompt you use. What would the structural version of that rule be, and what would it cost to build?