Release notes

FEATURE

Voice dictation types into prompts and supports SSH mic forwarding

When you want to speak your thoughts instead of typing, press f5 or run /voice to start and stop speech dictation straight into the prompt. When working on a remote machine over SSH, you can use the mic-serve subcommand to forward your local microphone. Each account is limited to one live dictation stream; attempting a second stream now explicitly explains the single-stream limit instead of falsely claiming your quota ran out.

FEATURE

Status line adds cost field to display exact session spend

When monitoring token spend on your own display, the numbers are now far more precise. A new cost field is available in the status line data model, exposing the exact, unrounded estimated cost of the current session. Custom status lines can now calculate and display ongoing token expenses in real time without guessing rounded numbers.

PERF

Embedded ripgrep speeds up search and guarantees consistent behavior

Code searches across your projects are now faster and completely consistent across machines. The agent now runs an embedded ripgrep binary directly rather than shelling out to whatever external search tool happens to be available on the host machine. This approach speeds up search operations and guarantees identical behavior even on systems where ripgrep is not installed at all.

FEATURE

Always-proceed mode auto-approves MCP tools and web reads

For uninterrupted workflows, the always-proceed permission mode now runs without friction. Previously, even though this mode was specifically designed to execute tasks without stopping, it still paused to ask for permission whenever an MCP tool call or page read occurred. Those operations are now auto-approved alongside regular actions, allowing your tasks to proceed smoothly.

FEATURE

Script permissions pin exact names instead of granting broad access

Granting permanent command permissions is now much safer and more precise. When you execute scripts with runners such as npm run, yarn, pnpm, or cargo run, the suggested "always allow" rule now pins down the specific script name. Approving npm run dev to start a dev server now authorizes that specific command alone, rather than granting blanket permission to run every single script in your project.

FEATURE

Conversations auto-name on creation for a clearer resume picker

Picking up past conversations is now much easier to navigate. When a new conversation begins, the system automatically generates a concise and meaningful title right away. Instead of showing an unhelpful raw placeholder snipped from your very first message, the resume picker presents clear topic names so you can instantly spot the session you want to continue.

FEATURE

Clearer error guidance for MCP servers missing Google credentials

Troubleshooting MCP servers configured with Google authentication is now much more straightforward. When a server fails to locate Application Default Credentials on your local system, the CLI presents a detailed and informative error message that points you directly to the missing setup rather than displaying an ambiguous failure.

BUGFIX

Precision editing for non-ASCII text fixes UTF-8 corruption

Editing files that contain non-ASCII text such as CJK characters, accented letters, or emoji is now completely safe from corruption. Previously, when performing an inexact string match on non-ASCII files, text splices could occur at the incorrect byte offset, producing invalid UTF-8 and mangling file contents. The offset calculation has been fixed to ensure multilingual text and special characters are spliced cleanly and accurately.

BUGFIX

Invalid UTF-8 no longer stalls sessions or freezes the interface

Tool outputs or file diffs containing unexpected character encoding will no longer freeze your session. Previously, if a tool result or diff payload contained invalid UTF-8 characters, it broke the agent's internal state stream, leaving the user interface hanging indefinitely mid-response. The stream parser now handles these encoding anomalies resiliently so your conversations continue without disruption.

BUGFIX

Accurate write reporting eliminates redundant retries on large files

File write operations on large documents now report their status accurately without redundant work. Previously, saving bulky files such as Jupyter notebooks could trigger a false failure report even after the data was safely committed to disk, causing the agent to attempt unnecessary retries. The status check has been corrected so confirmed writes proceed immediately to the next task.

BUGFIX

Explicit skill and plugin paths always win name collisions

When custom extensions share identical names, the system now strictly honors your explicit configurations. Previously, if you defined a path to a skill or plugin in your config file, nearby customizations that were automatically discovered in neighboring directories could take precedence and override your settings during name collisions. The resolution order is now fixed so that any path you explicitly configure always wins.

Original changelog

Original changelogVoice dictation types into prompts and supports SSH mic forwarding
Added `/voice` dictation, which transcribes speech straight into the prompt; press `f5` or run `/voice` to start and stop it, and use the `mic-serve` subcommand to forward a local microphone to a CLI running on another machine over SSH. Only one live dictation stream is allowed per account, and a second one now says so instead of reporting an exhausted quota.
Original changelogStatus line adds cost field to display exact session spend
Added a `cost` field to the status line data model, exposing the unrounded estimated cost of the current session so a custom status line can display running token spend.
Original changelogEmbedded ripgrep speeds up search and guarantees consistent behavior
Improved the agent's code search by running an embedded `ripgrep` binary instead of shelling out to whatever the machine provides, so searches are faster and behave identically on systems with no `ripgrep` installed.
Original changelogAlways-proceed mode auto-approves MCP tools and web reads
Improved the `always-proceed` permission mode to auto-approve MCP tool calls and page reads as well, which kept prompting even though the mode exists to run without interruptions.
Original changelogScript permissions pin exact names instead of granting broad access
Improved allow-always permission suggestions for script runners such as `npm run`, `yarn`, `pnpm` and `cargo run` by pinning the specific script name, so approving `npm run dev` no longer grants every script in the project.
Original changelogConversations auto-name on creation for a clearer resume picker
Improved conversation titles by generating them automatically when a conversation is created, so the resume picker shows a meaningful name instead of a placeholder from the first message.
Original changelogClearer error guidance for MCP servers missing Google credentials
Improved the error shown when an MCP server configured for Google credentials cannot find Application Default Credentials.
Original changelogPrecision editing for non-ASCII text fixes UTF-8 corruption
Fixed corrupted edits to files containing non-ASCII text such as CJK characters, accented letters or emoji, where an inexact match was spliced at the wrong offset and produced invalid UTF-8.
Original changelogInvalid UTF-8 no longer stalls sessions or freezes the interface
Fixed the session stalling mid-response when a tool result or file diff contained invalid UTF-8, which broke the agent state stream and left the interface waiting indefinitely.
Original changelogAccurate write reporting eliminates redundant retries on large files
Fixed a file write being reported as a failure after the content had already been written to disk, which sent the agent into unnecessary retries on large files such as notebooks.
Original changelogExplicit skill and plugin paths always win name collisions
Fixed explicitly configured skill and plugin paths losing to customizations discovered automatically nearby, so a path you set in your configuration now wins a name collision.