# Claude Code v2.1.251 - Product: Claude Code (https://whatsnew.fyi/product/claude-code) - Vendor: Anthropic - Date: 2026-08-28 - Version: v2.1.251 - Original notes: https://github.com/anthropics/claude-code/releases/tag/v2.1.251 - Permalink: https://whatsnew.fyi/product/claude-code/releases/v2.1.251 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Added `PreModelSwitch` and `PostModelSwitch` hook events to block, confirm, or annotate a model switch; `SessionStart` resume hooks now receive session staleness and estimated re-cache cost - **added** — Added live streaming of a foreground subagent's tool calls and results to Remote Control clients - **added** — Added a Spend limit bar to `/usage` and a `rate_limits.spend_limit` status line field for developers behind a Claude apps gateway with spend limits - **added** — Added a per-session prompt-cache line to `/cost` with hit ratio, misses, tokens re-cached, and warm/cold status, plus a matching `prompt_cache` object for status line scripts - **added** — Added `attach`, `logs`, `stop`, `respawn`, and `rm` to `claude --help`; the `--resume` message now names the exact `claude attach ` command - **fixed** — Fixed file tools (Read, Write, Edit) following a symlink swapped inside the working directory after the permission check, which could read or write outside the approved location - **fixed** — Fixed plugin commands declared in a marketplace entry being able to point outside the plugin directory; such paths are now rejected with a path-traversal error - **fixed** — Fixed project settings being able to enable detailed beta tracing or raw API body logging, and a lower-scope beta tracing endpoint bypassing an OTLP collector pinned by managed settings or a host app - **fixed** — Fixed the Workflow tool reading a `scriptPath` outside what the session may read before the permission check ran - **fixed** — Fixed Grep and Glob not applying `Read(...)` deny rules to files reached through a symlinked search path - **fixed** — Fixed conversations getting stuck on "text content blocks must be non-empty" errors after a turn where the model produced only thinking - **fixed** — Fixed the first launch on a fresh install starting in default mode instead of auto mode for accounts whose startup default is auto mode - **fixed** — Fixed Opus 5 requests failing with "effort ... is not supported when thinking is disabled" when effort was xhigh/max and thinking was turned off; effort is now sent as `high` in that case - **fixed** — Fixed replying to a message Claude Desktop delivered from another session: `SendMessage` to that session id now delivers through Claude Desktop instead of failing - **fixed** — Fixed TUI lag with many parallel subagents: per-second progress ticks now replace their predecessor instead of piling up in the transcript - **fixed** — Fixed agent teams: a teammate's final answer now arrives in the idle notification instead of a content-free "available" notice - **fixed** — Fixed background subagents being unable to reply to a message from an unnamed sibling or parent agent - **fixed** — Fixed managed-settings `disableAutoMode` arriving mid-session not moving an already-running auto-mode session back to default mode - **fixed** — Fixed a "switch to Opus 1M for 5x more context" tip that appeared even when the current Opus model already has a 1M context window - **fixed** — Fixed Claude apps gateway sessions treating a stored Anthropic profile as active in `/status` and retrying gateway 401s with it ##### What's changed - Added `PreModelSwitch` and `PostModelSwitch` hook events (block, confirm, or annotate a model switch); `SessionStart` resume hooks now receive session staleness and the estimated re-cache cost - Added live streaming of a foreground subagent's tool calls and results to Remote Control clients (background subagents, the default, still show status only) - Added a Spend limit bar to `/usage` and a `rate_limits.spend_limit` status line field for developers behind a Claude apps gateway with spend limits - Added a per-session prompt-cache line to `/cost` (hit ratio, misses, tokens re-cached, warm/cold) and a matching `prompt_cache` object for status line scripts - Added `attach`, `logs`, `stop`, `respawn`, and `rm` to `claude --help`; the `--resume` message for a running background session now names the exact `claude attach ` command - Fixed file tools (Read, Write, Edit) following a symlink swapped inside the working directory after the permission check, which could read or write outside the approved location - Fixed plugin commands declared in a marketplace entry being able to point outside the plugin directory; such paths are now rejected with a path-traversal error - Fixed project settings being able to enable detailed beta tracing or raw API body logging, and a lower-scope beta tracing endpoint bypassing an OTLP collector pinned by managed settings or a host app - Fixed the Workflow tool reading (and quoting in errors) a `scriptPath` outside what the session may read before the permission check ran - Fixed Grep and Glob not applying `Read(...)` deny rules to files reached through a symlinked search path - Fixed conversations getting stuck on "text content blocks must be non-empty" errors after a turn where the model produced only thinking - Fixed the first launch on a fresh install starting in default mode instead of auto mode for accounts whose startup default is auto mode - Fixed Opus 5 requests failing with "effort … is not supported when thinking is disabled" when effort was xhigh/max and thinking was turned off; effort is now sent as `high` in that case - Fixed replying to a message Claude Desktop delivered from another session: `SendMessage` to that session id now delivers through Claude Desktop instead of failing with "not reachable" - Fixed TUI lag with many parallel subagents: per-second progress ticks now replace their predecessor instead of piling up in the transcript - Fixed agent teams: a teammate's final answer not reaching the team lead — it now arrives in the idle notification instead of a content-free "available" notice - Fixed background subagents being unable to reply to a message from an unnamed sibling or parent agent (`from` was the agent type, which is not an address) - Fixed managed-settings `disableAutoMode` arriving mid-session not moving an already-running auto-mode session back to default mode - Fixed a "switch to Opus 1M for 5x more context" tip that appeared even when the current Opus model already has a 1M context window - Fixed Claude apps gateway sessions treating a stored Anthropic profile (e.g. a Console sign-in) as active: listing it in `/status` and retrying gateway 401s with it, though requests never use it - Fixed cloud sessions telling Claude the model had changed when the host was only setting the session's initial model - Fixed Remote Control reporting a failure when an organization's policy disables it; it now shows a single quiet notice instead - Fixed `/mcp reconnect` on Remote Control showing a generic withheld-detail error instead of the real remedy when a server was disabled in another session - Fixed `--input-format stream-json`: client-injected assistant tool calls sent without a message id were merged into the first one and their results lost, including when resuming older sessions - Fixed session transcripts being silently overwritten when a directory change relocated a session onto an existing same-ID transcript - Fixed background sessions and their _[Truncated at 4000 characters — full notes: https://github.com/anthropics/claude-code/releases/tag/v2.1.251]_