Release notes

FEATURE

Skills gain icons without throwing terminal lists out of line

When you open /skills to find a familiar skill (a reusable set of work instructions), each one can now show the emoji icon it declares. The icon lives in metadata.icon at the top of its SKILL.md file. It appears in the /skills catalog, detail headers, and slash-command autocomplete popups.

The terminal also calculates the display width of multi-byte Unicode characters correctly, keeping the columns aligned after icons arrive.

FEATURE

@ path completion can now find empty folders too

Typing @ to name a file path but remembering only its empty folder used to leave you stranded. Path autocomplete now indexes empty directories too, instead of seeing only places where search results already contain files. This includes workspace structures made up solely of folders with no contents yet, so you can find the directory in the completion list and keep navigating.

FEATURE

Default review mode stops repeatedly asking to read workspace files

Repeated approval prompts can break up a simple inspection when a tool only needs to read or list files under the workspace root. Default review mode (a mode for examining content) now automatically grants workspace-scoped read access, so those two actions no longer need repeated confirmation.

The boundary remains: changing files or accessing anything outside the workspace still asks for confirmation.

PERF

Git status checks avoid an extra sweep through submodule worktrees

In a Git repository with submodules (nested projects that keep their own version history), a status check can spend its time recursively scanning each submodule worktree. Repository inspection now skips that sweep to remove status latency, while still tracking updates to the commit pointer each submodule uses.

BUGFIX

Print mode no longer marks a run failed over benign tool errors

When you put the CLI into an automated flow, print mode with -p or --print used to mark the whole run as failed and return a non-zero exit code for benign tool errors or permission denials. That is now fixed for --output-format json and stream-json too. A non-interactive run reports failure only for a cascade-level failure (one that reaches the overall run), matching an interactive session.

Local trouble no longer mislabels the whole result.

BUGFIX

Startup no longer truncates settings it cannot parse

If you maintain settings.json yourself, an unrecognized setting value or syntax mistake should not make startup overwrite what was already there. On encountering either one, the CLI now preserves the existing file on disk instead of saving a truncated version.

You can return to fix that entry without first rescuing the rest of your settings from a damaged file.

BUGFIX

Built-in customizations appear even without an explicit agent config

Without an explicit agent configuration (the data that configures an agent), /skills, /plugins, /agents, and /hooks could say no customizations were found, making built-in content seem absent. Their listing views now mount built-in customizations before showing the list, so they appear even with no agent configuration specified.

This changes the listing view; it does not require you to create an agent config.

BUGFIX

Streaming CJK drafts stop gaining stray spaces

While a CJK draft (Chinese, Japanese, or Korean text) streams into the main prompt, stray spaces could appear between characters and make the sentence look pulled apart. Streaming transcript updates now normalize whitespace at their boundaries, preventing those unwanted inserts.

The fix applies to streaming updates in the main prompt and keeps the draft at its intended spacing.

BUGFIX

The conversation spinner stops waking the CPU after a turn ends

After a conversation turn had already finished, the spinner (the rotating animation that signals processing) could keep ticking in the background. That loop now stops when the turn completes, so an idle CLI no longer causes unnecessary CPU wakeups from it.

No setting is required; the fix is for the background animation that kept running after completion.

Original changelog

Original changelogSkills gain icons without throwing terminal lists out of line
Added skill icon and visual branding support across the CLI, displaying emoji icons declared under `metadata.icon` in `SKILL.md` frontmatter across the `/skills` catalog list view, detail inspection headers, and slash command autocompletion popups, with proper multi-byte Unicode display width calculation to maintain terminal layout alignment.
Original changelog@ path completion can now find empty folders too
Improved `@` file path autocompletion by indexing empty directories alongside files in ripgrep search results, allowing unpopulated and directory-only workspace structures to be discovered and traversed during path completion.
Original changelogDefault review mode stops repeatedly asking to read workspace files
Improved permission management by automatically granting workspace-scoped read access under the default review mode, eliminating repetitive approval prompts for reading or listing files within the workspace root while strictly maintaining confirmation prompts for file modifications and external access.
Original changelogGit status checks avoid an extra sweep through submodule worktrees
Improved Git repository inspection performance by skipping recursive submodule worktree scans while continuing to track commit pointer updates to eliminate status latency in repositories with submodules.
Original changelogPrint mode no longer marks a run failed over benign tool errors
Fixed print mode (`-p`/`--print`, including `--output-format json` and `stream-json`) treating benign tool execution errors and permission denials as fatal run failures with non-zero exit codes, ensuring headless exit codes reflect only cascade-level failures and match interactive session behavior.
Original changelogStartup no longer truncates settings it cannot parse
Fixed the CLI overwriting and discarding unparsed configuration in `settings.json` when encountering an unrecognized setting value or syntax error on startup, preserving the existing configuration file on disk instead of saving a truncated version.
Original changelogBuilt-in customizations appear even without an explicit agent config
Fixed `/skills`, `/plugins`, `/agents`, and `/hooks` commands reporting that no customizations were found when invoked without an explicit agent configuration by mounting built-in customizations in listing views.
Original changelogStreaming CJK drafts stop gaining stray spaces
Fixed CJK draft jitter in the main prompt by normalizing boundary whitespace in streaming transcript updates, preventing unwanted spaces from being inserted characters.
Original changelogThe conversation spinner stops waking the CPU after a turn ends
Fixed the conversation spinner animation loop continuing to tick indefinitely in the background after turns completed, eliminating unnecessary CPU wakeups while the CLI is idle.