{
  "as_of": "2026-10-27",
  "method": "Official docs pages fetched on 2026-10-27, plus GitHub release and license metadata from api.github.com/repos/<repo>/releases and /license. Docs pages show current (default-branch or latest) behaviour unless a tagged README is cited. Release tags and dates come from the GitHub releases API. The rank is the author's assessment, not a benchmark.",
  "weighting": "Qualitative weighting, highest first: (1) finite unattended run with a defined exit, approval control and exit codes; (2) enforceable confinement: an OS or container sandbox counts for more than approval rules, and cwd/worktree is not isolation; (3) structured token or cost metering, including child and auxiliary calls; (4) tool allow/deny lists; then (5) providers and subscription login, (6) parallel agents, (7) license and release cadence.",
  "comparison": [
    {"name": "Mistral Vibe", "version_scope": "README at tag v3.0.3 (2026-10-26)",
     "headless": "vibe -p/--prompt (or --prompt-file, or stdin). --auto-approve/--yolo or --agent auto-approve. Run limits: --max-turns, --max-price, --max-tokens, --time-limit. Exit codes: 0 finished, 1 usage/config error, 2 infrastructure failure, 3 stopped by a limit, 4 aborted.",
     "confinement": "--enabled-tools/--disabled-tools by name, glob or re: regex. Experimental --agent-socket runs file and shell tools in a sandbox served over a Unix socket. It is unsupported on Windows and cannot be combined with --workdir/--worktree/--add-dir. No network control found.",
     "tokens": "--output json or streaming. --output-dir writes export.json with token usage, cost_usd and steps. Whether this includes subagent usage: not found.",
     "parallel": "The task tool delegates to subagents that run without user interaction; built-in read-only explore subagent; enable_subagents=false turns them off. Parallel execution not confirmed.",
     "providers_auth": "Setup offers browser sign-in with a Mistral account, which uses the plan's usage and rate limits, or an API key (MISTRAL_API_KEY, keyring or ~/.vibe/.env). Per-provider api_key_env_var exists. Full provider breadth not established.",
     "license_release": "Apache-2.0; v3.0.3, 2026-10-26",
     "sources": ["https://raw.githubusercontent.com/mistralai/mistral-vibe/v3.0.3/README.md", "https://docs.mistral.ai/vibe/code/cli/", "https://api.github.com/repos/mistralai/mistral-vibe/releases"]},
    {"name": "Qwen Code", "version_scope": "Current docs site; stable release v0.26.1 (2026-10-24). Newer v0.26.2-preview.0 and nightlies are excluded.",
     "headless": "qwen -p/--prompt or stdin. --approval-mode plan|default|auto-edit|auto|yolo; -y/--yolo approves every tool call. --max-tool-calls limit.",
     "confinement": "--sandbox or QWEN_SANDBOX=1 runs shell, write and edit tools inside a sandbox image. The docs warn that --yolo does not enable a sandbox. --exclude-tools (e.g. agent). Network controls not found on the pages checked.",
     "tokens": "--output-format json: the final result entry has usage and duration_ms; stats.models gives per-model token totals, and stats.tools.byName gives tool calls. Subagent inner tool calls are not counted toward --max-tool-calls. Whether subagent tokens are included: not found.",
     "parallel": "Subagents via the agent tool. Whether they run in parallel: not found.",
     "providers_auth": "Authentication page not fetched. Qwen OAuth status: not verified.",
     "license_release": "Apache-2.0; v0.26.1, 2026-10-24",
     "sources": ["https://qwenlm.github.io/qwen-code-docs/en/users/features/headless/", "https://api.github.com/repos/QwenLM/qwen-code/releases"]},
    {"name": "Hermes Agent", "version_scope": "Current docs site (may track main). Stable release v0.22.5 (2026-10-23). Docs were not checked against the tag.",
     "headless": "hermes -z prints only the final reply and has its own exit codes. hermes chat runs one query; --format stream-json emits JSONL. Global --yolo skips approval prompts; --worktree uses a git worktree.",
     "confinement": "Command approval. Terminal backends: local, Docker, SSH, Daytona, Modal, Vercel Sandbox, plus plugin backends such as Singularity; a container backend gives OS isolation. Toolsets select tools. Network policy: not found.",
     "tokens": "--usage-file writes a JSON report of token use and cost, including auxiliary calls. Whether subagent usage is included: not stated.",
     "parallel": "Native: spawns isolated subagents for parallel workstreams.",
     "providers_auth": "hermes model wizard covers providers, API keys and OAuth logins. hermes setup --portal uses a Nous Portal OAuth. The docs page did not name Codex/Copilot subscription logins. hermes usage reads account rate-limit windows.",
     "license_release": "MIT; v0.22.5, 2026-10-23",
     "sources": ["https://hermes-agent.nousresearch.com/docs/", "https://hermes-agent.nousresearch.com/docs/reference/cli-commands", "https://api.github.com/repos/NousResearch/hermes-agent/releases"]},
    {"name": "Gemini CLI", "version_scope": "Current docs. Latest stable v0.65.0 per releases/latest; v0.66.0-preview.0 and v0.67 nightlies are excluded. The v0.65.0 date was not captured.",
     "headless": "Runs headless with -p/--prompt or in a non-TTY. Exit codes: 0, 1, 42 (input error), 53 (turn limit exceeded). Approval-mode/yolo flags were not on the pages checked.",
     "confinement": "Strongest OS sandboxing in this set: -s/--sandbox, GEMINI_SANDBOX or tools.sandbox. Options: macOS Seatbelt (default profile permissive-open limits writes to the project dir; some profiles route network through a proxy), Docker/Podman, gVisor/runsc, experimental LXC, Windows low-integrity, plus per-tool sandboxing. No dedicated Docker network flag is documented.",
     "tokens": "--output-format json has a stats object with token usage; the stream-json result event has a per-model token breakdown. Field names were not on the page. Child accounting not found.",
     "parallel": "Not found on the pages checked.",
     "providers_auth": "The task's premise that it is Google-only is not contradicted, but no provider list was fetched. The docs say Gemini CLI was replaced by Antigravity CLI on 2026-06-18 for unpaid tier and Google One users, so subscription use is limited.",
     "license_release": "Apache-2.0; v0.65.0, date not captured",
     "sources": ["https://geminicli.com/docs/cli/headless", "https://geminicli.com/docs/cli/sandbox", "https://api.github.com/repos/google-gemini/gemini-cli/releases/latest"]},
    {"name": "Pi", "version_scope": "pi.dev/docs/latest; release v1.4.0 (2026-10-21). The repo badlogic/pi-mono resolves to earendil-works/pi.",
     "headless": "-p/--print or --mode json (JSONL events) then exits; --mode rpc. No permission prompts were found on the pages checked.",
     "confinement": "The docs say tools run with the Pi process's permissions and that project trust does not sandbox tool calls; a containerization page exists. Tool allowlist: --tools, --no-tools, -xt.",
     "tokens": "JSON message_update has cumulative usage {input, output, cacheRead, cacheWrite, totalTokens, cost}. Usage on agent_end and subagent usage: not stated.",
     "parallel": "Not in core docs. The task describes subagents as optional (extensions); this was not verified.",
     "providers_auth": "Subscription, API key, local model or compatible endpoint. pi auth handles OAuth refresh. Named subscription providers were not verified.",
     "license_release": "MIT; v1.4.0, 2026-10-21",
     "sources": ["https://pi.dev/docs/latest", "https://pi.dev/docs/latest/cli.md", "https://pi.dev/docs/latest/json.md", "https://api.github.com/repos/earendil-works/pi/releases"]},
    {"name": "Goose", "version_scope": "Docs at tag v1.56.0 (2026-10-23). block/goose resolves to aaif-goose/goose.",
     "headless": "goose run -t TEXT or -i FILE (stdin with -), --no-session, --max-turns (default 1000). Modes auto|approve|chat|smart_approve (listed as a slash command).",
     "confinement": "Sandbox not described on the page checked; approval modes only.",
     "tokens": "--output-format json|stream-json. Token fields not documented on the page checked.",
     "parallel": "Not described on the page checked.",
     "providers_auth": "Not checked.",
     "license_release": "Apache-2.0; v1.56.0, 2026-10-23",
     "sources": ["https://raw.githubusercontent.com/block/goose/v1.56.0/documentation/docs/guides/goose-cli-commands.md", "https://api.github.com/repos/aaif-goose/goose/releases"]},
    {"name": "Cline CLI", "version_scope": "Current docs; CLI tag cli-v3.0.74 (2026-10-26). v4.1.26 is the extension release.",
     "headless": "A bare prompt runs in act mode with auto-approve on by default (--auto-approve defaults to true). -c/--cwd, --worktree, -t/--timeout (default 0, no timeout), --retries.",
     "confinement": "No shell allow or deny list; a PreToolUse hook can block commands. Sandbox not found.",
     "tokens": "--json run_result includes usage, durationMs and model. Cost not mentioned.",
     "parallel": "Not covered; --data-dir isolates state per instance.",
     "providers_auth": "-P provider (default cline), -k key, cline auth. Subscription login not described.",
     "license_release": "Apache-2.0; cli-v3.0.74, 2026-10-26",
     "sources": ["https://docs.cline.bot/cli/cli-reference", "https://api.github.com/repos/cline/cline/releases"]},
    {"name": "Kilo CLI", "version_scope": "Current docs; release v7.8.18 (2026-10-26). Stable source was not inspected.",
     "headless": "kilo run --auto; approvals follow the permission config. Exit codes: 0, 124 timeout, 1 error. Without --auto, a run that auto-rejects a permission request exits 1.",
     "confinement": "allow/ask/deny permission rules with patterns (last match wins); external_directory limits paths outside the launch dir. No sandbox described; the task asked to check this against stable source, which was not done.",
     "tokens": "--format json mentioned (an error record is written when no assistant message). kilo stats gives token and cost; kilo export gives session JSON. Schema not documented.",
     "parallel": "Orchestrator mode and kilo serve/attach; parallel execution not described.",
     "providers_auth": "kilo auth and /connect; enabled_providers. Subscription login not described.",
     "license_release": "MIT; v7.8.18, 2026-10-26",
     "sources": ["https://kilo.ai/docs/code-with-ai/platforms/cli", "https://api.github.com/repos/Kilo-Org/kilocode/releases"]},
    {"name": "OpenCode (v2 docs)", "version_scope": "v2 docs; latest release v1.19.4 (2026-10-22). Whether the v2 docs describe the released v1.19.x is unresolved.",
     "headless": "opencode run \"...\" (v2 docs); opencode mini --help lists options. JSON output and auto-approve flags not documented on the v2 pages checked.",
     "confinement": "The v2 pages checked only say the server owns permissions; no sandbox found.",
     "tokens": "Not found in the v2 docs checked.",
     "parallel": "Not found in the v2 docs checked.",
     "providers_auth": "Many providers via /connect, OpenCode Console, OpenCode Go ($10/month subscription).",
     "license_release": "MIT; v1.19.4, 2026-10-22",
     "sources": ["https://opencode.ai/v2/docs/", "https://opencode.ai/v2/docs/cli", "https://api.github.com/repos/anomalyco/opencode/releases"]},
    {"name": "gptme", "version_scope": "Current docs; stable v0.35.1 (2026-10-15). v0.35.2.dev builds are excluded.",
     "headless": "-n/--non-interactive (implies --no-confirm), -y, -w workspace, --output-format json (JSONL).",
     "confinement": "-t/--tools allowlist (none disables all tools). Shell confinement page not fetched.",
     "tokens": "No usage flag documented; whether the JSON output includes usage is not stated.",
     "parallel": "A subagent tool page exists (tools/subagent.html); its content was not fetched.",
     "providers_auth": "Provider pages exist; not fetched.",
     "license_release": "MIT; v0.35.1, 2026-10-15",
     "sources": ["https://gptme.org/docs/cli/gptme.html", "https://gptme.org/docs/", "https://api.github.com/repos/gptme/gptme/releases"]}
  ],
  "ranked_five": [
    {"rank": 1, "name": "Mistral Vibe",
     "rationale": "Best documented unattended contract in this set: one-shot -p, explicit approval agents, hard limits on turns, price, tokens and time, distinct exit codes for each stop reason, and tool allow/deny by glob or regex. It writes a per-run export.json with tokens and cost_usd, has subagents that run without interaction, and offers browser account login that uses plan limits.",
     "limitations": "The sandbox (--agent-socket) is experimental and cannot be combined with --workdir/--worktree. No network control was found. Child usage accounting and provider breadth are unverified.",
     "worker_needs": {
       "invoke": "cd <workdir> && vibe -p --prompt-file prompt.txt --agent auto-approve --max-turns N --max-tokens T --max-price P --time-limit S --output streaming --output-dir <out>; map exit codes 0/3/4.",
       "confine": "Run the process in an external container or VM with only the workdir mounted and egress filtered, because the built-in socket sandbox is experimental. Use --agent-socket when it is compatible with the setup.",
       "meter": "Parse <out>/export.json (token usage, cost_usd, steps) and enforce --max-tokens/--max-price. Check whether task-subagent tokens are included before relying on the total.",
       "limit_tools": "--enabled-tools with an explicit list, --disabled-tools for exclusions, and enable_subagents=false if subagents are not wanted."},
     "sources": ["https://raw.githubusercontent.com/mistralai/mistral-vibe/v3.0.3/README.md", "https://docs.mistral.ai/vibe/code/cli/"]},
    {"rank": 2, "name": "Qwen Code", "rationale": "-p plus five approval modes, a documented --sandbox for shell, write and edit tools, per-model token stats in JSON, --exclude-tools and a tool-call cap.", "limitations": "Auth and subscription status were not verified. Subagent inner calls escape the tool-call cap. Network control was not found.", "sources": ["https://qwenlm.github.io/qwen-code-docs/en/users/features/headless/"]},
    {"rank": 3, "name": "Hermes Agent", "rationale": "One-shot -z with exit codes, a usage file that explicitly includes auxiliary calls, container and remote terminal backends for real isolation, native parallel subagents, and OAuth logins.", "limitations": "Large surface (gateway, cron). The docs may track main rather than v0.22.5. Child usage inclusion is not stated.", "sources": ["https://hermes-agent.nousresearch.com/docs/", "https://hermes-agent.nousresearch.com/docs/reference/cli-commands"]},
    {"rank": 4, "name": "Gemini CLI", "rationale": "Richest OS sandboxing (Seatbelt, Docker/Podman, gVisor) and per-model token stats in JSON, with documented exit codes.", "limitations": "Google models only (task premise; provider list not fetched). Replaced by Antigravity CLI for unpaid and Google One users from 2026-06-18. Parallel agents were not found.", "sources": ["https://geminicli.com/docs/cli/headless", "https://geminicli.com/docs/cli/sandbox"]},
    {"rank": 5, "name": "Pi", "rationale": "Clean print/json/rpc modes, a precise tool allowlist, cumulative usage with cost in JSON events, and subscription or API-key auth.", "limitations": "No sandbox or permission gate: tools run with the process's permissions, so it needs external containment. Subagents are not core.", "sources": ["https://pi.dev/docs/latest/cli.md", "https://pi.dev/docs/latest/json.md", "https://pi.dev/docs/latest"]}
  ],
  "near_misses": [
    {"name": "Goose", "reason": "Solid goose run (--no-session, --max-turns, JSON output), but its token fields, sandbox and subagents were not documented on the tagged page checked.", "sources": ["https://raw.githubusercontent.com/block/goose/v1.56.0/documentation/docs/guides/goose-cli-commands.md"]},
    {"name": "Cline CLI", "reason": "Auto-approve is the default and usage appears in run_result, but there is no shell allow/deny list (hooks only) and no sandbox.", "sources": ["https://docs.cline.bot/cli/cli-reference"]},
    {"name": "Kilo CLI", "reason": "Good permission rules and exit codes, but no sandbox is documented and the JSON usage schema is not documented.", "sources": ["https://kilo.ai/docs/code-with-ai/platforms/cli"]},
    {"name": "OpenCode", "reason": "The v2 docs checked lack JSON, permission and usage detail, and the mapping from v2 docs to the v1.19.4 release is unclear.", "sources": ["https://opencode.ai/v2/docs/cli"]},
    {"name": "gptme", "reason": "Has a non-interactive mode and tool allowlist, but token reporting and confinement were not documented on the pages checked.", "sources": ["https://gptme.org/docs/cli/gptme.html"]}
  ],
  "sensitivity": [
    "If Hermes's --usage-file is confirmed to include subagent usage and its Docker backend is confirmed to confine network, Hermes could take first place.",
    "If Qwen OAuth or subscription login and a network-restricting sandbox are confirmed, Qwen Code could overtake Vibe.",
    "If the worker requires a stable OS sandbox, Gemini CLI moves up, unless multi-provider support is mandatory.",
    "If Vibe's export.json omits subagent tokens or its sandbox stays experimental, Vibe's lead narrows."
  ],
  "unresolved": [
    "Gemini v0.65.0 release date (not captured); Gemini approval-mode flags and provider list (pages not fetched).",
    "Kilo sandbox and auto-approval behaviour in stable source v7.8.18 (source not inspected).",
    "OpenCode v2 JSON output, permissions and usage: not found on https://opencode.ai/v2/docs/ or https://opencode.ai/v2/docs/cli.",
    "Pi optional subagents (extension) not verified; usage on agent_end not stated in json.md.",
    "Hermes and gptme stable-versus-main documentation differences not compared against tags.",
    "Goose GOOSE_MODE env var and JSON token fields; https://block.github.io/goose/docs/guides/running-tasks and headless-goose returned 404.",
    "Whether parent usage includes children: stated for none of the candidates (Hermes states auxiliary calls only).",
    "Whether OAuth logins bill against a subscription: confirmed only for Vibe ('your plan's usage and rate limits')."
  ]
}
