Release notes

FEATURE

Long documents get an outline, and Markdown alerts render properly

When a Markdown document runs long, press t to open its heading outline and jump straight to a section instead of scrolling for it. Markdown is plain text marked up with simple symbols. Alert blocks such as [!NOTE] and [!WARNING], plus carousel blocks, now render instead of showing their raw markers. It is like adding a table of contents and visible warning stickers to a dense manual.

FEATURE

Print mode answers more commands, with output scripts can read

When a script needs permissions, hooks, help, release notes, or config, print mode can answer -p "/permissions", /hooks, /help, /changelog, and /config without starting an agent, using quota, or leaving a conversation. It emits tab-separated rows, or structured JSON with --output-format json or stream-json. The models and agents subcommands now do the same, while errors and spinners stay off stdout. Like a market receipt: items are listed cleanly, while vendor chatter stays aside.

FEATURE

Skills can leave slash menu while larger toolsets still load

A growing skill library no longer has to flood the / menu. Add disable-slash-command: true to a skill's SKILL.md frontmatter and it disappears from the menu and /name lookup, while the model can still discover and invoke it. Think of moving rarely hand-picked tools into a drawer, not throwing them away. Sessions also accept more tool declarations, so heavy MCP, plugin, and skill setups are not rejected. Tool-call headers now state a short action summary for activity lists and permission prompts instead of a bare name or argument blob.

FEATURE

Terminal links stay clickable over SSH and across wrapped lines

URLs in an SSH session can now be opened directly, including in hyperlink-capable tmux. A URL that wraps onto another line remains one clickable link rather than losing everything after line one. URLs the Markdown renderer missed, including URLs inside code blocks, also become links. Hovering no longer highlights unrelated links, and linked lines still scroll sideways and select text correctly. Like sheet music continuing onto another line: it is still one melody.

FEATURE

Sign-in needs less setup, and nested Git repositories find right root

Application Default Credentials, the default cloud-account sign-in credentials, now resolve the quota project automatically, so service-account logins do not need extra setup. Repository detection also recognizes when the intended Git repository sits inside a larger multi-repository checkout. Submodules and worktrees are included. It is like airport baggage sorting: once the final terminal is identified, the bag reaches the right carousel instead of stopping at the first one.

FEATURE

Headless runs decide when needed and report mode mistakes

Put -p into a scheduled or automated flow and nobody is there to answer questions. It now settles a choice itself rather than waiting forever. Headless mode, meaning execution without an interactive window, also honors --mode accept-edits and --mode plan; unknown values produce a warning instead of being silently ignored. Startup crashes, missing conversations, conflicting print flags, load errors, and mode or agent warnings now reach the terminal instead of hiding in a log. Like an overnight attendant that can take a marked route and turns on a light when the instructions are wrong.

FEATURE

Schedules skip redundant notices and name what ended them

When a one-shot schedule ends early after receiving a qualifying message, it used to add an unhelpful Timer Cancelled notice. That duplicate notice is gone. The step result now names both the condition that was met and the sender whose message met it. Scheduling behavior has not changed; the receipt is clearer, like a club posting one notice when an event ends early and naming the rule and member message that triggered it.

FEATURE

Long paths, citations, and submitted prompts keep their missing pieces

Long paths in tool steps now collapse your home directory to ~, preserving the informative ending instead of chopping it off from the front. File citations regain their line numbers, so ranges render as path:10-25. A subtler issue is fixed too: if a submitted prompt wrapped at the terminal's right edge, its echoed text no longer loses one character because of indentation. Like an editor preparing a long manuscript: the cover shortens its prefix but keeps the chapter ending, citations retain line numbers, and no letter drops at a line end.

BUGFIX

Write-ins keep multi-select choices, and tasks stop crowding prompt

In a multi-select question, adding a write-in answer no longer clears boxes you already ticked. If you go back to a predefined option, stale write-in text is not submitted either. That matters when you choose several items and add one note. With many background tasks, each active item below the prompt is now limited to one line, so the list does not push the input box away. Like an event sign-up form: adding “other” does not erase checked sessions, and a one-line staff list does not cover the next field.

BUGFIX

Config saves safely, and slow keyrings no longer log you out

config.json now uses atomic writes: it prepares a complete new file, then replaces the old one in one move. A crash or concurrent writer cannot leave a truncated config that silently breaks settings. If the OS keyring, the store for login secrets, responds slowly, the CLI now waits five seconds rather than treating it as empty after one and forcing a login. Conversation preview titles also stop at first line and 500 characters, so a large pasted prompt cannot create a multi-megabyte title. Like office filing: complete the whole document before replacing the old file, wait a little longer for a slow records cabinet, and keep an index label to its first line and set length.

BUGFIX

Windows paths stop crashing, and subagents report back reliably

On Windows, converting a trajectory log into a transcript artifact now honors the drive letter in its path, avoiding a crash. Agent collaboration gets two fixes too: a subagent whose own message failed to send no longer falls silent to its parent, and a subagent that goes idle without a final response no longer leaves the parent an empty notice. Like a theater control booth: a stage code stays intact, a lighting technician reports a failed message, and leaving without a final response does not leave a blank signal slip.

BUGFIX

Reading URLs stops leaking connections, and quota display catches up

Repeated calls to read_url_content used to leak one network connection each time, eventually risking exhaustion of available machine ports; connections now close correctly. A port is a numbered network doorway for a program, like a hotel key that must be returned after checkout. The status line's model quota, the quota remaining, also no longer lags one fetch behind and now matches what remains. Heavy URL reading and quota watching no longer rely on stale numbers.

Original changelog

Original changelogLong documents get an outline, and Markdown alerts render properly
Added a heading outline to the artifact viewer, opened with `t`, so a long markdown document's structure is visible at a glance and you can jump straight to a section instead of scrolling.
Added rendering for alert callouts (`[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, `[!CAUTION]`) and for carousel blocks in markdown artifacts, which previously showed as raw markup.
Original changelogPrint mode answers more commands, with output scripts can read
Added non-interactive answers for more read-only slash commands in print mode, so `-p "/permissions"`, `/hooks`, `/help`, `/changelog` and `/config` each 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, with `/help` listing exactly the commands print mode answers and `/changelog` printing the release notes.
Added machine-readable output to the `models` and `agents` subcommands through an `--output-format` flag accepting `json` and `stream-json`, and moved their error messages and progress spinner off stdout so captured output contains only the list.
Original changelogSkills can leave slash menu while larger toolsets still load
Added a `disable-slash-command: true` flag for a skill's `SKILL.md` frontmatter, which hides that skill from the `/` menu and from `/name` resolution while leaving it discoverable and invocable by the model, so a large skill library no longer floods the command menu.
Improved tool call headers so every native and MCP tool call carries a short summary of what it is doing instead of a bare name or a raw argument blob, with the same summary naming background tasks and subagents in the activity list and the matching action phrase describing the request in permission prompts.
Improved headroom for large toolsets by raising the per-session limit on tool declarations, so heavy MCP, plugin and skill setups stop being rejected for having too many tools.
Original changelogTerminal links stay clickable over SSH and across wrapped lines
Improved terminal hyperlink support, enabling clickable links over SSH and in hyperlink-capable `tmux`, keeping word-wrapped URLs clickable past their first line, linking URLs that the markdown renderer had left as plain text including ones inside code blocks, no longer highlighting unrelated links together on hover, and fixing horizontal scrolling and text selection on lines that contain a link.
Original changelogSign-in needs less setup, and nested Git repositories find right root
Improved sign-in with Application Default Credentials by resolving the quota project automatically, so service-account logins work without extra configuration.
Improved repository detection so a Git repository nested inside a larger multi-repository checkout resolves to the intended root, with submodules and worktrees covered.
Original changelogHeadless runs decide when needed and report mode mistakes
Improved headless `-p` runs so the agent settles a choice itself where it would otherwise ask, instead of stalling on a question nobody is there to answer.
Fixed `--mode` being ignored in headless `-p` runs, where a valid value such as `accept-edits` or `plan` was never applied and an unrecognized value produced no warning at all.
Fixed startup diagnostics being swallowed into the log file instead of reaching the terminal, including crash notices, the `--conversation` not-found warning, the `--print` and `--prompt-interactive` conflict, conversation load errors, and the `--mode` and `--agent` warnings.
Original changelogSchedules skip redundant notices and name what ended them
Improved the `schedule` tool by dropping the redundant `Timer Cancelled` notification when a one-shot timer with an early-termination condition is cancelled, and by naming both the condition and the exact sender whose message satisfied it in the step result.
Original changelogLong paths, citations, and submitted prompts keep their missing pieces
Improved file paths in tool step lines by collapsing your home directory to `~` instead of truncating the front of the path, so the interesting end of a long path stays on screen.
Fixed a character disappearing from your submitted prompt where it wrapped at the terminal's right edge, caused by the echoed prompt being indented after it had already been wrapped to the full width.
Fixed file citations in a response losing their line numbers, so a cited range renders as `path:10-25` again instead of just the file name.
Original changelogWrite-ins keep multi-select choices, and tasks stop crowding prompt
Fixed a write-in answer in a multi-select question discarding the boxes you had already ticked, and fixed a stale write-in being submitted after you went back to a predefined option.
Fixed large background tasks crowding out the prompt by limiting each active item below the input box to a single line.
Original changelogConfig saves safely, and slow keyrings no longer log you out
Fixed corruption of `config.json` by writing user config atomically, so a crash or a concurrent writer can no longer leave a truncated file that silently breaks settings persistence.
Fixed the CLI giving up on a slow OS keyring after one second and falling back to empty storage, which forced a re-login; it now waits five seconds, as every other keyring operation already did.
Fixed conversation preview titles derived from the first user message by cutting them at the first line and capping them at 500 characters, so a large pasted or scripted prompt no longer produces a multi-megabyte stored title.
Original changelogWindows paths stop crashing, and subagents report back reliably
Fixed a crash on Windows when resolving the conversation transcript path, by honoring the path's drive letter in the trajectory log artifact converter.
Fixed a subagent going silent on its parent when its own message failed to send, and fixed the parent being handed an empty notice when a subagent went idle without a final response.
Original changelogReading URLs stops leaking connections, and quota display catches up
Fixed the `read_url_content` tool leaking a connection on every call, which could eventually exhaust the machine's available ports.
Fixed the status line reporting model quota that was always one fetch out of date, so it now matches the quota you actually have left.