Build

Autonomy levels

Five levels, L0 to L4 — dial how much the agent does, per task, from a quick answer to a full agentic run in an isolated branch.

You never hand Excalibur a blank cheque. Autonomy is a visible dial you set per task — from reading and advising up to a fully agentic run that plans, builds, tests, documents and opens a PR. Higher autonomy never means less oversight: every level runs inside the same safety guardrails and pauses at every approval gate.

The five levels

LevelNameWhat the agent may doCommand
L0ReviewRead and critique. No changes.review
L1AssistAnswer and explain with repo context.ask
L2Propose patchGenerate a small, reviewable patch you apply.patch
L3Implement in branchBuild the whole change in an isolated branch.run
L4Full agenticPlan → build → test → document → review, end-to-end.run --careful

Dialing it per task

The level is inferred from intent and shown before anything runs. In the m-shell, the confirmation line lets you bump a turn up or down:

excalibur
rotate the signing keys in the auth service
sensitive path · workflow: security-first · autonomy: L4
this touches secrets — running careful
[Enter] run · [m] modify · [l] lower to L2

As one-shot CLI commands (for scripts and CI):

excalibur ask "how does the retry logic work?"        # L1 — just explain
excalibur patch "fix the off-by-one in pagination"     # L2 — reviewable patch
excalibur run "add rate limiting to /orders"           # L3 — build in a branch
excalibur run "rotate the signing keys" --careful      # L4 — extra caution
excalibur run "…" --level 2                             # force a specific level

Sized, not chosen

For larger work, Excalibur also sizes the swarm itself — it counts the independent subtasks in the plan and runs one agent per subtask, in isolated worktrees, then merges:

excalibur
split the monolith service into orders + billing
sized to 3 agents — 3 independent modules detected
agent 1 · orders+120 −44
agent 2 · billing+98 −31
agent 3 · shared contracts

You never have to pick a number — it's only ever an optional cap:

excalibur run "…" --max-agents 4     # ceiling, not a requirement

Defaults & policy

Excalibur ships at L4 (full agentic) by default; the per-path entries below are how you dial it down on sensitive directories. Set defaults per repo or per path in config.yaml:

# .excalibur/config.yaml
autonomyDefaults:
  default: L4 # the shipped default — dial it down per path
autonomy:
  "src/payments/**": L1 # advise only on the money path
  "infra/**": L0 # read-only on infra

In Enterprise, these caps become server-side policy: a maxAgentsPerRun ceiling, autonomy earned by real outcomes (the Capability Ledger), and budgets that throttle large swarms before they start. See Enterprise.

Next