Skip to content

The autonomy ladder

Autonomy is the answer to one question: when an agent is about to do something in the real world, does it ask you first? CommandChain answers that question per kind of action, not per agent and not once for the whole product.

flowchart TB
L1["L1 approve each action<br/>agent proposes, you approve"]
L2["L2 act, then review<br/>agent acts, you review after"]
L3["L3 act within policy<br/>agent acts, exceptions surface"]
L1 -- "you approve a graduation" --> L2
L2 -- "you approve a graduation" --> L3
L3 -- "incident" --> L2
L2 -- "incident" --> L1
The ladder. Every action class starts at L1 and only moves up with your explicit approval.
  • L1, approve each action. The agent prepares the action and stops. An approval lands in your queue, and nothing happens until you decide.
  • L2, act then review. The agent acts immediately, a review task is created after the fact, and you are notified. You see everything, just not beforehand.
  • L3, act within policy. The agent acts, and only exceptions and threshold breaches come to you.

The unit is an action class, a kind of externally visible act rather than a feature. Drafting content internally is not the same risk as posting to a social account, so they carry separate levels.

Action classWhat it covers
content.draftInternal drafting, not visible outside your workspace
publish.cmsPublishing to a site or content system
publish.socialPosting to a social account
publish.emailSending bulk email
crm.writeWriting to customer records
task.dispatchStarting a run when a task is assigned
task.delegateAgent-created tasks handing work to other agents
proposal.accept.low_riskAccepting low-risk proposals without you
ad.spendSpending money on advertising

Everything externally visible starts at L1. Internal drafting is the one class that starts higher, because a draft nobody outside your workspace can see is not an action you need to pre-approve.

A level applies across your whole workspace. There is one ladder, and every project answers to it.

The Autonomy page, showing the current level for each action class alongside its track record.

ad.spend is hard-locked at L1. It cannot be raised from the page, from the API, or by any graduation, and the refusal is in the code rather than in configuration. No agent spends advertising money without a person approving that specific spend.

Raising a level is earned, and it is yours to grant

Section titled “Raising a level is earned, and it is yours to grant”

The system never promotes itself. What it does is watch the track record for each action class and, when the evidence is there, ask you.

A graduation proposal is only raised when the record clears every bar: at least 20 actions in the class, an approval rate of 95 percent or better, no incidents, all within a 30 day window. The proposal arrives in your approvals queue with that evidence attached, and it is a proposal. Declining it changes nothing.

You can also raise a level yourself, without waiting for a proposal, and you can lower any level at any time. Lowering takes effect immediately.

Trust moves in both directions, and only one direction is automatic.

  • An incident demotes the class one level. Something went wrong, so the class drops a rung without waiting for anyone to intervene.
  • A burst of automatic actions falls back to L1. If a class exceeds its allowed number of unattended actions in a day, it reverts to asking you and records an incident. The default limit is five per class per day.

The record behind all of this is kept per action class: how many actions ran at which level, how many were approved, how many were rejected, and how many became incidents. That record is what a graduation proposal quotes, and it is visible on the Autonomy page.

  • Budgets: the other limit, expressed in money rather than permission.
  • Task types: approval tasks, which are what an L1 action becomes.
  • Using CommandChain: the guides for the approvals queue and setting levels.