Release notes

FEATURE

Model choice gains a depth dial and agent-specific tiers

When a reply is urgent, you want speed; when a problem is thorny, you may accept a wait for deeper reasoning. The new /effort command turns that tradeoff into a left/right timeline gauge, and also accepts a level directly; --effort makes the choice when launching the CLI. /model now shows stable model slugs, fixed names you can reliably reuse across sessions. A custom agent, a helper with prewritten instructions, can now declare its own model: as a subagent it can use a tier such as flash or pro, otherwise it inherits its parent’s model. It is like setting both a camera lens and shutter speed: choose quick or deliberate for task in front of you.

FEATURE

Settings fit short terminals and diff viewing stays steady

On a split laptop screen, a settings list should not spill below the window like an overlong poster. /settings and /config are now bounded, scrollable lists, and their dropdowns no longer flicker. While reviewing code changes, the /diff viewer no longer jitters or pushes the status line offscreen when you page, wrapped lines appear, or comments expand. The prompt also honors a remapped Enter: if it is bound to prompt.insert_newline, it inserts a line break instead of submitting. It is like replacing a messy desk with a workbench full of drawers: same tools, but they stay where your hands expect them.

FEATURE

Background work becomes isolated, orderly, and less wasteful

When the CLI refreshes data in the background, one small failure should not scramble the whole session. Long-running background tasks now share one lifecycle, with deterministic start and shutdown and panic-safe launching; one failed task no longer disrupts the session, and pending analytics are flushed before exit. Several refresh triggers arriving in a burst are coalesced into one run instead of repeating work. A data race, where concurrent work touches shared data unpredictably, is also guarded while customization rules are collected. It is like giving each dish in a kitchen its own burner and turning three rapid bell rings into one order: one burnt pan does not close the restaurant.

BUGFIX

MCP authentication stays up and returned content reaches chat

Pressing Authenticate for a remote MCP server in the /mcp panel no longer crashes the CLI. More importantly, embedded resources, extra text or inline media carried inside an MCP tool result, used to be silently discarded; they now appear in the conversation. In other words, once you connect an external tool through MCP, the authentication door opens and its explanation or image can come through with it. It is like a parcel counter that once shut down while checking your ID and removed documents from packages; now the counter stays open and every enclosure reaches your hands.

BUGFIX

Command checks and file search handle awkward input more safely

With a command such as --grep="a|b", a pipe character inside a quoted argument is not a pipeline, a chain that passes one command’s output to another. Permission checks used to misread it and ask unnecessarily; now they interpret it correctly. File viewing and search also stop failing with invalid UTF-8 when a multibyte character is cut at a truncation boundary. And when you are not eligible, the CLI again shows the real reason rather than “unknown reason.” It is like airport screening that can distinguish a vertical mark on a luggage tag from a hazardous item, and can explain which document is missing when it cannot let you board.

FEATURE

Chained commands, agents, and headless runs now follow their intended rules

Finished planning and want an immediate critique? One prompt can now begin /plan /grill-me <prompt>; each leading slash command is parsed, activated, and displayed in typed order. A custom agent explicitly marked subagent: false no longer sneaks into the callable-subagent list. Headless runs, execution through -p or --print without a terminal window, now honor saved settings.json policies: permissions, file access, sandbox mode, auto-execution, and artifact review. A /btw side question also stops making a duplicate conversation with its parent’s title. It is like a station transfer board: you can change lines in order, closed platforms are not assigned trains, and an unattended night train still follows its rules.

Original changelog

Original changelogModel choice gains a depth dial and agent-specific tiers
Added a `/effort` command to view and change the current model's reasoning effort, with a left/right timeline-gauge picker and a direct `/effort <level>` form so you can trade latency for depth on the fly.
Added an `--effort` flag to select a model's reasoning-effort variant when launching the CLI.
Added stable, user-facing model slugs that appear in the `/model` picker and are accepted by `--model`, so you can pin a specific model reliably across sessions.
Added a `model` option to custom agent frontmatter so an agent runs at a chosen model tier (such as `flash` or `pro`) when invoked as a subagent, defaulting to `inherit` (the parent's model).
Redesigned the `/model` picker to group models by their base model and choose reasoning effort from a timeline gauge navigable with Left and Right, and added an effort badge to the status line for models that expose multiple effort variants.
Original changelogSettings fit short terminals and diff viewing stays steady
Improved the `/settings` (`/config`) panel by making it a bounded, scrollable list so it renders correctly in short terminals instead of overflowing, and stopped it from flickering when opening and closing dropdowns.
Improved scrolling in the `/diff` viewer so paging through a diff no longer jitters or pushes the status line off the screen when lines wrap or comments expand.
Fixed the prompt to honor a custom Enter binding to `prompt.insert_newline`, so a remapped Enter inserts a newline instead of submitting.
Original changelogBackground work becomes isolated, orderly, and less wasteful
Improved background-task reliability by moving long-running work onto a shared lifecycle with deterministic startup and shutdown and panic-safe launching, so a failure in one background task no longer disrupts the session and pending analytics are flushed on exit instead of dropped.
Improved responsiveness of bursty background refreshes by coalescing rapid repeated triggers into a single run, cutting redundant work.
Fixed a data race when collecting customization rules by guarding the shared structures.
Original changelogMCP authentication stays up and returned content reaches chat
Fixed a crash when triggering Authenticate on a remote MCP server in the `/mcp` panel.
Fixed MCP tool results containing embedded resources being silently dropped, so text and inline media returned by MCP servers now surface in the conversation.
Original changelogCommand checks and file search handle awkward input more safely
Fixed permission checks splitting a single command into a pipeline when an argument contained quoted shell metacharacters (such as `--grep="a|b"`), which caused spurious permission prompts.
Fixed the file-view and file-search tools failing with invalid-UTF-8 errors when a multi-byte character was split at a truncation boundary.
Fixed eligibility error messages so the CLI shows the real reason again instead of defaulting to a generic "unknown reason".
Original changelogChained commands, agents, and headless runs now follow their intended rules
Added support for stacking multiple leading slash commands in a single prompt, so a chain like `/plan /grill-me <prompt>` parses, activates, and renders every command in the order you typed them.
Fixed custom agents that declare `subagent: false` still appearing in the available-subagents list and being invocable as subagents.
Fixed headless (`-p` / `--print`) runs so they now honor persisted `settings.json` policies, including `permissions`, file access, sandbox mode, auto-execution, and artifact review.
Fixed `/btw` side-questions leaking into the conversation list as duplicate entries that carried the parent conversation's title.