Release notes

FEATURE

Vim editing comes to the prompt

If arrow keys keep breaking your flow while writing a prompt, open /settings, choose Editor Mode, and turn on the off-by-default Vim editing mode. Vim splits keyboard editing into modes: the prompt now has Normal, Insert, Visual, and Visual Line modes, with a status-line badge. Move with h/j/k/l, or delete, change, and copy with d, c, and y. To keep Vim editing while submitting normally, enable Editor Mode > Insert First: the prompt starts in Insert mode, bare Enter submits, and shift+enter or ctrl+j adds a line. In Normal mode, use ctrl+s or ctrl+enter to submit. Comment boxes in diff and artifact-detail views get the same treatment; a collapsed block moves as one unit. It is like shifting into a familiar gearbox before steering through text.

FEATURE

Print mode stops pretending a command ran

When a script needs account status but not a conversation, print mode can now answer read-only slash commands directly. -p "/usage", /quota, /credits, /model, /effort, and /skills emit one tab-separated record per line, or structured data with --output-format json or stream-json. No agent turn starts, no quota is spent, and no conversation is left behind. The reverse is now honest too: interactive-only commands such as /clear fail and name the flag or subcommand to use instead. Before, /clear could become ordinary prompt text and the model might claim the context was cleared when nothing happened. It is like a self-service counter that prints available records and points unavailable services to the right desk.

FEATURE

Plugins keep their enabled state through updates

An enabled plugin should not vanish just because its author ships an update. Plugin enablement now lives only in config.json; the plugin manifest, the file describing a plugin and its defaults, is used once to seed the initial state. If a later release changes its default to "disabled": true, it cannot turn off a plugin you already use. Nor can a default change from off to on move every user's preference at the next update. It is like each apartment keeping its own door lock: the builder supplies a default key at move-in, but later notices from the building do not turn your lock.

FEATURE

Code stays visible and errors say what is wrong

A long line of code clipped at the right edge is frustrating because you cannot tell what you missed. Artifact detail now wraps long lines in code files instead of cutting them off. When a rate limit or overload calls for a model retry, the client also waits for the delay supplied by the server rather than guessing its own backoff. It is like a server sending a wait-time ticket, and the client retrying only after that time elapses. Another vague failure now gets a name too. Missing a license or IAM role, a role that cloud services use to grant permissions, is shown as a permission failure with a link for troubleshooting, not disguised as a generic run failure.

BUGFIX

Strict permission mode cannot be bypassed by bad allowlists

If you choose request-review or strict permission mode, you expect each command to stay reviewable; an empty-looking allowlist entry should not stamp every command approved. Entries such as command(time), a comment alone, or empty () tokenize to zero command words, yet once matched everything and silently approved it. They now match nothing, and commands are no longer auto-approved in either review mode. Administrative controls for MCP servers, a protocol that lets AI connect to external tools, also survive startup: a pre-authentication fetch can no longer cache “not applicable” for five minutes and let every server through. The built-in Chrome DevTools MCP server is no longer blocked outright by those controls. It is like a blank address at a post office: it does not automatically send every letter; the real sorting rules still check the destination, and only permitted mail is delivered.

BUGFIX

Pastes, autocomplete, and tool progress stay intact

When you paste a large block as an argument to a slash command, the command needs the text, not merely the [Pasted text #N] label. It now receives the actual pasted content. After you submit an autocompleted slash command, history stores the complete command name that actually ran, so up-arrow recall does not replay only the prefix you first typed. An alias also needs an exact match before it auto-executes; a partial alias stays in the prompt for you to finish. On the other end, long-running MCP tool calls, where AI connects to external tools through a protocol, report progress again and initialize a task log. It is like a shipment that now carries the real attachment, its receipt, and live tracking rather than an attachment-number sticker.

BUGFIX

Print mode stays quiet and credit checks stop crying zero

When automation runs in print mode, a feedback survey that was turned off no longer springs back on because settings refresh asynchronously. And if a credit lookup receives an empty response, it no longer treats that absence as a zero balance and shouts “Out of credits.” It is like an account fax missing a page: the app now recognizes missing information rather than declaring the account empty. One misleading switch is also gone. Accounts signed in through a Google Cloud project or application default credentials, login proof a cloud application obtains automatically, no longer see the inapplicable “Use AI Credits” setting. The screen keeps switches you can actually use, not a button that cannot take effect.

Original changelog

Original changelogVim editing comes to the prompt
Added a Vim editing mode, off by default and switched on from `/settings` under `Editor Mode`, bringing modal editing to the prompt with Normal, Insert, Visual and Visual Line modes, a mode badge in the status line and a Vim tab in `/help`, and covering the `h`/`j`/`k`/`l`, `w`/`b`/`e` and `W`/`B`/`E` motions, the `0`/`^`/`$`/`gg`/`G` boundaries, the `f`/`F`/`t`/`T` character searches with their `;` and `,` repeats, the `i`/`a`/`I`/`A` insert entries, the `d`/`c`/`y` operators alongside `x`, `D` and `C` filling the unnamed register for `p`, and the `iw`/`aw`/`iW`/`aW`/`ip`/`ap` text objects.
Added Vim-aware submission so a prompt can be sent without leaving modal editing, through an `Editor Mode > Insert First` toggle that opens the prompt in Insert mode where a bare `Enter` submits and a modified key such as `shift+enter` or `ctrl+j` inserts a newline, `ctrl+s` and `ctrl+enter` keys that submit from Normal mode, an `Enter` binding available as `vim.insert.submit`, and the full set of `vim.*` scopes in `keybindings.json` for remapping any of it.
Added Vim editing to the comment editors in the diff and artifact-detail views, whose footer hints follow the active mode rather than showing one fixed set of bindings, and made a collapsed block behave as a single unit under Vim motions.
Original changelogPrint mode stops pretending a command ran
Added non-interactive answers for the read-only slash commands in print mode, so `-p "/usage"`, `/quota`, `/credits`, `/model`, `/effort` and `/skills` emit one tab-separated record per line — or a structured payload under `--output-format json` and `stream-json` — without starting an agent turn, spending quota, or leaving a conversation behind.
Added an explicit refusal for the remaining interactive-only slash commands in print mode, which previously fell through as literal prompt text and let the model answer as though the command had run, so `-p "/clear"` reported the context cleared while nothing was cleared; each now fails with the flag or subcommand that replaces it.
Original changelogPlugins keep their enabled state through updates
Improved plugin enable and disable so `config.json` is the only place enablement lives, seeded once from each plugin's manifest, which stops a plugin that later ships `"disabled": true` from switching itself off under someone who was already running it and stops a shipped-default change from moving every user on the next release.
Original changelogCode stays visible and errors say what is wrong
Improved the artifact detail view by wrapping long lines in code files instead of clipping them at the right edge.
Improved model retries by honoring the server-supplied retry delay instead of the client's own backoff, so a retry after a rate limit or an overload waits exactly as long as the server asks.
Improved model-loading errors so a permission failure such as a missing license or a missing IAM role is shown as itself, with a troubleshooting link, instead of a generic failure during the run.
Original changelogStrict permission mode cannot be bypassed by bad allowlists
Fixed an allowlist entry that tokenizes to zero command words — `command(time)`, a comment-only entry, or an empty compound such as `()` — matching every command and silently auto-approving anything the agent ran; such an entry now matches nothing.
Fixed commands being auto-approved while the session was in request-review or strict permission mode.
Fixed admin controls being skipped for MCP servers at startup, where a fetch made before authentication cached "admin controls not applicable" and allowed every server for the next five minutes, and fixed the built-in Chrome DevTools MCP server being blocked outright by admin controls.
Original changelogPastes, autocomplete, and tool progress stay intact
Fixed MCP progress callbacks being dropped and the task log file not being initialized, so long-running MCP tool calls report progress again.
Fixed a slash command receiving the collapsed `[Pasted text #N]` placeholder instead of the pasted content when its argument was pasted into the prompt.
Fixed the prompt saving the typed prefix rather than the completed command name to history when an autocompleted slash command was submitted, so up-arrow recall replays what actually ran, and made an alias require an exact match before auto-executing so a partial alias fills the prompt instead of running a command you did not finish typing.
Original changelogPrint mode stays quiet and credit checks stop crying zero
Fixed an asynchronous settings refresh re-enabling the feedback survey partway through a print-mode run that had switched it off.
Fixed spurious "Out of credits" errors, where an empty credits response was read as a balance of zero.
Fixed the "Use AI Credits" setting being offered to accounts signed in through a Google Cloud project or application default credentials, where it does not apply.