Agent permissions and tool boundaries

The model is not a security boundary. Where an agent's permissions should actually be enforced — the tool catalogue, the tool's design, a policy check, the credential and the downstream system — and how to test that they hold.

  • 7 min read
  • Oct 10, 2026
  • Architecture · trust

The most important rule in agent security fits in one sentence: the model is not a security boundary.

Anything you tell an agent not to do in its instructions is a request. The model will usually honour it. But models make mistakes, misread situations, and can be manipulated by text planted in an email, a web page or a document they were asked to read — the risk OWASP lists first for LLM applications, as prompt injection. A permission is different. It is something the surrounding system enforces whatever the model decides. The architecture of an agent is largely the question of where those enforcements sit.

This note sets out the layers, what each is for, and how to test that they hold. Sentinel's dispatch 5 permissions an agent should never have covers which powers should never be granted at all; this note is about how every other permission is built.

01

Five places a boundary can live

LayerThe question it answersExample
1. Tool catalogueDoes this capability exist for this agent at all?The support agent has no payments tool
2. Tool designWhat can this tool possibly do?issue_refund(order_id, amount), not "call any API"
3. Policy checkIs this call, by this agent, for this person, allowed now?Refunds above a limit need approval
4. CredentialWhat can the tool's access do if everything above fails?A key scoped to refunds on one account
5. Downstream systemDoes the target system itself agree?The billing system enforces its own roles
Figure 1. From the outside in, the layers that decide what an agent can actually do.

Each layer catches what the one before it misses. Together they mean that a confused or manipulated model meets several independent refusals before anything happens in the world.

Five concentric stone walls with offset gates seen from above, a cyan light thread stopped at successive gates before a central seed.

1. The tool catalogue: absent beats forbidden

The safest permission is a tool that does not exist. An agent cannot misuse a capability it was never given, and it cannot be talked into using it. Give each agent the smallest set of tools its mission needs, and treat every addition as a change that needs a reason and a review. OWASP's guidance on excessive agency names this first: minimise the extensions an agent can reach.

2. Tool design: narrow, typed, explicit

A tool's signature is a boundary. A narrow tool with typed parameters, enumerated options and server-side validation can only do what it says. A generic tool — run a query, call a URL, execute a script — can do anything its credential allows, which means it has no boundary of its own. Separate tools that read from tools that change things. Block sensitive fields explicitly: an "update supplier" tool that can also change bank details is two tools pretending to be one.

3. The policy check: decisions outside the model

Every tool call should pass through a check that the model cannot influence. It takes the facts of the call — which agent, acting for whom, which action, on which resource, with which parameters, under which mission and autonomy level — and returns one of four answers: allow, allow within limits, require approval, or deny.

ToolActionScopeLimitsAbove the limit
lookup_orderReadOrders of the customer in the conversation——
issue_refundChangeOrders of that customer, in the last 90 daysPer refund, per day and per customer, set by the finance ownerApproval by a support lead
send_emailChangeThe customer in the conversation onlyPer hourDeny
update_addressChangeThat customer's delivery addressOnce per orderApproval
Figure 2. A permission written down — an illustrative support agent.

Limits deserve as much care as rules. Count cumulatively, not per call: an agent that may refund up to a limit should not be able to issue three refunds just under it. Add rates, volumes, time windows and a cost ceiling per task. The check belongs in code, close to the tool — in the Citadel's terms, the guardrail layer of permissions, policies and escalation.

4. The credential: what happens if everything else fails

Each tool runs with its own credential, scoped to exactly what that tool needs, held outside the model and never shown to it. The agent acts under its own identity, never a person's, so every action is attributable and access can be revoked without locking a colleague out. Prefer short-lived credentials issued per task. Then ask the uncomfortable question: if the policy check had a bug, what could this credential do? The answer is your real blast radius.

5. The downstream system: complete mediation

Finally, the system being acted on should enforce its own permissions, as it would for any user. OWASP calls this complete mediation: authorisation is enforced in the downstream system rather than relying on the model's judgement. It is the layer that still holds when the agent, the gateway and the credential are all wrong in the same direction.

02

Acting on behalf of someone

Agents usually act for a person: the customer in the conversation, the employee who asked. The effective permission must then be the intersection of what the agent may do and what that person may do. An agent with access to every customer's records must not become a way for one customer to read another's. This is the classic confused deputy problem — a privileged component tricked into using its authority for someone who lacks it — and it is avoided by passing the requesting person's identity through to the tools and checking it there, which OWASP describes as executing in the user's context.

A cyan agent and a robed wizard each stand in a circle of light, the circles overlapping around one open door, locked chests outside it.
03

Approvals are a permission state

An approval is not a pop-up; it is one of the outcomes of the policy check. Design it so that it means something:

  • Bound to the exact action. What the person approves is the specific call with its parameters, and only that call can then run. Approval for one refund cannot be spent on another.
  • Carrying evidence. The request shows what the agent wants to do, why, and what it looked at.
  • Expiring. An approval left unanswered for a week should not quietly execute next month.
  • Recorded. Who approved, when, and on what evidence, in the activity record.
04

Reading is not harmless

Read access looks safe and often is not. An agent that can read sensitive data, is exposed to content an attacker can influence, and can send information out — by email, a web request, even a link it renders — can be manipulated into exfiltrating that data. Simon Willison calls this combination the lethal trifecta. The defence is architectural: avoid giving one agent all three, or put a hard boundary on the third, such as sending only to the customer in the conversation and only through templates.

A cyan agent reads gold records as grey light seeps through a cracked window and a shield sigil lowers a shutter over a messenger.

Sentinel note — When I review an agent, I do not start from its instructions. I list its tools, then read what each tool's credential can actually do, then look for the pairs: sensitive reads next to outbound channels. The instructions tell me what the agent intends. The credentials tell me what it can do.

05

Test the boundary, not the model

Boundaries are tested like any other capability, with scenarios built to break them:

A rough cyan figure pushes against three glowing warded doors that hold, as two wizards watch from a gallery with a brass instrument.
  • requests just above a limit, and one large action split into several small ones;
  • instructions planted in documents, emails and tool results;
  • a request to act for a different person than the one in the conversation;
  • tool errors and timeouts mid-action, to check that retries do not duplicate;
  • a scripted "agent" that ignores its instructions and calls tools directly, to prove that the policy check and credentials stop it without the model's cooperation.

The last test matters most, because it tests the boundary rather than the model's good behaviour. In the Guild's Evaluation Lab, Sentinel owns the boundaries — security, permissions, policy adherence, risk and escalation rules — and policy adherence is one of the dimensions every agent is scored on.

06

Keep a permission register

For each agent, keep one current record: its tools, each tool's credential and scope, the limits, the autonomy level per action, the owner, and the date of the next review. Changes to the register are approved by a person — an agent may propose a permission change but never approves its own — and every permission can be revoked in one step. This is what lets a buyer, an auditor or a board ask "what can this agent do?" and receive an answer in minutes.

The Security & Trust page puts the commitment simply: every deployed agent receives a role, an identity, approved tools, explicit limits, evaluation criteria and a named Human Wizard. For agents that reach into cloud accounts, the same layers apply at the infrastructure level; Cross-account AWS agent deployments shows how. And the blueprint for deciding tools and permissions in the first place is in The Governed Agent Blueprint.

From reading to building

Have a workflow where this matters?

Tell us about your use case; the Guild shows how operational intelligence and AI agents could help.