Skip to content
professional

AI Agent Permissions: Designing Action Boundaries Before Automation

An agent with legitimate access to a folder can still write four thousand files somewhere it should not, and every access check will pass.

Published 2026-09-10Updated 2026-09-1214 min read
A classic brass oil lamp with a chain, reminiscent of Aladdin's lamp, on a wooden surface.
A classic brass oil lamp with a chain, reminiscent of Aladdin's lamp, on a wooden surface. Photo by Boris Hamer on Pexels.
8sources checked
7source domains
6searches run

Research updated Sep 10, 2026

An agent with legitimate access to a folder can still write four thousand files somewhere it should not, and every access check will pass.

That sentence is the whole problem in miniature. Traditional permissions answer a narrow question: may this identity touch this resource? Agents force a different question: should this action happen, at this step, under this task, right now? Those are not the same question, and the gap between them is where consequential failures live.

If you are about to hand an agent write access to a real system — a repository, a mailbox, a payment rail, a production database — the work in front of you is not "pick the right scopes." It is designing four separate control surfaces before the first consequential action ships: scope, gate, trace, undo. This article is a design method for all four, written for people who already understand how agents plan and call tools and who now need to bound what those calls can do.

Why Standing Access Grants Are the Wrong Unit

Close-up of a futuristic toy robot with blue eyes, showcasing modern technology indoors.
Close-up of a futuristic toy robot with blue eyes, showcasing modern technology indoors. Photo by Pavel Danilyuk on Pexels.

You already know the mechanics: an LLM plans, selects a tool, emits arguments, observes a result, and loops. I will not re-teach that here. The relevant fact is that this loop terminates in real API calls against real systems, and the systems receiving those calls were designed around a very different actor.

Conventional access control was built to answer a resource question: does this identity hold a grant to this folder, table, or endpoint? That model already handles service accounts, scheduled jobs, and high-volume machine actions. What it does not express is the thing agents actually need bounded — the task, the step, the intent, and the behavioral shape of the action. A standing grant says an agent may write to a finance folder. It says nothing about whether writing four thousand files to a new location is a legitimate step in the task the agent was given.

Two agent-specific properties widen that gap. First, instructions and data are conflated in the same context window, which is what makes prompt injection possible: text the agent reads can arrive dressed as text the agent was told to obey. Second, LLM behavior is nondeterministic. The same instruction can produce different action sequences on different runs, which means a permissions system must enforce a consistent policy over a set of possible actions it cannot enumerate in advance. Neither property makes traditional access control obsolete. Both make the missing layer — task- and action-bounded enforcement — load-bearing.

The practical consequence is blunt: "the agent had access" is not a security argument. It never was, but with a human actor you could at least appeal to judgment and review. With an agent, the unit of control has to shift from standing grants to bounded, per-task grants — permissions that exist for the duration of a task and die with it.

The Four Boundaries: Scope, Gate, Trace, Undo

Before the details, here is the organizing model. Every control you design for an agent maps to one of four boundaries.

Scope is what the agent can reach and do, at what granularity, for how long. Gate is which actions require a human decision, and what that human actually sees when deciding. Trace is what gets recorded so a failure can be reconstructed afterward. Undo is what can be reversed, how fast, and what is permanently irreversible.

The design rule that matters: each boundary is a separate control surface with its own failure mode. Strength in one does not compensate for weakness in another. A perfectly scoped agent with no audit trail leaves you unable to explain what happened. A beautifully logged agent with no gate will produce a complete, well-documented account of the damage.

And note the asymmetry. Scope, gate, and trace all operate before or during the action. Undo is the only boundary that works after the other three have already failed. That is why it deserves design attention rather than a footnote at the end of a deployment doc.

Scoping Tool Access to the Task, Not the Account

Least privilege is easy to say and hard to practice, because the honest version is inconvenient: an agent that needs two tools for one step should hold two tools for that step — not the account's full toolset, not a long-lived credential, not a broad OAuth grant that happens to include what it needs.

The scoping levers are familiar from other systems, but they compose differently for agents:

  • Dedicated sub-accounts or sandboxed identities. Give the agent its own identity rather than borrowing a human's. This is the single highest-leverage move, because it makes revocation a real operation instead of an archaeology project.
  • Per-task credential issuance. Credentials that exist for the duration of a task and expire. Time-bounded tokens turn a permanent grant into a temporary one.
  • Tool allowlists. Explicit enumeration of callable tools, not a default-open toolset.
  • Resource-level restrictions. Read-only where reading suffices, a single folder instead of a drive, no withdrawal capability on a financial account.

The security-usability tradeoff is real, and it gets worse with agents rather than better. Research on agent permissions systems describes the mechanism plainly: users overwhelmed by permission decisions tend to over-grant, a pattern long documented as privacy fatigue. Automatically granted permissions and trusted UI elements avoid the interruption, but they cost transparency and least privilege. The difference now is what a broad grant means. When a human over-grants, a human holds the excess. When you over-grant to an agent, an autonomous actor holds it — and it will use that grant at machine speed, at machine volume, without pausing to wonder whether it should.

Vendor claims deserve scrutiny here. Several platforms now advertise granular agent controls, and some of that is real. But the enforcement point varies: some enforce at the account layer, some at the tool layer, some only as a model-level guardrail that the model itself can be argued out of. Ask where the check actually executes. A settings menu is not an enforcement point.

Decision rule: if you cannot name the exact resource and the exact verb the agent needs for the next step, the scope is too broad. "It might need to read files" is not a scope. "Read /invoices/2026-Q1/*.pdf, no writes, token expires in fifteen minutes" is a scope.

Approval Gates That Do Not Become Rubber Stamps

A gate is a human decision point. Most gates fail not because they are missing but because they are decorative.

Start by tiering actions along two axes: reversibility and blast radius. A workable three-tier split looks like this. Fully autonomous for actions that are reversible, bounded, logged, and free of untrusted input, where a mistake is cheap. Monitored for actions paired with alerting and rollback that can catch and undo a problem in flight. Always human for irreversible or high-volume destructive actions — deleting a large set of files, wiping a primary folder, moving money out.

Each team has to calibrate those lines against its own risk tolerance. The tiers are not the hard part. The hard part is the interface.

The rubber-stamp failure mode is predictable: an approval prompt that shows a tool name and a yes/no button trains the operator to click through. After the twentieth prompt, the human is a latency source, not a control. Approval has to surface the concrete action, the target, and the scope of effect — what will change, where, and how much — or it is theater with extra steps.

A second pattern deserves its own warning. Auto-review by a second model is a different control with different failure modes, not a stronger version of a human gate. It can be more permissive than a human reviewer, and it is harder to audit because the approval decision itself is a model output. Treat it as a filter that reduces volume, not as a gate that carries accountability.

Guardrails also fail in the restrictive direction, and teams routinely forget to plan for it. Research on commercial agent permissions systems documents cases where a model-level safety check blocked a legitimate task the agent was correctly attempting. That is a reliability cost, not a security win, and it belongs in your failure budget alongside the permissive failures.

Decision rule: a gate earns its place only if the reviewer has enough context to say no and the authority to be wrong. If the reviewer cannot tell what they are approving, you have built a click-through, not a checkpoint.

Audit Trails: Reconstructing What the Agent Actually Did

When an agent does something wrong, you will want to answer four questions: what changed, when, under whose authority, and what triggered it. If your logs cannot answer those without re-running the agent, you do not have an audit trail. You have a rumor.

Log the action, not just the outcome. At minimum: the tool invoked, the arguments passed, the target resource, the timestamp, the initiating task, and the identity under which the call executed. That last field is easy to omit and expensive to reconstruct later, because it is the one that tells you which credential to revoke.

Be honest about what is not observable. Reasoning traces are often unavailable or partial. In at least one documented platform design, the reasoning behind an agent's action happens outside the platform's systems entirely — on the user's machine or inside a third-party application — so the platform can see the resulting activity but not why the decision was made. Plan for action-level auditability even when intent-level auditability is missing. You will rarely get to know why. You can usually arrange to know what, provided the integration actually exposes arguments, targets, and identity — and you should verify that it does before you rely on it.

Keep three categories separate when you write incident notes. What is directly known: the call and its result. What is inferred: the likely cause, stated as inference. What remains unresolved: the part you cannot currently explain. Collapsing these three into one confident narrative is how postmortems become fiction.

Audit logs are also the input to evaluation and incident review. Without them, every failure becomes archaeology — you dig, you find fragments, you argue about what they mean. The minimum viable trail is enough to answer the four questions above without re-running the agent, because re-running a nondeterministic system does not reproduce the failure. It produces a new one.

Rollback and Recovery: Designing for the Bad Run

Assume the bad run happens. The only question is what it costs.

Classify every tool by reversibility before granting it, not after the first incident:

  • Reversible. Draft, stage, copy, create in a sandbox. Undo is a delete.
  • Compensable. Send, post, notify. Undoable only with a second action that may itself have side effects — you can send a correction, but you cannot unsend the original.
  • Irreversible. Delete, transfer, publish, external API calls with side effects. There is no undo. There is only the gate in front of it.

The highest-leverage design move is converting irreversible actions into reviewable ones. Prefer staging over direct mutation: write to a staging area, diff, then commit. This single pattern moves a large class of actions from "irreversible" to "reversible with a review step," and it is worth restructuring a workflow to get it.

Where you cannot stage, bound the blast radius. Caps on volume, rate, and value per window limit the damage even when the action itself cannot be undone. A subaccount funded with a fixed amount is a blast-radius limit expressed as an account balance — the amount you transfer in caps the direct funds exposed inside that account, though it does not account for indirect losses, fees, or actions taken outside the subaccount boundary. That is a crude control, but crude and enforced beats elegant and aspirational.

Recovery needs a trigger, not just a capability. A rollback path nobody invokes is documentation, not a control. Pair it with alerting that fires on anomalous volume or an unexpected target, and a documented kill path that stops the agent mid-run. Test the kill path. An untested kill switch is a belief.

And the honest boundary: some actions cannot be rolled back. For those, the gate in front of them is the only real control you have. Design accordingly.

Turning the Four Boundaries into a Deployment Decision

The four boundaries tell you what to build. They do not, by themselves, tell you which tier a given action belongs in when the properties conflict — a reversible action with a huge blast radius, or a low-volume action fed by untrusted input. Use this sequence to resolve those cases before you write the tier assignment.

  1. Is the action reversible? If no, it is human-gated. Stop here.
  2. Is the input trusted? If the action consumes external content, user-supplied text, or anything an attacker could shape, treat it as untrusted and gate it regardless of reversibility.
  3. What is the blast radius? Volume, value, and number of affected resources. Large blast radius pushes the action toward monitored or gated even when it is technically reversible.
  4. Is the action observable? If you cannot log the arguments, target, and identity, you cannot monitor it, so it cannot sit in the monitored tier. Unobservable actions default to gated.
  5. Only then assign autonomous. An action earns autonomy when it is reversible, fed by trusted input, bounded in blast radius, and fully observable.

The order matters. Reversibility and input trust are hard constraints; blast radius and observability are tunable. When a case is ambiguous, move it one tier toward more oversight and revisit after you have real telemetry.

A Pre-Deployment Checklist for Consequential Agents

Run this against a real deployment before it takes its first consequential action.

  1. Enumerate every tool the agent can call and label each by reversibility and blast radius.
  2. For each tool, state the minimum scope, the credential lifetime, and the enforcement point. If you cannot name where the check executes, you do not have a control.
  3. Assign each action to a tier — autonomous, monitored, or human-gated — using the decision sequence above, and write down the criterion, not just the assignment. Criteria survive personnel changes; assignments do not.
  4. Confirm the audit record captures action, arguments, target, identity, and trigger.
  5. Define the anomaly signal that triggers review and the kill path that stops execution.
  6. Name the actions that cannot be undone and confirm they sit behind a gate.
  7. Re-test after revocation. Remove a permission, then ask the agent to attempt the action that required it. The only way to find your enforcement gaps is to try to walk through the wall you built.

That last item is the one teams skip. Revocation that does not revoke is worse than no revocation, because it produces false confidence in exactly the moment you need real confidence.

What to Watch, and What Remains Unsettled

Three questions are genuinely open, and the answers change what you have to build yourself.

Where does enforcement belong? Platform, agent framework, or tool layer — current implementations disagree, and the disagreement is not academic. If enforcement lives in the platform, you inherit it and you are bounded by it. If it lives in your framework, you own the correctness. If it lives in the tool, you own the integration. Until the industry settles, assume you own more of it than the marketing implies.

How much of the security-usability tradeoff can better interfaces actually resolve? Some of it, probably. Not all of it. At some point operators have to accept friction, and the design question is where that friction buys the most safety per unit of annoyance. My instinct: spend the friction on irreversible actions and buy it back everywhere else.

What counts as a real signal? Enforcement that is claimed but not testable is not a control. The useful signals are a documented revocation path and a visible audit record. A settings menu is neither.

The next capability worth building is not another agent feature. It is the observability and evaluation layer that makes agent behavior inspectable — because permissions design is only as good as your ability to see what the agent actually did. You cannot scope, gate, or roll back what you cannot observe.

Which brings the argument back to where it started. Boundaries are designed before automation, not after. Retrofitting scope, gates, and rollback onto a running agent means rebuilding the workflow, not tightening a setting. And for the actions that cannot be undone, the gate is the only control you will ever have — so put it there first, before the automation earns the right to run.

Related analysis

Related AI trend reports

Continue with nearby AI trends, ecosystem shifts, and practical implications.