v2.1.257
Added 9
- Added Claude Fable 5.1 (claude-fable-5-1) as the new default Fable model with 1M context and $10/$50 per Mtok pricing with $0.25/Mtok cache reads
- Added Time format (timeFormat) and timeZone settings supporting 12-hour, 24-hour, 24-hour UTC, or custom strftime patterns for turn-end clock and transcript-view timestamps
- Added Containment Escape rule to auto mode to prevent auto-approval of cloud metadata-credential fetches, egress evasion, and cross-tenant reach unless marked as expected
- Added CLAUDE_CODE_SUBAGENT_MODEL_FORCE environment variable to apply the configured subagent model to every subagent, ignoring per-spawn and agent-definition model overrides
- Added s flag in /effort command to change effort for the current session only, matching /model behavior
- Added /doctor warning for stale sandbox mask files left by killed sessions
- Added one-time prompt in auto mode before first file read outside working directories with option to block such reads via permissions.blockReadsOutsideWorkingDirectories
- Added support for gateway-supplied description on discovered /model picker entries via CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY
- Added Agents context to make Ctrl+S and Ctrl+T rebindable in claude agents
Fixed 10
- Fixed settings in a .claude/ folder created after startup not being picked up until restart
- Fixed sessions dispatched from an agent view opened with ← always starting in the original session's permission mode instead of respecting target directory's defaultMode and agent's permissionMode
- Fixed keybindings.json rebinds of Ctrl+G being ignored in claude agents
- Fixed background sessions failing to start on macOS npm installs during self-update and on Windows when a stale daemon lock file pointed at a reused process id
- Fixed the working spinner stopping while a response streams behind a slash-command panel
- Fixed background session state.json detail repeating its own dispatch prompt after a scheduled wake-up
- Fixed claude agents keeping a background session re-prompted buried in Completed after it finished again; Completed now orders by latest finish
- Fixed claude --bg from a directory that was just deleted reporting backgrounded and leaving a crashed session row; now prints reason and exits 1
- Fixed Remote Control connecting mid-session re-sending the Bash tool definition, causing a prompt-cache miss
- Fixed doubly-listed custom Authorization header overriding configured credential on Bedrock, Mantle, Vertex, and WIF; Vertex setup wizard no longer picks up leftover Anthropic profile from ~/.config/anthropic
From Claude Code
What's changed
- Added Claude Fable 5.1 (
claude-fable-5-1), now the default Fable model — 1M context, $10/$50 per Mtok with $0.25/Mtok cache reads - Added "Time format" (
timeFormat) andtimeZonesettings: 12-hour, 24-hour, 24-hour UTC, or a strftime pattern for the turn-end clock and transcript-view timestamps - Added a Containment Escape rule to auto mode so cloud metadata-credential fetches, egress evasion, and cross-tenant reach are no longer auto-approved unless your environment marks them expected
- Added
CLAUDE_CODE_SUBAGENT_MODEL_FORCEto applyCLAUDE_CODE_SUBAGENT_MODEL(or the main model) to every subagent, ignoring per-spawn and agent-definition model overrides - Added
sin/effortto change effort for the current session only, matching/model - Added a
/doctorwarning for stale sandbox mask files left by a killed session - Added a one-time prompt in auto mode before the first file read outside the working directories, with the option to block such reads (
permissions.blockReadsOutsideWorkingDirectories) - Added support for a gateway-supplied
descriptionon discovered/modelpicker entries (CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY); entries without one still read "From gateway" - Fixed settings in a
.claude/folder created after startup not being picked up until restart - Fixed sessions dispatched from an agent view opened with
←always starting in the original session's permission mode, overriding the target directory'sdefaultModeand the agent'spermissionMode - Fixed
keybindings.jsonrebinds of Ctrl+G being ignored inclaude agents; its Ctrl+S / Ctrl+T are now rebindable via the newAgentscontext - Fixed background sessions failing to start on macOS npm installs during a self-update, and on Windows when a stale daemon lock file pointed at a reused process id
- Fixed the working spinner stopping while a response streams behind a slash-command panel
- Fixed a background session's
state.jsondetailrepeating its own dispatch prompt after a scheduled wake-up - Fixed
claude agentskeeping a background session you re-prompted buried in Completed after it finished again; Completed now orders by the latest finish - Fixed
claude --bgfrom a directory that was just deleted reporting "backgrounded" and leaving a crashed session row; it now prints the reason and exits 1 - Fixed Remote Control connecting mid-session re-sending the Bash tool definition, causing a prompt-cache miss
- Fixed a doubly-listed custom
Authorizationheader overriding the configured credential on Bedrock, Mantle, Vertex, and WIF, and the Vertex setup wizard picking up a leftover Anthropic profile from~/.config/anthropic - Fixed Claude apps gateway sending stray host
Authorizationor profile headers to Foundry, Vertex, and Bedrock, and Foundry Entra ID upstreams not starting whenANTHROPIC_FOUNDRY_API_KEYis set - Fixed a leftover Anthropic API key or auth token being sent alongside your Foundry subscription key in API-key mode
- Fixed
/scheduleroutines whose prompt was saved without a message role and then ran with nothing to do - Fixed
claude agentsnot saying that a background session is waiting for you to approve a message from another session, or who sent it - Fixed a prompt stashed with Ctrl+S inside an opened background session being lost when the session went idle or was stopped and then reopened
- Fixed telemetry (OTEL) settings pushed through server-managed settings being ignored on warm starts, including desktop-app Code sessions
- Fixed a teammate permission request being answered twice when the leader's mailbox write was briefly locked
- Fixed a phantom duplicate slash-command row rendering below the in-flight turn while a command's auto-continued response streamed
- Fixed
policyHelpertimeoutMsandrefreshIntervalMsvalues above the timer maximum (2147483647) causing failures or re-runs every millisecond; they are now clamped - Fixed the token counter freezing or crawling after switching to another subagent's transcript, and made background subagents' and teammates' counters update live while a response streams
- Fixed sandbox network hosts written with a trailing dot (
example.com.): adeniedDomainsentry didn't block the host inside the sandbox, and "don't ask again" for such a host kept prompting - Fixed dismissing the Remote Control consent prompt (Esc, or
natclaude remote-control) counting as consent, so the next request connected without asking - Fixed
/mcpreconnect and enable still connecting a settings-file MCP server that a managed MCP allow/deny list orstrictPluginOnlyCustomizationloaded after startup should block - Fixed
claude mcp removeleaving a remote server's stored OAuth credentials behind whenstrictPluginOnlyCustomizationlocks MCP to plugin-only servers - Fixed Remote Control (
claude remote-control) sessions started from the Claude app ignoring the selected model and running on the machine's default instead - Fixed
--disallowedToolsand session deny rules being dropped after the first settings reload whenallowManagedPermissionRulesOnlyis enabled - Fixed
--resumelisting a backgrounded conversation twice and--continuereopening its stalled pre-background copy;--continuenow also opens finished background sessions - Fixed fullscreen mode not letting you click
!shell command output to expand it - Fixed background sessions left running an older Claude Code binary piling up across auto-updates instead of being retired
- Fixed
claude agents --jsonbriefly switching the terminal to raw mode and undoing another program's terminal settings on exit - Fixed Proactive output style sessions busy-looping with filler messages and repeated log reads instead of idling while a background command or Monitor they started is still running
- Fixed subagents stopping when a response was cut off mid-stream by a computer sleep, dropped connection, or server error; they now automatically continue instead of ending with an incomplete response
- Fixed
←doing nothing in the/btwpanel inside aclaude agentssession: it now returns to the agents list (even mid-answer), and the panel comes back when you reopen the session - Fixed sessions with an advisor model set missing the prompt cache on background requests (compaction,
/recap, prompt suggestions) and re-sending the full conversation uncached each time - Fixed
claude -pexiting about 5 seconds after its final result while a Monitor the model armed was still running; it now waits for the watch to fire or time out - Fixed a
permissions.askrule being skipped in auto mode when the matching command ran inside a compound command or subshell, letting it run without the confirmation prompt - Fixed plugins being able to read files outside their own directory through a declared command, agent, skill, hooks or other component path that is a symlink; such paths are now refused with an error
- Fixed
/add-dirrejecting a directory inside the current working directory; it now loads that directory's skills, commands, and agents like--add-dirdoes at startup - Fixed the main agent not being told when you resume a subagent you had stopped from its transcript view
- Fixed a crash when pasting ANSI-colored text (e.g. a CI log) into dialogs like
/feedback - Fixed
claude mcp add/removehanging or exhausting memory when the project's.mcp.jsonis a FIFO or a device-file symlink; it now fails fast with an actionable message - Fixed unbounded memory growth when non-JSONL data is piped into
claude -p --input-format stream-json; it now fails fast with a clear error - Fixed backgrounding a turn (
←or Ctrl+B) while a subagent or other tool was running occasionally making the background session treat that tool as rejected instead of re-running it - Fixed Bash
Read()/Edit()deny rules not applying to< fileredirects and reader commands liketacandegrep; a deny rule on any argument or redirect target now refuses the command - Fixed resuming or messaging a subagent whose transcript had grown past 5 MB (for example after reading many images) failing with "No transcript found"
- Fixed worktree-isolated sessions refusing Bash loops,
$VARreads,"$(…)"and heredocs that never touch git as "too complex to verify that it stays inside the worktree" - Fixed
/modeland/effortshowing a prompt-cache warning after rewinding a conversation back to empty - Fixed prompt-cache misses on every turn in long screenshot-heavy sessions once images exceeded the per-request size cap
- Fixed the Edit permission prompt's diff view rendering emoji and multi-code-point characters with incorrect widths
- Fixed WebSocket MCP server connection failures being logged as "[object ErrorEvent]" instead of the underlying error
- Fixed background sessions failing to open with "Couldn't start the background service" while another Claude Code process was downloading an npm update; the start now waits for it
- Fixed background commands that detach from their shell (for example under
timeoutorsetsid) surviving a task stop or Claude Code exit - Fixed Claude not being told when you stop a background command from the tasks panel or a connected client
- Fixed stopping a background subagent leaving its monitors running
- Fixed sandboxed git commands in a linked worktree losing write access to the repository's common
.gitdirectory aftercdinto a subdirectory - Fixed Bedrock and Bedrock Mantle requests going silent during long hidden-thinking phases on Opus 4.7 and later, which let idle timeouts cut the connection; the stream now carries progress events
- Fixed launching Claude Code after a Claude apps gateway expired or revoked your session: it now says the session ended and offers
/logininstead of reporting a network error - Fixed cloud sessions losing git/GitHub credentials for the rest of the session when the session's network proxy failed to start at launch; it now retries in the background and recovers
- Fixed leftover
cc-daemon-*folders in the system temp directory after an interrupted background daemon start; thecleanupPeriodDaysretention sweep now removes them - Fixed Bash permission checks auto-approving certain
[[ ]]conditionals that zsh parses differently from bash; these commands now prompt for approval - Fixed the managed-settings approval prompt showing the generic warning instead of its telemetry wording when the settings also turn detailed tracing or raw API body logging off, or trace export on
- Fixed agent-team teammates in tmux/iTerm2 panes sometimes staying open after acknowledging a shutdown request
- Fixed the keyless Console sign-in ("Sign in with your Console account") not applying your organization's server-managed settings, and
/statusnot showing the Organization for that sign-in - Improved rendering performance: less re-render work per turn in long conversations, streaming no longer slows down as the reply grows, and background-agent updates no longer re-render the whole screen
- Improved prompt input responsiveness by reducing per-keystroke rendering work
- Improved policy helper diagnostics — refresh failures now show in
/status, declining the managed-settings dialog prints why Claude Code exited, and helper timeouts are reported as timeouts - Improved
/code-review --commentto post findings on GitLab merge requests viaglab mr noteinstead of reporting the target as unsupported - Improved notifications: an MCP elicitation or permission ask queued under another dialog now sends its idle desktop notification at the same delay as a visible ask
- Improved verbose/transcript output: async hook completion notices that arrive together now appear on one line instead of one line per hook
- Improved
claude self-hosted-runner --configure-gitto also enable git push negotiation, so the first push of a new branch from a stale clone uploads only the new commits instead of the whole tree - Improved liveness reporting to SDK hosts while a response is held open by gateway keep-alives, so long waits under a raised
CLAUDE_STREAM_IDLE_TIMEOUT_MSare not mistaken for a hung session - Improved MCP connection and OAuth debug/error logs so credentials carried in a server's URL or request headers are redacted
- Improved
/forkto keep the original conversation's prompt cache in the new background session: its worktree briefing now arrives as a message instead of a system-prompt change - Improved emoji autocomplete to accept the remaining GitHub/Slack shortcode aliases (
:satisfied:,:telephone:,:collision:, …) - Changed
--effortto lift a new model's default-effort hold for that session only rather than permanently; an effort picked on claude.ai for a Remote Control session now applies during the hold - Changed a
policyHelperin MDM ormanaged-settings.jsonshadowed at launch by cached server-managed settings to run (or exit) as soon as the fetch reports them removed, not at the next launch - Changed
managedSourcesBehavior: "merge"to takesandbox.credentials.awsPairsandsandbox.ripgrepwhole from the highest managed source that sets them instead of combining the sources' values - Changed gateway model discovery (
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1) to run even whenCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICis set, since it only queries your gateway - Changed
claude --resume <session-id> --bgto continue that session under its own ID when nothing is running it, instead of silently starting a copy; a copy is now announced - Changed
/btwhistory browsing from←/→toShift+←/Shift+→(or[/]), stepping through your recent side questions and back to the live answer - Changed
defaultMode: "bypassPermissions"in.claude/settings.jsonor.claude/settings.local.jsonto be ignored, like"auto"; set it in user or managed settings, or pass--permission-mode - Changed
fableandbestin Claude apps gateway sessions to keep resolving to Fable 5 for now, since gateways not yet configured for Fable 5.1 reject it; pick Fable 5.1 in/modelto use it - Changed
--add-dir,/add-dir, andadditionalDirectoriesto refuse network paths (UNC shares,/net/<host>automounts) with a message before touching them; on Windows use a mapped drive letter - Changed Claude apps gateway sign-in and token refresh requests to verify the gateway's pinned TLS certificate, as the managed settings fetch already does
- Changed Cowork and claude.ai cloud sessions: reading an artifact that isn't yours now always asks you first, even in auto mode
- Removed the Ctrl+E command explanation on Bash and PowerShell permission prompts
- [VSCode] Added collapsible ACCOUNT & USAGE and SESSION MANAGER section headers to the session list panel, with the account email, the usage meter, and a View details link opening the usage dialog
- [VSCode] Added a model pill to the input footer that shows the current model and opens the model picker, with an Effort row and a "More models" page
- [VSCode] Added a collapse toggle to the Ungrouped section of the session list
- [VSCode] Added output style selection to the command menu, including custom styles
- [VSCode] Fixed third-party provider deployments (Bedrock, Vertex, and others) still showing claude.ai-only features (remote sessions, dictation, usage) and calling claude.ai with a leftover login
- [VSCode] Fixed the session list panel's usage meter staying blank after the panel loads; it now shows the last known usage immediately
- [VSCode] Fixed the "Enable Remote Control for all sessions" toggle so turning it on or off applies to sessions that are already open, not only to new ones
- [VSCode] Fixed screen reader announcements: a control character before a fence or heading no longer drops visible lines from speech, and bold markers spanning a heading are no longer mis-paired
- [VSCode] Changed the action menu to list slash commands in a filterable "Slash commands" dialog instead of inline; picking one runs it; the MCP servers dialog gained the same filter box
- [VSCode] Changed "Delete session" to "Archive session": archived sessions move to a collapsible "Archived sessions" group at the bottom of the list with an Unarchive action