Release notes

FEATURE

Custom agents move to Markdown, and switching roles no longer gets stuck

If you want an AI helper dedicated to proofreading or research, you can now define a custom agent with an agent.md Markdown file: ordinary text with headings. Its YAML frontmatter, a settings block at the very top of the file, can say whether it is the main agent, a subagent, hidden, inherits MCP (the protocol that lets AI connect to outside tools), or may run commands. Think of it as a job badge plus work rules for each role. Dynamically created subagents now get the same badge, so external builds recognize them too. /agents also correctly returns from a custom role to the default one instead of appearing to switch while leaving the conversation in the old persona.

FEATURE

`/copy` can now pick an earlier answer

Finished a few rounds of answers and realized the one you need to paste is the previous one? /copy 2 now copies the second-most-recent response to the clipboard, the temporary place from which you paste elsewhere. The number n means the n-th most recent response; plain /copy and /copy 1 still mean the latest. It is like pulling the prior photo from an album directly instead of copying the newest photo first and then selecting old text by hand.

FEATURE

Code search shows results as it works, and Esc can stop it

When you use /codesearch to find a function name in a large project, you no longer have to stare at an empty screen until every result arrives. Matches now appear progressively, with a live count; if you searched in the wrong direction, Esc cancels the search while it is still running. It is like a warehouse worker bringing each box to you as soon as it is found while updating the tally, and stopping the moment you realize it is the wrong order.

FEATURE

Reading temporary files no longer starts with a permission prompt

When you ask an agent to inspect a file it just downloaded or generated temporarily, a permission dialog usually will not interrupt first. The CLI now grants read access by default to the system temporary directory, the place where programs briefly park files, and resolves that location correctly on each platform. This opens only the door to look, not to edit or delete. It is like a hotel desk giving you a viewing pass for the luggage area so the helper can read the receipt it just put there without calling for approval every time.

FEATURE

Custom rules keep a stable order, avoiding needless cache misses

The same set of custom rules and discovered paths now arrives in a fixed order every time. Previously, the order could drift; even unchanged content then looked new to the prompt cache, which temporarily stores processed instructions for reuse, and had to be handled again. Stable sorting lets the cache recognize the same list. It is like returning recipe cards to a drawer in the same order, so the cook sees at once that the menu has not changed and need not prep everything again.

BUGFIX

Terminal views are smoother, with no blank screen after sign-in

Several screen glitches disappear together in this release. When switching an image artifact viewer, the view used for AI-generated files, iTerm2-like terminals that are detected but cannot draw Kitty graphics no longer spew garbage characters; the first viewer opening also stops swallowing your Esc key. During response streaming, Markdown, a plain-text formatting language, no longer reflows in a way that jitters the input box upward, and the message-list header survives rewinding or resetting steps. The screen also no longer goes blank after the sign-in page. Like a cinema changing scenes: subtitles, seats, and the opening title used to slide away separately; now the scene changes while the image and your keypress stay put.

FEATURE

Background updates and blocked-command errors are more reliable

When a program fails, the worst outcome is an error that points somewhere else. If print mode, the -p mode that outputs an answer without an interactive interface, cannot create a conversation, it now shows the real creation failure rather than claiming there is no active conversation. When the sandbox, the protective restricted space for running programs, blocks a command first, it records that block even with the network proxy off; approval and denial messages are cleaner too. The background auto-updater also fixes a double-spawn race, so two processes cannot each launch an updater in the same update window. When no background shell commands are running, a remapped ctrl+b shortcut is now respected. It is like a control room finally filing the right incident report and sending only one repair crew for one shift.

Original changelog

Original changelogCustom agents move to Markdown, and switching roles no longer gets stuck
Custom Agents (Markdown Format). Added support for defining custom agents using Markdown files (`agent.md`) with YAML frontmatter and H1-delimited system prompts. Markdown agents support `mainAgent`, `subagent`, `hidden`, `inheritMcp`, and `commandExecutionPolicy` frontmatter fields for fine-grained control over agent behavior. Dynamically defined subagents (via `define_subagent`) now also write Markdown format so they resolve correctly on external builds.
Improved support for markdown-based custom agents so custom agent management and selection behave more consistently.
Fixed switching from a custom agent back to the default agent via `/agents`, which previously failed silently and left the conversation stuck on the custom agent's persona.
Original changelog`/copy` can now pick an earlier answer
Added an optional index argument to `/copy` so `/copy <n>` copies the n-th most recent response to the clipboard, while `/copy` and `/copy 1` still copy the latest.
Original changelogCode search shows results as it works, and Esc can stop it
Improved `/codesearch` to render results progressively as they stream in, showing a live count while loading and letting you cancel an in-flight search with `Esc` instead of blocking until the whole search finishes.
Original changelogReading temporary files no longer starts with a permission prompt
Improved default file access by granting read access to the system temporary directory out of the box, resolved correctly per platform, so agents no longer trigger permission prompts when reading temporary files.
Original changelogCustom rules keep a stable order, avoiding needless cache misses
Improved customization discovery by sorting rules and discovered paths deterministically, preventing unstable prompt ordering and needless prompt-cache misses.
Original changelogTerminal views are smoother, with no blank screen after sign-in
Fixed the artifact viewer emitting garbage escape bytes when cycling to image mode on terminals that are detected but cannot actually render Kitty graphics, such as iTerm2.
Fixed the first keystroke (such as `Esc`) being dropped when opening the first artifact view on some non-Kitty terminals.
Fixed conversation jitter and a stranded input box during streaming so transient markdown reflow no longer shifts the pending line and input box upward.
Fixed the message list dropping its header when rewinding or resetting conversation steps.
Fixed the screen going blank after the authentication page.
Original changelogBackground updates and blocked-command errors are more reliable
Improved overall reliability and stability across the CLI with additional hardening and fixes for intermittent failures in background tasks, print mode, and interactive flows.
Fixed a crash when a command was blocked by sandbox permissions before its output was captured, and cleaned up the permission approval and denial messages.
Fixed print mode (`-p`) surfacing the real conversation-creation failure instead of a misleading "no active conversation" error.
Fixed a background auto-updater double-spawn race where two processes could each spawn an updater within a single update window.
Fixed sandbox error reporting so blocked actions are recorded even when the network proxy is disabled.
Fixed the `ctrl+b` shortcut being hardcoded to background shell commands even when none were running, so a remapped `ctrl+b` is now respected whenever there are no running shell commands in the conversation.