car-runtime 0.55.0 → 0.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/CLI.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  > **Generated file — do not hand-edit below the task map.** Produced by
4
4
  > `scripts/gen-cli-docs.sh` from `car --help` / `car help <command>` on car
5
- > 0.54.0 (2026-09-19). Every subcommand the installed binary reports is
5
+ > 0.55.0 (2026-09-24). Every subcommand the installed binary reports is
6
6
  > below; a new subcommand cannot ship without appearing here the next time
7
7
  > this script runs. To regenerate: `bash scripts/gen-cli-docs.sh`.
8
8
  >
9
- > 74 top-level commands, 123 nested subcommands
9
+ > 74 top-level commands, 124 nested subcommands
10
10
  > (one level deep) — counted from the live binary at generation time, not
11
11
  > typed by hand.
12
12
 
@@ -50,8 +50,7 @@ Delivered revisions remain available as the base for follow-up conversation task
50
50
  the verifiable outcome contract, and CAR delivers it in an isolated git
51
51
  worktree (natively or via an installed frontier CLI). Apply reviewed results
52
52
  to your checkout, preserving HEAD and the staged index, or explicitly request
53
- `--delivery branch` to publish a result branch — which is also what `--yes`
54
- defaults to, so an unattended run never writes into your checkout.
53
+ `--delivery branch` to publish a result branch.
55
54
  - [`car code-task`](#car-code-task) — run a coder session headlessly and in
56
55
  this process, driving to a green outcome contract and delivering a PR.
57
56
  - [`car coder-ab`](#car-coder-ab) — A/B-test CAR's coder against an external
@@ -184,7 +183,7 @@ commands on a cadence via launchd / cron / schtasks).
184
183
  | [`car tools`](#car-tools) | Invoke CAR's built-in runtime tools directly, in-process and without a daemon |
185
184
  | [`car code-task`](#car-code-task) | Run a coder session headlessly and IN THIS PROCESS: derive or accept an outcome contract, work in a git worktree until the runtime's own re-run of that contract is green, then deliver the result as a pull request |
186
185
  | [`car coder-ab`](#car-coder-ab) | A/B-test CAR's coder against an external agent (Codex / Claude Code) over a corpus, and grow that corpus from git history — the productionized dogfooding loop (docs/proposals/coder-ab-dogfood.md) |
187
- | [`car keys`](#car-keys) | Store cloud-provider API keys in the OS keychain, so a native-app user never sets an environment variable (docs/proposals/native-secrets-no-env.md). The key is read env-first, keychain-fallback by the runtime |
186
+ | [`car keys`](#car-keys) | Store cloud-provider API keys in the OS keychain, so a native-app user never sets an environment variable (docs/proposals/native-secrets-no-env.md). Runtime reads process env first, then `$CAR_HOME/env`, then keychain |
188
187
  | [`car heal`](#car-heal) | Inspect and operate the daemon's self-healing REPAIR loop: it reads a configured issue tracker, runs a coder session, gates the result on a multi-model panel, and opens a pull request. It never merges |
189
188
  | [`car selfheal`](#car-selfheal) | Inspect and operate the daemon's deterministic self-healing detector |
190
189
  | [`car daemon`](#car-daemon) | Start the daemon server (delegates to car-server binary) |
@@ -201,10 +200,10 @@ commands on a cadence via launchd / cron / schtasks).
201
200
  | [`car identity`](#car-identity) | Show or change the name your assistant answers to — in conversation, in the host apps, and as its voice wake word |
202
201
  | [`car init`](#car-init) | Initialize a .car/ project directory for team-shared configuration |
203
202
  | [`car doctor`](#car-doctor) | Diagnose (and optionally repair) a CAR install: corrupt model weights, unparseable `~/.car` state files, version skew, and leftover files from a previous install. Runs entirely against the local filesystem — no daemon required, so it works even when `car-server` won't start |
204
- | [`car feedback`](#car-feedback) | Report a problem to Parslee. Captures a redacted diagnostic bundle (your description, the `car doctor` report, bounded log tails, and a version stamp) into the local outbox at `~/.car/feedback-outbox` — nothing is uploaded by this command; queued reports send when CAR can reach Parslee. Works with the daemon down, like `car doctor`. macOS-only in this release |
203
+ | [`car feedback`](#car-feedback) | Report a problem to Parslee. Captures a redacted diagnostic bundle (your description, the `car doctor` report, bounded log tails, and a version stamp) into the local outbox at `~/.car/feedback-outbox` — nothing is uploaded by this command; queued reports send when CAR can reach Parslee. Works with the daemon down, like `car doctor`. macOS and Windows; Linux needs its own leak-path audit first |
205
204
  | [`car update`](#car-update) | Update the locally-installed `car` CLI and its sibling `car-server` daemon to the latest release (or `--version <X.Y.Z>`), in place — regardless of how they were installed. Reconciles the drift that otherwise builds up when one channel updates and another doesn't (e.g. CarHost.app auto-updates its bundled daemon via Sparkle but leaves the `/usr/local/bin/car` CLI behind). The npm/PyPI `car-runtime` client packages are separate — this command never touches them; `car doctor` reports which of your agents have drifted, and prints the exact command per environment. Both remedies pin: `npm install car-runtime@<version>` (`npm update` CANNOT cross a 0.x minor — npm reads `^0.41.0` as `>=0.41.0 <0.42.0`, so it is a no-op) and `<venv>/bin/python -m pip install -U car-runtime==<version>` (a bare `-U` can be silently defeated by the consumer's own pin, and the wrong interpreter installs into an environment that does not hold the stale wheel) |
206
205
  | [`car purge`](#car-purge) | Remove this CAR install's own state under `~/.car` (config, logs, managed models, binaries) and reap any OS-level schedules CAR installed — for a clean slate before a reinstall. On macOS this also clears CarHost.app's user-level state and resets its privacy (TCC) permissions, so a reinstall really does re-run permission onboarding. NEVER touches the shared HuggingFace model cache (other tools use it); managed models are symlinks into it, so only the links are removed, not the multi-GB blobs. (To uninstall a single contributed agent instead, use `car uninstall <id>`.) |
207
- | [`car code`](#car-code) | Built-in coding agent: state an intent, confirm the verifiable outcome contract, and CAR delivers it in an isolated git worktree — natively or via an installed frontier CLI. Review and apply results to your checkout, or publish a branch with --delivery branch (which is what --yes does by default — an unattended run never edits your checkout) |
206
+ | [`car code`](#car-code) | Built-in coding agent: state an intent, review a one-screen outcome summary, then start, inspect the full list, revise checks in plain English, approve held network checks, or cancel. CAR works in an isolated git worktree — natively or via an installed frontier CLI. Review and apply results to your checkout, or publish a branch with --delivery branch (which is what --yes does by default — an unattended run never edits your checkout) |
208
207
  | [`car board`](#car-board) | Fullscreen supervision board for coder sessions — one screen for every run on this host, whoever started it (`car code`, CarHost, milo, another board). Attach to a run's full history, confirm its outcome contract, answer its questions, approve its diff, or scope work in a repo-grounded discussion first. Closing the board never stops a run |
209
208
  | [`car do`](#car-do) | CAR Assistant: a general-purpose agent that works out of the box |
210
209
  | [`car policy-check-hook`](#car-policy-check-hook) | Evaluate a host's proposed tool call against `.car/policies/` and answer on stdout with that host's hook decision envelope |
@@ -471,19 +470,27 @@ Options:
471
470
  Pin the inference model for this session
472
471
 
473
472
  --max-iterations <MAX_ITERATIONS>
474
- Override the coder config's iteration ceiling (default 8)
473
+ Set an explicit operator iteration cap. The default is unbounded; 0 is unbounded. A capped
474
+ run ends `budget_exhausted`, naming usage and cap
475
475
 
476
476
  --browser
477
477
  Expose the assistant's browser tools for this run. Off by default; calls remain
478
478
  policy-gated and appear in the JSONL event stream
479
479
 
480
480
  --max-session-wall-secs <MAX_SESSION_WALL_SECS>
481
- Override the coder config's session wall clock (default 3600). 0 = unlimited
481
+ Set an explicit operator session wall-clock cap. The default is unbounded; 0 is unbounded.
482
+ A capped run ends `budget_exhausted`, naming elapsed time and cap
482
483
 
483
484
  --max-check-timeout-secs <MAX_CHECK_TIMEOUT_SECS>
484
- Ceiling for ONE contract check's command (default 600). Raise it for a verification gate
485
- that legitimately runs longer than ten minutes; the model's own `shell` tool keeps the
486
- 600s ceiling regardless
485
+ Set an explicit operator cap for one contract check. The default is unbounded. A check
486
+ that reaches the cap is killed and judged red; the model's own `shell` tool keeps its
487
+ separate ceiling regardless
488
+
489
+ --silence-window-secs <SILENCE_WINDOW_SECS>
490
+ Stop the run when nothing makes progress for this many seconds (default 900; 0 disables).
491
+ This is the only time-based stop: a check that prints nothing for this long is killed and
492
+ judged red, and a session silent this long ends `failed` with `failure_kind: "stalled"`,
493
+ naming what it was waiting on
487
494
 
488
495
  --workspace-dir <WORKSPACE_DIR>
489
496
  Explicit workspace location. Reused when it is already a valid worktree
@@ -552,13 +559,11 @@ Options:
552
559
  diagonal name different tiers (--model openai/gpt-5.4 --external-model gpt-5.5). Differing
553
560
  pins are reported as DIFFERENT PINS and are NOT a harness delta
554
561
  --iters <ITERS>
555
- Native arm's repair-iteration cap per task. Defaults to the coder's OWN shipping default,
556
- so the A/B measures the coder users actually get — it used to hardcode 4, i.e. half of it.
557
- Raise it when the cap binds: a weaker backbone needs more rounds, and a run whose losses
558
- all end at `iteration N/N` is measuring this number, not the harness (at gpt-5.4, 4 → 45%
559
- and 20 → 75%, every loss cap-bound at both). The external arm is not capped by this — it
560
- gets its CLI's own turn budget (`max_turns: 50` per invocation), so setting this low is a
561
- silent handicap [default: 8]
562
+ Native arm's repair-iteration cap per task. Defaults to the coder's unbounded shipping
563
+ default (`0`), so the A/B measures the coder users actually get. A positive value is an
564
+ explicit experiment cap; a run whose losses all end at `iteration N/N` is measuring that
565
+ cap, not the harness. The external arm is not capped by this — it gets its CLI's own turn
566
+ budget (`max_turns: 50` per invocation) [default: 0]
562
567
  --out-dir <OUT_DIR>
563
568
  Directory for the timestamped JSON report [default: bench/results/coder-ab]
564
569
  --timeout-secs <TIMEOUT_SECS>
@@ -574,6 +579,11 @@ Options:
574
579
  surfaces before continuing
575
580
  --fresh
576
581
  Ignore any existing checkpoint for this corpus and re-score from scratch
582
+ --external-clone <EXTERNAL_CLONE>
583
+ Declare an external clone a corpus row may point into, as key=path (repeatable). Layered
584
+ over the corpus's `external-clones.toml`; a row names a clone only by its key in
585
+ `provenance.external_clone`, never by path, and a clone that holds the bench tree is
586
+ refused
577
587
  --report-issues
578
588
  File each durable-fix proposal that clears the reporting bar as an issue on --report-repo,
579
589
  skipping signatures already open there. Off by default: a measurement run must not open
@@ -645,8 +655,8 @@ Options:
645
655
 
646
656
  ```text
647
657
  Store cloud-provider API keys in the OS keychain, so a native-app user never sets an environment
648
- variable (docs/proposals/native-secrets-no-env.md). The key is read env-first, keychain-fallback by
649
- the runtime
658
+ variable (docs/proposals/native-secrets-no-env.md). Runtime reads process env first, then
659
+ `$CAR_HOME/env`, then keychain
650
660
 
651
661
  Usage: car keys <COMMAND>
652
662
 
@@ -1519,7 +1529,8 @@ Options:
1519
1529
  Report a problem to Parslee. Captures a redacted diagnostic bundle (your description, the `car
1520
1530
  doctor` report, bounded log tails, and a version stamp) into the local outbox at
1521
1531
  `~/.car/feedback-outbox` — nothing is uploaded by this command; queued reports send when CAR can
1522
- reach Parslee. Works with the daemon down, like `car doctor`. macOS-only in this release
1532
+ reach Parslee. Works with the daemon down, like `car doctor`. macOS and Windows; Linux needs its own
1533
+ leak-path audit first
1523
1534
 
1524
1535
  Usage: car feedback [OPTIONS]
1525
1536
 
@@ -1582,9 +1593,10 @@ Options:
1582
1593
  ### car code
1583
1594
 
1584
1595
  ```text
1585
- Built-in coding agent: state an intent, confirm the verifiable outcome contract, and CAR delivers it
1586
- in an isolated git worktree — natively or via an installed frontier CLI. Review and apply results to
1587
- your checkout, or publish a branch with --delivery branch (which is what --yes does by default — an
1596
+ Built-in coding agent: state an intent, review a one-screen outcome summary, then start, inspect the
1597
+ full list, revise checks in plain English, approve held network checks, or cancel. CAR works in an
1598
+ isolated git worktree — natively or via an installed frontier CLI. Review and apply results to your
1599
+ checkout, or publish a branch with --delivery branch (which is what --yes does by default — an
1588
1600
  unattended run never edits your checkout)
1589
1601
 
1590
1602
  Usage: car code [OPTIONS] [INTENT]...
@@ -1630,11 +1642,12 @@ Options:
1630
1642
  [possible values: checkout, branch]
1631
1643
 
1632
1644
  -y, --yes
1633
- Skip the interactive contract and delivery prompts. Delivery then defaults to publishing a
1634
- branch; pass `--delivery checkout` to apply the result to your checkout unattended
1645
+ Skip the interactive approval menu and delivery prompts. The one-screen outcome summary
1646
+ and outcomes-file path are still shown. Delivery defaults to publishing a branch; pass
1647
+ `--delivery checkout` to apply the result to your checkout unattended
1635
1648
 
1636
1649
  --max-iterations <MAX_ITERATIONS>
1637
- Max plan→edit→verify iterations before giving up
1650
+ Max plan→edit→verify iterations before giving up. Default is unbounded; 0 = unbounded
1638
1651
 
1639
1652
  --model <MODEL>
1640
1653
  Choose a model (see `car models list`). In a conversation, saves the choice for replies
@@ -1681,9 +1694,15 @@ Usage: car do [OPTIONS] [GOAL]...
1681
1694
 
1682
1695
  Arguments:
1683
1696
  [GOAL]...
1684
- What you want done, in plain English. Omit for an interactive REPL
1697
+ What you want done, in plain English. Omit for an interactive REPL, or with --resume to
1698
+ reuse the checkpointed goal
1685
1699
 
1686
1700
  Options:
1701
+ --resume <RUN_ID>
1702
+ Continue a prior one-shot run from its latest durable checkpoint. The original goal may be
1703
+ omitted or repeated exactly; a different goal and a changed model-visible tool set are
1704
+ refused
1705
+
1687
1706
  --local
1688
1707
  Run on the LOCAL host instead of the default Docker sandbox. Writes and shell then require
1689
1708
  --full-access
@@ -2238,9 +2257,10 @@ Parslee account authentication for CAR cloud-backed features
2238
2257
  Usage: car auth <COMMAND>
2239
2258
 
2240
2259
  Commands:
2241
- login Sign in with a Parslee account using browser-based OAuth + PKCE
2260
+ login Sign in to a Parslee account, or with `--provider openai-codex` a ChatGPT
2261
+ subscription, using browser-based OAuth + PKCE
2242
2262
  status Show whether CAR has a usable Parslee account token
2243
- logout Remove stored Parslee account tokens from the OS keychain
2263
+ logout Remove stored account tokens from the OS keychain
2244
2264
  orgs List the organizations the signed-in account belongs to (active marked)
2245
2265
  switch-org Switch the account's active organization by id (e.g. `org_parslee`)
2246
2266
  accounts List all stored Parslee logins (active marked)
@@ -2254,7 +2274,8 @@ Options:
2254
2274
  #### car auth login
2255
2275
 
2256
2276
  ```text
2257
- Sign in with a Parslee account using browser-based OAuth + PKCE
2277
+ Sign in to a Parslee account, or with `--provider openai-codex` a ChatGPT subscription, using
2278
+ browser-based OAuth + PKCE
2258
2279
 
2259
2280
  Usage: car auth login [OPTIONS]
2260
2281
 
@@ -2264,8 +2285,10 @@ Options:
2264
2285
  parslee-car]
2265
2286
  --callback-port <CALLBACK_PORT> Local callback port. The backend must allow this exact
2266
2287
  redirect URI [default: 53682]
2267
- --provider <PROVIDER> Provider hint forwarded to Parslee authorize (`microsoft` or
2288
+ --provider <PROVIDER> Provider (`openai-codex`) or Parslee hint (`microsoft` or
2268
2289
  `google`)
2290
+ --no-browser OpenAI Codex only: sign in with a device code on another
2291
+ device instead of opening a browser
2269
2292
  --add Add a second Parslee login alongside the current one (forces
2270
2293
  the account chooser) instead of replacing it
2271
2294
  -h, --help Print help
@@ -2288,12 +2311,13 @@ Options:
2288
2311
  #### car auth logout
2289
2312
 
2290
2313
  ```text
2291
- Remove stored Parslee account tokens from the OS keychain
2314
+ Remove stored account tokens from the OS keychain
2292
2315
 
2293
- Usage: car auth logout
2316
+ Usage: car auth logout [OPTIONS]
2294
2317
 
2295
2318
  Options:
2296
- -h, --help Print help
2319
+ --provider <PROVIDER> Credential provider to sign out; accepted value: openai-codex
2320
+ -h, --help Print help
2297
2321
  ```
2298
2322
 
2299
2323
  #### car auth orgs
@@ -3616,6 +3640,9 @@ Commands:
3616
3640
  item's contract on the commit itself, without credentials, before recording it
3617
3641
  check Re-verify an item end to end and, if it holds, create `car/mp/<id>-final` for a pull
3618
3642
  request. Runs the item's contract here
3643
+ abandon Retire a work item (e.g. its locked contract was wrong). Nothing is deleted: the record
3644
+ is marked abandoned and every later stage and merge check refuses it. Start a new Build to try
3645
+ again
3619
3646
  help Print this message or the help of the given subcommand(s)
3620
3647
 
3621
3648
  Options:
@@ -3717,6 +3744,25 @@ the item's contract here
3717
3744
 
3718
3745
  Usage: car mp check [OPTIONS] <ITEM>
3719
3746
 
3747
+ Arguments:
3748
+ <ITEM>
3749
+
3750
+ Options:
3751
+ --repo <REPO> [default: .]
3752
+ --remote <REMOTE> [default: origin]
3753
+ --push Also push `car/mp/<id>-final` to the remote (never forced), so the pull
3754
+ request can be opened from it
3755
+ -h, --help Print help
3756
+ ```
3757
+
3758
+ #### car mp abandon
3759
+
3760
+ ```text
3761
+ Retire a work item (e.g. its locked contract was wrong). Nothing is deleted: the record is marked
3762
+ abandoned and every later stage and merge check refuses it. Start a new Build to try again
3763
+
3764
+ Usage: car mp abandon [OPTIONS] <ITEM>
3765
+
3720
3766
  Arguments:
3721
3767
  <ITEM>
3722
3768