Skip to content

Build master @ bc50cd5bunreleased — 31 commits past v1.282.0Last reviewed Last changed Grade fresh (aging >90d, stale >180d)Source / History

Warp-drive state-machine flags ​

Every subcommand and flag state-machine.js accepts is declared once in scripts/warp-drive/flags.json (warp-flags/1, #2085). parseFlagArg resolves through that table — reading an undeclared flag throws — and an undeclared flag on the command line is refused with exit 2. --help or -h anywhere prints the table instead of running the subcommand; bob warp --help appends the same text. What the phases and transitions mean: Warp-Drive State Reference. What the kickoff flags do to a run: Kickoff Flags.

bash
node state-machine.js <subcommand> <project-root> [args] [flags]
node state-machine.js --help [<subcommand>] [--json]

Subcommands ​

21 subcommands, 37 flags — generated from the flag registry.

SubcommandArgumentsFlagsPurpose
init<project-root>14Create a new session and transition to prerequisites; refuses while a live, non-stale session exists.
inject<project-root>2Print the resumed phase context for the SessionStart hook and re-anchor identity to this segment (exit 2 = no session).
transition<project-root> <event>1Fire <event> from the current phase; an event the phase does not allow is refused (exit 1).
gate<project-root> <operation>1Is <operation> (e.g. git_commit) allowed in the current phase?
verify<project-root> <event>0Run the verification gates declared for <event> (e.g. code_complete).
status<project-root>1Print the current state as JSON (exit 2 = no session).
graph[<project-root>]0Print the static phase/transition topology; the project root is optional.
declared<project-root>2List the declared automatic behaviours and whether each hook is present and wired (exit 3 = a promise cannot be kept, #1834).
preflight<project-root>1Run the preflight gate and let the engine fire preflight_ok / preflight_failed (preflight phase only, #1923).
budget-decision<project-root>0L4 bounded auto-continue verdict for a budget_exceeded halt (exit 0 = may continue, 3 = halt, #873).
forge-check<project-root>1Read the forge signal (probing it), record degraded mode on state.forge, and resume a run parked on the forge once it is operational (exit 0 = normal or resumed, 3 = degraded or still parked, #1751).
segment-decision<project-root>0Should the run segment at this awaiting_continue boundary? (exit 0 = segment, 3 = keep going, #870).
checkpoint<project-root>2Record a segmentation checkpoint at awaiting_continue; keeps state and phase, refuses over in-flight work (#2037).
record-decision<project-root>4Append an auto-decision to state.decisions[] and count it against max_auto_decisions (#876).
record-sync<project-root>2Record a stream-freshness sync result on state.stream_sync (#1178).
decisions-digest<project-root>0Print the session-end decisions digest (markdown) from state.decisions[] (#877).
decisions<project-root>1Print the auto-decision log as JSON; the unreviewed window by default (#876).
abort<project-root>1Shorthand for transition <project-root> abort.
reset<project-root>0Delete the state file immediately — no cleanup.
configget <key> | list | keys3The _workflow config table as a CLI (#2041); takes --cwd, not a positional project root. An undeclared key is refused (exit 2).
help[<subcommand>]1Print this table; also answered by --help or -h anywhere on the command line (#2085).

Flags by subcommand ​

A flag whose parser is kickoff.js is read by the kickoff parser that init embeds (#872); every other flag is read by state-machine.js itself.

init ​

FlagTypeDefaultParserMeaning
--levelint2state-machine.jsAutomation level (1-4) when -f/--factor is absent.
--issuestring—kickoff.jsIssue scope: one issue number or a comma-separated list (#992); the run never widens beyond it.
--requirementstring—state-machine.jsLegacy requirement reference recorded on session.requirement.
--pidintthe caller's parent pidstate-machine.jsThe Claude Code REPL pid that owns the session (pass $PPID).
--session-idstring$CLAUDE_CODE_SESSION_IDstate-machine.jsThe Claude session that owns the run, recorded on session.session_id (#2275); the commit gate and stop hook compare hook payloads against it.
--work-typereq | bug | taskreqstate-machine.jsbug selects the bug-fix loop semantics (#518), task the maintenance loop whose DoD is the issue's Verification checklist (#1959); anything else is a requirement.
--factor, -f, factorint—kickoff.jsAutomation level for the run (1-4); wins over --level (#872).
--timeoutint—kickoff.jsDecision-response timeout in minutes; 0 = work around or stop.
--ceilingpr | external | test | prod—kickoff.jsPromotion ceiling — the run never deploys past it.
--budgetnumber—kickoff.jsSession cost ceiling in USD, enforced by the session breaker.
--max-tokensint—kickoff.jsSession token ceiling, enforced by the session breaker.
--areastring—kickoff.jsArea scope: restrict discovery to one area:<slug> workstream.
--flightplanint—kickoff.jsFlight-plan scope: consume plan issue <N> in order (#1068); lifecycle-gated at kickoff (#1667); a plan waiting on a predecessor ends init cleanly with a note, no run (#2298).
--dry-runboolfalsekickoff.jsPre-flight only: pre-classify decisions and emit TODOs, author nothing (#878).

inject ​

FlagTypeDefaultParserMeaning
--pidintthe caller's parent pidstate-machine.jsThe resumed segment's REPL pid (the inject hook passes $CLAUDE_PID when the harness exports it, else $PPID).
--session-idstring—state-machine.jsThe starting session's id (hook payload session_id). A session that may not take the run over — another live owner, no pending checkpoint handoff — gets a one-line advisory and re-anchors nothing (#2275).

transition ​

FlagTypeDefaultParserMeaning
--datajson{}state-machine.jsJSON object merged into state for this transition (issue, branch, check_result, …).

gate ​

FlagTypeDefaultParserMeaning
--session-idstring—state-machine.jsThe calling session (hook payload session_id). A run another session owns passes with foreign: true and a one-line advisory naming its phase (#2275).

status ​

FlagTypeDefaultParserMeaning
--session-idstring—state-machine.jsThe calling session; adds owned_by_caller and ownership_basis to the output (#2275).

declared ​

FlagTypeDefaultParserMeaning
--jsonboolfalsestate-machine.jsPrint the rows as JSON instead of a table.
--bob-homepath$BOB_HOME or ~/.claudestate-machine.jsThe BOB_HOME to inspect for hooks and settings.json.

preflight ​

FlagTypeDefaultParserMeaning
--convergeboolfalsestate-machine.jsApply the idempotent bob ready steps first, then re-check; kickoff-only (#1997).

forge-check ​

FlagTypeDefaultParserMeaning
--no-probeboolfalsestate-machine.jsRead only the observations the gh shim recorded; never issue a probe call.

checkpoint ​

FlagTypeDefaultParserMeaning
--datajson{}state-machine.jsJSON object; reason is recorded on the checkpoint.
--reasonstring—state-machine.jsCheckpoint reason when --data carries none.

record-decision ​

FlagTypeDefaultParserMeaning
--datajson{}state-machine.jsJSON object carrying description, url and category.
--descriptionstring—state-machine.jsWhat was decided (required unless --data carries it).
--urlstring—state-machine.jsLink to the decision record.
--categorystring—state-machine.jsDecision category (reversibility class).

record-sync ​

FlagTypeDefaultParserMeaning
--statusstringunknownstate-machine.jsSync outcome (noop, synced, conflict, …).
--detailstring""state-machine.jsFree-text detail for the sync record.

decisions ​

FlagTypeDefaultParserMeaning
--allboolfalsestate-machine.jsShow the full session history, reviewed decisions included.

abort ​

FlagTypeDefaultParserMeaning
--datajson{}state-machine.jsJSON object merged into state for the abort transition.

config ​

FlagTypeDefaultParserMeaning
--cwdpaththe current directorystate-machine.jsProject root whose manifest and settings.local.json layers are resolved.
--jsonboolfalsestate-machine.jsPrint the resolved value (or every key) as JSON.
--sourcesboolfalsestate-machine.jsconfig list: also print the layer each value came from - default | fleet-manifest | manifest | settings (#2703).

help ​

FlagTypeDefaultParserMeaning
--jsonboolfalsestate-machine.jsPrint the table as a warp-flags/1 document.

Subcommands that take no flags: verify, graph, budget-decision, segment-decision, decisions-digest, reset.