Release notes

FEATURE

Terminal becomes smoother, tool headers are clearer, and new files get full diffs

Your terminal stays responsive and typing stays buttery smooth even if your conversation goes over 5,000 steps (step, AI action counts). Previously, in no flickering mode, counting lines for long chats caused high CPU and lag on every frame; this logic has been optimized to resolve the bottleneck. Also, when confirming new file creation, you can now press f to open a full screen difference preview (full diff) to see complete changes, matching the experience of editing existing files. Finally, chat tool headers are cleaned up from messy strings like CodeSearch(4 files found...) to neat summaries like Read(/path). It's like reading a massive novel where pages used to get harder to turn, the index is clear, and you can pull out a full-screen comparison/diff view anytime.

FEATURE

Print mode fails honestly on missing models and handles auth gracefully

When automating tasks with scripts, the system stops silently changing models or hanging. In print mode (-p, exit-after-printing), if a specified model is missing, the CLI fails fast and lists available options (interactive sessions keep the old fallback-with-warning behavior). Additionally, if piping prompts consumes stdin and login is required, you can paste the OAuth authorization code directly into the controlling terminal (/dev/tty). Truly headless runs fail fast instead of blocking. Like sending an assistant to buy a lunch box — they call you immediately with the menu if it is sold out, and hand you the card reader if payment is needed; if you aren't there, they return instead of waiting forever.

BUGFIX

Keybindings stay updated automatically, and nested commands respect allowlists

Custom shortcuts now upgrade automatically, and command security checks are smarter. When the system adds new default keybindings, it injects them while preserving your custom configurations (user overrides). Also, when you write nested command substitutions (like echo wrapping a git query), the system runs them without interruption as long as both commands are on your allowlist. It no longer double-counts the nested layers to prompt for permission. Like updating a game — new ultimate keybindings are added without wiping out your custom jump button; and airport security seeing a pre-screened bag inside another pre-screened bag no longer forces you to unpack it again.

BUGFIX

Subagents report accurate states, and MCP tools stop leaking memory

Task progress is fully accurate and the system cleans up properly when you run agent teams or load external tools. When multiple subagents (AI helpers running in parallel) work together, the system used to suffer from a data race and copy-on-write violation, corrupting step counts; they now clone records before updating to avoid collisions. Furthermore, when loading MCP (Model Context Protocol) tools, the manager previously failed to resolve paths in standalone mode and leaked background subprocesses; it now locates paths perfectly and sweeps up processes on exit. Like hiring a crew — they used to fight over one sign-in sheet but now get individual clipboards, and clean up all their tools on departure.

Original changelog

Original changelogTerminal becomes smoother, tool headers are clearer, and new files get full diffs
Added an `f` (full diff) shortcut to the create-file tool review screen so new-file confirmations can open a full-screen diff view, matching the existing file-edit experience.
Improved responsiveness on large conversations (5000+ steps) in no flickering mode by switching hot-path line-count methods to pointer receivers, cutting the per-frame prefix-sum cost and eliminating sustained 99% CPU and keystroke lag.
Fixed garbled builtin tool headers such as CodeSearch(4 files found...) by mapping generic tool steps back to clean summaries like Read(/path) and CodeSearch(query).
Original changelogPrint mode fails honestly on missing models and handles auth gracefully
Added support for pasting the OAuth authorization code in print mode (-p) via the controlling terminal (/dev/tty on POSIX and CONIN$ on Windows) when stdin is consumed by a piped prompt, and made truly headless runs fail fast with an actionable message instead of blocking.
Fixed print mode silently downgrading to the default model when --model cannot be resolved by hard-failing with a non-zero exit and listing the available models, while interactive sessions keep the fallback-with-warning behavior.
Original changelogKeybindings stay updated automatically, and nested commands respect allowlists
Fixed permission checks not respecting the allowlist for nested command substitutions, so a command like echo "$(dirname $(git rev-parse --show-toplevel))" now runs without prompting when echo and git are allowlisted, instead of double-counting the nested command and prompting for review.
Fixed the CLI keybindings file staying out of sync with /keybindings when new default bindings are introduced by persisting the injected defaults while preserving user overrides.
Original changelogSubagents report accurate states, and MCP tools stop leaking memory
Fixed mcp manager failing to resolve tool schema paths in standalone mode and leaking MCP server subprocesses after shutdown, which previously caused panics and cleanup failures for custom agents loading MCP tools.
Fixed a data race and copy-on-write violation when updating subagent states by cloning their stats before in-place mutation, preventing corrupted step counts and status for parallel subagents.