Docs · Guides
Autonomy levels L0 to L5
LiveUpdated
Agents. Written for people who build agents, the hosts they run in, and the people and companies the agents pay for.
“How much can the agent pay by itself” is answered by every product in its own words. Enruta names the levels and shows the label on every policy, so a buyer without a payments background sees what the extra step buys.
| Level | Meaning | Policy fields | Example |
|---|---|---|---|
| L0, a person every time | Every payment needs a click | approval.threshold: "0.00" (or an approval rule with no threshold) | A spend request the person confirms one by one |
| L1, a single limit | One cap, no other rule | limits.per_payment only; no payees, no approval | A monthly allowance |
| L2, a locked target | Merchant, category, frequency and time fixed in advance | mode: specified with a payee | “One night in Shanghai next Wednesday, under $300” |
| L3, autonomous inside the boundary, a person beyond it | A policy, a human gate, a record | mode: bounded_stepup (the default) with an approval rule | “Office supplies, $200 a payment, a person above $150” |
| L4, autonomous for the scene | Every task inside the preset scope, nobody in the loop | mode: bounded without an approval rule | “Verified suppliers, $5,000 a payment, $50,000 a month” |
| L5, no boundary | Not offered | Nobody runs this in production |
autonomyLevel(policy) in @enruta/policy computes the label from those fields; the console shows it at the top of every policy page (“This policy is L3: autonomous inside the boundary, a person approves beyond it”). One company can run three agents at three levels in one console: a travel agent at L2, a procurement agent at L3, an accounts-payable agent for verified suppliers at L4.
Only L3 has a verifiable approval
An approval at L3 is an event with a signature bound to a request hash. A tool confirmation in a chat, the “Allow once” button a host shows before a tool call, is not a level at all: it has no amount, no payee, no expiry and no signature. Those four fields are the line between a mandate and a UI confirmation, and the risk assessment does not count confirmations as input.
Related fields
| Field | Effect on the level |
|---|---|
shadow: true | Any level runs in shadow mode: decisions become observe and nothing is enforced |
require_consent | Adds a consent record as a precondition at any level |
deviation{tolerance, action} | How far a delivered price may move from the requested one before the agent pauses or cancels |
reversal{window_days, step_up_above} | Refunds have their own gate: above the amount a person signs |
intent, identity_requirements, payee_identity | What a request must say, which anchors an amount needs, and whether the merchant must be verified, at any level (trust model) |