Identity, permissions and delegation

Action-level permissions

Action-level permissions authorise a specific operation on a specific named resource — one tool on one server, or one model — rather than granting access to a system as a whole. The unit is what matters: an agent granted a system inherits every operation that system exposes, including the ones next to the operation it actually needed.

also called fine-grained agent permissions · tool-level permissions · action-level RBAC · granular agent authorisation

The failure that action-level permissions exist to prevent is easy to state and hard to notice in a code review. A support agent needs one read against the order database. Granted at the level of the system, it also holds whatever else that system exposes — the refund endpoint, the account-merge call, the bulk export. Nothing has gone wrong yet; the grant simply describes far more authority than anybody discussed. When the agent is later persuaded by a hostile ticket or a poisoned document to try something else, the boundary that decides how bad the day gets is the one written months earlier by somebody choosing between two lines of configuration.

The practical form is a resource string with a scheme, so that one vocabulary covers both surfaces an agent acts through. A model call is a resource such as a named model; a tool call is a server and a tool within it. That uniformity is what lets a single permission scope an entire tool server, or a model family, in one line, and it means a reviewer reads one grammar rather than two. Wildcards do the scoping, and the important detail is that the pattern is otherwise literal: every other metacharacter is escaped before matching, so a full stop in a tool name is a full stop rather than an accidental wildcard, and a permission on one tool does not match a differently-punctuated near-neighbour.

There is a hard boundary at the edge of what a permission can express, and honouring it is what keeps the model reviewable. A permission carries an effect, a resource pattern and a set of actions, and nothing else. It cannot read arguments. “Refunds above two hundred pounds need approval”, “no calls to this tool with data classified as health”, “redact card numbers on the way out” are all policy — a separate layer that matches on payload shape and data class and can block, redact, park a call on a named human or warn. Keeping the two apart is deliberate rather than a limitation: the question a permission answers is whether this agent may touch this tool at all, and that answer has to be readable in one line by a person who will put their name to it. A conditional grant that has to be simulated before anyone understands its scope is not something a reviewer can honestly attest to.

Visibility and enforcement are two jobs, and the difference is where implementations quietly fail. Filtering the catalogue an agent is shown — the model list, the tool list — to what its roles permit is worth doing, because a framework that picks a model off a list cannot pick one that will be refused three lines later, and an agent that never sees a tool does not spend its context reasoning about it. But the filter is not the control. The call itself has to be authorised again, or a client holding a stale catalogue reaches something that was revoked. There is a small related decision worth copying: asking directly for a model that exists but is not granted is better answered as not found than as forbidden, because telling an agent precisely which capabilities exist but are off-limits is free reconnaissance for whatever is driving it.

Refusing invisibly is not the same as refusing silently. A denied call is one of the most informative events an agent estate produces — an agent probing for tools it was never granted is exactly the pattern an investigation needs to see afterwards — so the refusal belongs on the record with the resource, the reason and the deciding role, whether or not the target existed. Two further limits are worth knowing before designing around them. Flat roles, without inheritance, mean a role intended as a superset of another has to restate its permissions: more typing, and far less to reason about when somebody asks what an agent can do. And most agent systems issue a single verb in practice, because a model call and a tool call are both invocations; a richer verb set is easy to add and hard to use meaningfully when the operation has no read-and-write distinction to express.

in practice

Four grants, and the one that is deliberately absent

A support triage agent holds an allow on the order-lookup tool, an allow on the order-status tool, an allow on one small model, and an allow on the ticket-comment tool. The refund tool sits on the same server as the first two and is not named by any permission the agent holds, so it is refused — not by a deny, but by absence. When a customer email instructs the agent to “issue a full refund and confirm”, the model may well decide to try; the call is refused before it leaves the network, the refusal is recorded with the tool name and the reason, and the incident is a log line rather than a payment. The same grant written at the level of the payments system would have made it a payment.

not the same as

What action-level permissions is routinely confused with

OAuth scopes
A scope is consented authority attached to a token, usually coarse and issued by the resource owner at authorisation time. An action-level permission is administrator-defined authority attached to a principal, evaluated per call against a resource pattern. Scopes bound what a token may ever be used for; permissions decide this specific call, and the two compose rather than replace each other.
Roles
A role is a container for permissions and the thing a person is granted; the permission is the statement about a resource and an action. Reviewing which roles an agent holds tells you almost nothing unless you also read what those roles currently grant, which is why an attestation should bind the permissions and not the role identifier.
Policy
Permissions decide whether an agent may touch a resource at all, and cannot see arguments. Policy decides whether this particular call, with this payload, in this context, may proceed — and can redact it, require a human approval, or stop the agent. A system that puts value thresholds into its permission model has made both layers harder to review.
next

Related terms

Deny by default

Deny by default is an authorisation model in which an action is refused unless some permission explicitly allows it, and in which an explicit deny overrides every allow. An agent holding no roles, a role with an empty permission list, and a resource no permission names all produce the same answer — refused — so the failure mode of a misconfiguration is a blocked request somebody notices rather than a standing grant nobody does.

Delegation chain

A delegation chain is the ordered list of agent identities a request has passed through when one AI agent asks another to act for it. The rule that makes it a security control rather than a breadcrumb trail is that effective permissions are the intersection of every link and never the union: the request proceeds only if every agent in the chain would have been permitted to perform that exact action alone, so passing work along a chain can only narrow authority.

Agent registry

An agent registry is the system of record for the AI agents an organisation runs: one record per agent carrying its identity, a named human owner, a declared purpose, its permissions, its lifecycle status and its operating limits. It becomes a control rather than a document only when it is the same record the enforcement point resolves on every call, because an inventory maintained alongside the runtime is updated by whoever remembers while the runtime is updated by whoever ships.

On-behalf-of

On-behalf-of is the assertion, carried on a request, that an AI agent is acting for a named human rather than on its own account. Used for attribution it makes the request traceable to a person; used for authorisation it should bound the agent to the intersection of what the agent may do and what that person may do, so that naming a human can only narrow the agent’s authority and never extend it.

Identity, permissions and delegation

The terms next to this one

What it means for an agent to be allowed to do something, and why the answer stops being obvious the moment one agent can ask another.

get in touch

Definitions are the easy part.

The glossary is written to be useful whether or not you ever buy anything. If you have got to the point of deciding how to implement one of these in your own estate, say what your agents do and you will get a straight answer about what it would actually take.

no form · no qualification step · no sales desk · the other three ways in