Question-led guide · implementation
How should an AI agent tool-permission system work?
A concrete authorization design for agent tools using identity, scoped capabilities, argument validation, risk tiers, confirmation, and effect receipts.
Direct answer
An agent should never receive ambient permission to do everything its host application can do. Each tool request must carry an authenticated principal, tenant, intended resource, action, validated arguments, purpose, risk tier, and short-lived authorization. Separate read, propose, simulate, execute, and verify capabilities. The policy engine—not the model—decides whether the request is allowed, requires confirmation, or must be denied. The executor then uses narrowly scoped credentials, an idempotency key, and an auditable effect receipt.
Scope
Use this design for tools that read private data, send messages, modify records, deploy software, spend money, change permissions, or trigger physical or operational effects. Public read-only tools still need rate, tenant, provenance, and data-handling controls, but consequence should determine rigor.
Why it happens
Many agent frameworks expose a list of callable functions and assume that listing a function grants permission. The runtime may hold one long-lived service credential, so every user and task inherits the application’s full reach. Arguments are checked for syntax but not for ownership, current state, business rules, or purpose.
This collapses four separate questions: can the model describe an action, may this principal perform it, should it happen under current conditions, and did the intended effect actually occur?
Diagnosis
Inventory every tool action rather than every tool name. For each action, record:
- principal and delegation chain;
- tenant and target resource;
- data classification and effect severity;
- allowed argument ranges and prohibited combinations;
- credential audience, scope, and lifetime;
- confirmation and separation-of-duty rules;
- idempotency, retry, verification, and recovery behavior;
- telemetry fields and evidence retention.
Flag any tool where the executor accepts free-form model text, uses a cross-tenant credential, or cannot state whether a timeout happened before or after the external commit.
Solution
Define five capability stages: read, propose, simulate, execute, and verify. A run receives only the stages it needs. The model emits a proposal conforming to a strict schema. The application resolves resource identifiers, normalizes arguments, and sends authenticated facts to a policy decision point.
Issue a short-lived capability envelope that binds principal, tenant, resource, action, normalized argument constraints, purpose, expiration, and a unique action identifier. The executor rejects any mismatch and uses a credential whose audience and scope fit only the target service.
For risky actions, require step-up authentication, a second approver, or confirmation showing a deterministic preview. After execution, return a receipt containing provider transaction ID, before-and-after state references, idempotency key, and verification result. A model-generated sentence is not an effect receipt.
Artifact
Apply the permission and effect columns in the Prompt-Injection Control Matrix. The same matrix makes it visible when an untrusted input can influence an overpowered capability.
Common mistakes
- Treating function exposure as authorization.
- Passing one application service token through every user and tenant workflow.
- Checking the tool name but not the target resource or normalized arguments.
- Asking the model to enforce a spending, deletion, or data-access policy stated only in prose.
- Reusing an approval after the resource state or arguments have changed.
- Recording an HTTP 200 response as proof that the intended business effect is correct.
Evidence
Access decisions should not rely on implicit network location or broad ambient trust.
NIST SP 800-207 describes zero trust as resource-focused protection with no implicit trust based solely on location or ownership.
Primary source · standard · checked Aug 25, 2026
Limit: The publication is an architectural model and does not specify an agent-tool token format or complete implementation.
An authorization request can restrict a token to a particular target resource.
RFC 8707 defines resource indicators that let OAuth clients identify the protected resource for an authorization or token request.
Primary source · standard · checked Aug 25, 2026
Limit: Resource indicators alone do not express action-level policy, risk, argument constraints, or confirmation requirements.
A safe tool contract separates model proposals from independently authorized and verified effects.
The Signal Studio capability-envelope pattern binds a proposed action to principal, resource, constraints, expiration, and effect evidence.
Signal Studio author framework · reviewed Aug 25, 2026
Limit: This is an author-created pattern; implementation details must align with the identity provider, tool protocol, and application threat model.
Limitations
This guide is an architecture pattern, not an OAuth profile or complete access-control specification. High-assurance environments need formal threat modeling, credential lifecycle controls, and independent security review.
FAQ
- Can the model decide whether a tool call is authorized?
- It can classify or recommend, but an enforceable policy component must make the decision from authenticated context and validated arguments outside the model's control.
- When is human confirmation useful?
- Use it for high-impact, irreversible, novel, or weakly evidenced actions. Confirmation is meaningful only when the person sees the precise effect and current target state.
Related guides
Continue within Agent security, or use one of these adjacent diagnostics:
English editorial review: Codex native-English editorial review, .
