Skip to content

CLI reference

Every command-line flag and every slash command in one place, with what each is actually for.


On this page

Everything Arcturn accepts, in one place. The pages linked from each entry are where the reasoning lives; this is the index you come back to when you know the feature exists and want the exact spelling.

Invocation

bash
arcturn                              # interactive TUI in the current directory
arcturn "fix the flaky retry test"   # TUI, seeded with a first prompt
arcturn -p "summarise src/auth.ts"   # run once, print the answer, exit
cat notes.md | arcturn -p            # piped stdin becomes the prompt
cat ctx.txt | arcturn -p "explain"   # piped stdin becomes leading context

With -p and a prompt argument, Arcturn waits briefly for piped input and then proceeds without it. That matters when a parent process — CI, a Makefile, subprocess.run — leaves an inherited stdin open that never closes; waiting for EOF there would hang forever.

Flags

Flag What it does
-p, --print Non-interactive: run to completion, print the final message, exit. A prompt that starts with / runs that slash command instead — arcturn -p "/workflow rag-setup …" runs a pipeline from CI — and exits 0 when it finished, 1 on an error, 2 for an unknown command, and 3 when a workflow stopped for a person (a budget checkpoint, a role's question, or a parked step); the command to run next is printed on stderr
--output-format <fmt> With --print: text (default) or json (NDJSON of every agent event; a refused turn's messageEnd carries stopReason: "refusal" and stopDetails)
-m, --model <id> Model to use — see --list-models and Model providers
-c, --continue Resume the most recent session in this directory
-r, --resume <id> Resume a specific session — see Sessions
--permission-mode <m> default, acceptEdits, plan or yolo — see Permissions
--cwd <dir> Working directory for tools, config and sessions
--no-mcp Do not start any configured MCP servers — see MCP
--max-turns <n> Stop a run after n model turns
--max-cost <usd> Abort the run once it has cost this much — see Cost & audit
--dry-run Send file edits to a shadow copy; review with /diff — see Dry run
--trace Write one JSON line per finished telemetry span to stderr — see Telemetry
--trust-providers Enable provider endpoints declared by this project's config without asking. For CI that already trusts the repository; not saved — see Permissions
--trust-project Run the code this project declares — hooks, verify, extensions, MCP servers — without asking. For CI that already trusts the checkout; not saved (ARCTURN_TRUST_PROJECT=1 does the same) — see Permissions
--no-project-code Run nothing this project declares; everything still parses and lists
--no-providers Register nothing from a config providers block; entries still parse and still list. Both flags apply to serve, acp, mcp-serve and replay as well as to an ordinary run
--list-models Print the model catalog and exit
--list-providers Print every provider and preset endpoint — including the ones your config declares, with their state — and exit
--allow-ceiling-raise With serve: honour a wire resumeWorkflow answer of raise <n> instead of refusing it. A raise spends your own money or turns — off unless you opt in — see Server mode
-h, --help · -v, --version Usage, version

--host, --port and --token apply to arcturn serve; --cassette applies to arcturn bisect, and --record <file> on any run writes the cassette it reads.

--max-cost and --max-turns are the two worth reaching for by default. An agent that loops on a failure it cannot fix spends real money doing it, and a ceiling turns "I checked my bill on Friday" into "the run stopped."

--max-cost can only fire for a model that publishes pricing — a cost Arcturn cannot compute is a cost it cannot compare. Point --max-cost at an unpriced endpoint (Ollama, vLLM, an in-house gateway, anything registered by an extension without a cost) and Arcturn says so at startup rather than letting you believe you are protected; bound those runs with --max-turns instead.

Exit codes

Code Meaning
0 Success — the run completed, or --help/--version/a listing printed. A tool the model asked for may still have been refused: a non-interactive run cannot ask, so it denies, tells the model, and says so on stderr.
1 The run started but did not complete — a provider error, an interrupted run, a ceiling (--max-turns, --max-cost) stopping it early, or the model declining the request (a refusal produces no work; --print also writes arcturn: the model declined this request (cyber). to stderr, category as the provider reported it).
2 Nothing ran — a bad flag, an unknown model, a --cwd that is not there, a session that could not be read, a port already in use, or a command that needs a terminal and did not get one.
3 Stopped for a person: a parked workflow, a budget checkpoint, or a command that needs --yes to proceed headless.

The same table is in arcturn --help.

Subcommands

Command What it does
arcturn mcp add|remove|list|get <name> Manage MCP server declarations — see MCP
arcturn mcp auth <name> · mcp logout <name> Authorize an OAuth MCP server in the browser; delete its stored credentials
arcturn add <source> Install a package of skills, agents, workflows or themes — see Packages
arcturn inspect <source> Stage a package and print what installing it would add; installs nothing
arcturn search [query] Find packages on the hub (arcturn.dev/hub); install one with arcturn add <name>
arcturn packages List installed packages with their pinned commits
arcturn update [name] Re-fetch one package, or all of them; a package pinned to a ref never moves
arcturn remove <name> Uninstall a package, unlinking exactly what it added
arcturn new skill|agent|workflow <name> Scaffold a valid asset file with the frontmatter the parsers require
arcturn mcp-serve Expose Arcturn as an MCP server — see MCP server
arcturn serve WebSocket server over the NDJSON protocol — see Server mode
arcturn completions <shell> Print a bash, zsh or fish completion script
arcturn trust [--list|--allow|--deny|--revoke] Show or decide whether this project's declared code runs — see Permissions
arcturn doctor [preset] Probe each configured provider endpoint with its real key (a one-token completion) and print a per-endpoint verdict — auth failed, no balance, rate limited, network. An endpoint declared by a project config you have not approved is reported not enabled and never probed. The config section also prints how the session model keeps its history append-only, each with the reason it was chosen: compaction (the shape), context editing (the mode, or off) and, when set, thinking binding — with a warning where a configured server-side shape cannot run on that model. See Context management
arcturn insights [--since <w>] [--workflow <name>] [--json] [--share] What has been going wrong locally — parks, silent turns, step failures, slow roles — from ~/.arcturn/insights. --share prints a markdown block and a pre-filled issue link and sends nothing. See Insights
arcturn brain [build|status|show] [--full] [--from-run <runId>] Build or inspect the distilled repository map every agent reads. build re-distils only the directories whose content changed (--full does all of them); status reports what is indexed and what is stale; show prints the block that goes into the prompt. See Project brain
arcturn retro <runId> [--apply] [--yes] [--json] Propose a patch to a kit's role prompts / workflow stages from one run's journal and insights, as a diff you approve. --apply lands it after validation; --yes is required to apply non-interactively. See Retro
arcturn skill synthesize <runId> [--name x] [--scope user|project] [--yes] [--force] [--share] [--json] Draft a reusable SKILL.md from a finished workflow run's journal; previews unless --yes. --share prints the proposal link for the draft either way (a preview says plainly that nothing was saved). See Synthesizing a skill from a run
arcturn blame · arcturn replay · arcturn bisect Provenance and replay — see Provenance and Replay & bisect

arcturn add never links a package's executable code without being told to. A package carrying extensions/ stops for a per-install confirmation that names the files, and off a TTY — CI, a pipe, a script — it declines rather than assuming consent. --yes is how you grant that consent up front, and --skills-only is how you take the package's markdown and leave its code on disk unlinked. arcturn inspect is the same resolver with the linking taken out: it prints the agent lanes, workflow budgets and executable files an install would add, and adds none of them — run it before you reach for --yes.

A bare name — arcturn add starter-skills, arcturn inspect starter-skills — is looked up in the hub's index.json first, printed as resolving "starter-skills" via the hub → …, and then handled exactly as if you had typed the source it resolved to: same resolver, same confirmation, same --yes. arcturn search [query] lists what is there to be named.

Slash commands

Typed inside the interactive TUI.

Session and context

Command What it does
/help List the available commands
/clear Start a fresh session
/compact Summarise the conversation to free up context — see Context management
/sessions Resume an earlier session in this directory, listed by generated title — see Sessions
/rewind Restore to an earlier turn; /rewind <query> jumps by intent — see Checkpoints
/copy Copy the last answer to the clipboard; /copy all for the conversation
/export Export the conversation to markdown or HTML
/todos Show the current todo list
/exit Quit Arcturn

/rewind restores files and forks the conversation, rather than truncating it. The session is a tree, so the branch you rewound away from is still there.

Models, cost and appearance

Command What it does
/model Switch the model — the pick persists as your default; /model refresh re-queries each provider's own list; /model route shows the per-role routes and /model route --auto routes sub-agents and compaction to a cheaper same-provider model — see Model routing
/cost Show usage and cost; also limit <usd>, preview [steps]
/theme Switch the colour theme
/ui Switch the renderer: screen (full-screen app, default) or inline (terminal-native)
/permissions Show rules and mode; also suggest
/trust Show or decide whether this project's declared code runs; also allow, deny, revoke
/mcp Show MCP server status
/stats Session insights: cost, tokens, cache and tool usage; also --all, --since <window>, --json

Changes

Command What it does
/diff Show pending dry-run changes
/apply Apply pending dry-run changes to the workspace
/discard Throw away pending dry-run changes
/commit Commit staged changes: /commit [message] (generated from the diff if omitted)
/pr Push this branch and open a pull request: /pr [title]
/review Review a diff: /review [staged|<branch>|<range>|<PR#>]

These three are the dry-run loop: with --dry-run, edits land in a shadow copy until you have read them.

Packages

Command What it does
/add <source> Install a package: /add <source> [--name x] [--skills-only] — see Packages
/packages List installed packages
/remove <name> Uninstall a package
/update [name] Re-fetch a package, or every one of them

The same four operations as arcturn add|packages|remove|update, against the same ~/.arcturn/packages and the same fail-closed confirmation for executable code. The shell verbs exist so an install can happen in CI or a setup script; the slash commands exist so it can happen without leaving a session.

Delegation

Command What it does
/bg <task> Run a task in the background; /bg, logs|cancel|adopt <id> — see Teams
/team <goal> Run a team of agents on one goal; status|cancel|merge|discard [id]
/scout <a> | <b> Explore approaches in parallel worktrees — see Scouts
/workflow <name> [args] Run a scripted multi-step workflow — see Workflows
/workflow list List discovered workflows
/workflow status [runId] What a run reached, its spend and turns, and why it stopped
/workflow resume <runId> [answer] Re-enter an interrupted run, or answer what it parked on: an ORG-ASK: (free text), a budget checkpoint (continue / raise <n>), or a failed step (retry / abandon / raise <n>)
/workflow forecast <name> [--json] Predict duration, cost, tokens and stop risk per stage for the next run, from the local insights ledger
/workflow fork <runId> --at <stepId> [--revert] [--model <tag>] [--raise <n>] [--input <text>] Start a new run that reuses every stage the old one finished before --at, then continues; --revert first undoes the source run's work from --at onwards in your checkout
/workflow diff <runA> <runB> [--json] Compare two runs stage by stage: status, attempts, turns, writes, duration, cost, model, race winner
/brain [build|status|show] [--full] [--from-run <runId>] The project map every agent reads: build it, see what is stale, or print the injected block — see Project brain
/insights [--since <w>] [--workflow <name>] [--json] [--share] Across runs: which step keeps parking, which model keeps going quiet, what runs cost — see Insights
/retro <runId> [--apply] [--yes] Propose a patch to this run's kit prompts/stages from its journal — see Retro
/skills synthesize <runId> [--name x] [--scope user|project] [--force] [--share] Draft a reusable skill from a finished workflow run, with a picker instead of --yes — see Synthesizing a skill from a run
/org memory Inspect per-role lessons injected into later runs — see Agent organizations
/org memory add|propose|approve|revoke|rm Edit that store

The distinction between /bg, /team, /scout and /workflow is what each is for: /bg is one task off-thread, /team is several agents on one goal with a merge step, /scout is competing approaches you pick between, and /workflow is a scripted pipeline whose shape you decided in advance. Teams compares the first three; Workflows covers the last.

/org memory entries are inert until a person approves them — a proposed entry is never injected into a role's prompt. That gate exists because a memory entry becomes standing instruction text in later runs, which is not something a model should be able to grant itself.

That gate is why arcturn serve exposes /org memory in three parts and not four: a remote client can read the store, propose an entry and revoke or delete one, and there is no verb that approves. An engine cannot tell a frame a person clicked from a frame an agent sent, and add is live precisely because you typed it. /bg is reachable in full; /team and /scout are not reachable at all. See Server mode and Teams.

  • Getting started — installation and first run
  • Packages — what add, inspect, update and remove install, and the gate that stands in front of executable code
  • Configuration — everything settable in .arcturn/config.json
  • Model providers — every backend, credentials, and which are verified live
  • Permissions — what each --permission-mode actually grants