What
A machine-readable output mode for claw -- a --json (or --format json) flag that emits a structured final result instead of (or alongside) raw stdout.
Ideally:
- a single final JSON envelope with at least: the result/assistant text, an exit/outcome status, and token usage + cost when available; and/or
- a newline-delimited JSON (NDJSON) event stream for progress, terminated by the final result object (the shape codex
exec --json and opencode run --format json already use).
Why
Tools that drive a coding agent as a non-interactive subprocess need machine-parseable output to integrate it reliably. kazi (an open-source reconciliation controller that drives a coding agent in a loop until a goal's predicates are objectively true) supports multiple harnesses as config-driven profiles -- claude, opencode, codex, and others -- by parsing each harness's structured output for the result and token/cost usage.
Because claw currently emits only raw stdout with no structured envelope, its integration is necessarily best-effort: the raw text can be captured as the result, but there is no reliable way to extract the outcome status or token/cost. A --json mode would let claw be driven as a first-class, cost-accountable harness the same way codex/opencode are.
Suggested shape (for reference)
claw <prompt> --json
# -> {"result": "...", "status": "ok", "usage": {"input_tokens": N, "output_tokens": M, "cost_usd": X}}
Matching the codex/opencode NDJSON convention would let existing parsers be reused. Happy to share how the kazi profile contract works if useful. Thanks!
What
A machine-readable output mode for
claw-- a--json(or--format json) flag that emits a structured final result instead of (or alongside) raw stdout.Ideally:
exec --jsonand opencoderun --format jsonalready use).Why
Tools that drive a coding agent as a non-interactive subprocess need machine-parseable output to integrate it reliably. kazi (an open-source reconciliation controller that drives a coding agent in a loop until a goal's predicates are objectively true) supports multiple harnesses as config-driven profiles --
claude,opencode,codex, and others -- by parsing each harness's structured output for the result and token/cost usage.Because
clawcurrently emits only raw stdout with no structured envelope, its integration is necessarily best-effort: the raw text can be captured as the result, but there is no reliable way to extract the outcome status or token/cost. A--jsonmode would letclawbe driven as a first-class, cost-accountable harness the same way codex/opencode are.Suggested shape (for reference)
Matching the codex/opencode NDJSON convention would let existing parsers be reused. Happy to share how the kazi profile contract works if useful. Thanks!