Release notes

FEATURE

Command-line output is now ready for programs to consume

When you connect a command-line tool to CI, a wall of text that only humans can read is a dead end. In print mode, add --output-format json or --output-format stream-json to hand structured output to a program; both flags now also appear in --help. stream-json works like a live relay: it sends init, then step_update events as work progresses, and ends with result, so nothing has to wait for the whole run. Each event has a fixed step_type; only tool calls include names, parameters, and output. Delegated subagents also provide a conversation ID and log location. Add --json-schema with either an inline schema or a schema-file path to require a particular final shape. Usage data now includes cache_read_tokens, showing how many tokens hit the prompt cache.

FEATURE

You decide whether selecting text copies it automatically

You may drag across terminal text only to inspect it, then release the mouse and find that the selection has already landed in your clipboard — sometimes corrupting certain payloads. The TUI's altscreen renderer now has copyOnSelect, enabled by default: release a text selection and it copies automatically. It is like a copier that feeds every sheet the moment you touch it: handy when you want a copy, awkward when you do not. If pasted content comes out wrong, open /settings and turn copyOnSelect off. You can still select text, but releasing the mouse will no longer copy it.

FEATURE

Approve a familiar chained command once, not every time

When you update a project every day, approving git fetch && git rebase again and again feels like getting the same pass stamped from scratch. You can now save that exact chained command as an always-allow rule. The next time you run the identical command, the permission prompt stays away. The rule recognizes the whole chain, not every command that happens to begin with git; your routine loses a step while different commands still receive their own check.

Original changelog

Original changelogCommand-line output is now ready for programs to consume
Print mode (`-p` / `--print`) now supports structured, machine-readable output via the `--output-format` flag (`text` (default), `json`, or `stream-json`), so headless runs in CI, eval harnesses, and scripts can consume the CLI's output programmatically; these flags are now discoverable in `--help`.
Added the `stream-json` output format: a strongly-typed NDJSON event stream that emits typed `init`, `step_update`, and terminal `result` events with a stable, closed-vocabulary `step_type` discriminator, so consumers receive progress incrementally instead of waiting for the whole run to finish.
Added the `--json-schema` flag to enforce a custom JSON schema on the structured output, accepting either an inline schema string or a path to a schema file; for `stream-json` the schema applies to the final `result` event.
Enriched the structured stream with a `tool_info` object for each tool call (canonical tool name, parameters, and output) and a `subagent_info` payload for delegated subagents (including `conversation_id` and `log_uri`) so consumers can correlate child trajectories.
The JSON usage object emitted by `json` and `stream-json` now reports token accounting including `cache_read_tokens`, so non-interactive consumers can attribute prompt-cache hits.
Original changelogYou decide whether selecting text copies it automatically
Added a `copyOnSelect` setting (default on, toggleable in `/settings`) that controls whether releasing a mouse text-selection auto-copies it to the system clipboard in the TUI's altscreen rendering mode; disable it to stop the automatic copy on release — useful when the auto-copy is unwanted or corrupts certain payloads.
Original changelogApprove a familiar chained command once, not every time
Improved compound-command permissions so an exact chained command (such as `git fetch && git rebase`) can be saved as an allow-always rule and no longer re-prompts on the next identical run.