Release notes

FEATURE

Fullscreen diff panel launches, keeping the terminal screen clean without artifacts

When coding in fullscreen mode, you can now enter /diff to toggle a side-by-side diff panel and inspect uncommitted changes in real time as Claude edits. When the terminal screen gets crowded, pressing ctrl+l or cmd+k clears the transcript view, and you can scroll up to view earlier messages. In addition, pressing Ctrl+Z in fullscreen to pause no longer misrenders the outer shell screen onto the paused interface, and flag icons, joined emoji, or accented letters will no longer break layout or leave stale artifacts when wrapping or falling in the terminal's last two columns.

FEATURE

Headless mode supports advisor commands, making remote operations more resource-efficient

Sessions running in headless mode via the desktop app, Remote Control, or the -p flag can now directly use text-based advisor commands. You can enter three text forms: /advisor, /advisor <model>, and /advisor off. At the same time, headless environments add /reload-plugins to reload plugins, making it available in the Claude Code Desktop and SDK command lists. If an invalid model name is entered remotely, the system now refuses it with an error immediately instead of crashing on the next message. Idle CPU usage has also improved for non-interactive (-p / SDK) sessions.

FEATURE

Fable 5.1 caching fully upgraded, 1M context compaction no longer times out

prompt_cache  # status line field
model: fable  # agent setting
ANTHROPIC_DEFAULT_FABLE_MODEL  # pin
/model claude-fable-5-1  # full command

When running /cost or checking the prompt_cache field in the status line, cache misses now indicate the likely cause, such as changes to tool definitions, system prompt modifications, or idling past the TTL. Claude Fable 5.1 previously did not include the context attached after tool results in prompt caching, causing it to be re-sent as uncached input on every tool-call turn; it is now included. Changing /effort mid-session no longer invalidates the prompt cache. The model: fable agents listed above will no longer ignore the [1m] tag on pins and silently fall back to 200K. If an organization has access to Fable 5.1, the /model picker now displays it; previously it had to be typed as the full command above. Opus and Fable sessions now compact shortly before reaching the 1M token limit, and recovery compaction on very large contexts no longer times out at 10 minutes.

FEATURE

Permission rules accurately parse parentheses, tightening path matching against loopholes

Permission rules for Edit, Write, or Read whose paths contain parentheses were previously dropped as invalid or ignored by the Bash sandbox, leaving read-only folders writable. If an uncompilable regex pattern appears, such as an unclosed bracket, every file edit fails with Invalid regular expression. Deny rules of this kind now fall back to guarding their literal paths. If extra text is mistakenly appended after the closing parenthesis, such as Bash(ls) x, the system now directly reports an invalid setting instead of silently ignoring it. For Windows examples like Edit(C:\dir\(name)\**) where \( is read as an escaped parenthesis rather than a path separator, the error message now suggests an unambiguous spelling. In addition, the Glob and Grep tools now check permissions before reporting whether a path exists.

BUGFIX

Manual commands run outside the sandbox, accurately intercepting hidden substitutions

Commands you enter at the terminal prompt starting with an exclamation mark ! will run outside the sandbox even when strict sandbox mode sandbox.allowUnsandboxedCommands: false is enabled, just like typing directly into your own terminal.

{"sandbox":{"allowUnsandboxedCommands":false}}
permissions.blockReadsOutsideWorkingDirectories
REPORTTIME
REPORTMEMORY
DIRSTACKSIZE

The previous change applying Read() deny rules to Bash arguments—which denied npm run build under a Read(./**/build/**) rule in every mode and prompted for cd … && grep even in auto mode—has been reverted and no longer behaves this way. On macOS, enabling the blocking key listed above no longer prevents sandboxed Git from reading the user's git config, and worktree-isolated subagents can now access their own checkout directories. If zsh hides a command substitution inside assignments to the three parameters listed above, it now prompts for approval.

BUGFIX

Enterprise credentials log in smoothly, managed files bypass repeated approvals

Enterprise identity login and server-managed settings are clearer and more stable in this update. When a corporate root CA is installed only in the OS certificate store, AWS Bedrock model discovery, token counting, and AWS SSO/STS calls no longer fail due to missing issuer certificates. Members using claude.ai Enterprise or Team plans can now load managed settings normally even if a leftover API key from an earlier /login remains; running /status clearly marks which credential is in effect and which is unused. Server-managed CLAUDE.md files under the key claudeMd no longer trigger the security approval dialog. Hooks, shell commands, sandbox settings, and unsafe env configurations still require approval.

FEATURE

Gateway supports Desktop policies, automatically blocking misspelled nested fields

The gateway now supports the following keys:

oidc.scope_on_refresh  # scope key
userPluginMarketplacesEnabled  # Desktop key
userPluginUploadsEnabled  # Desktop key
orgPluginSettings  # list format

For identity providers that only return an ID token on refresh when requested for openid again, oidc.scope_on_refresh can be configured. Refresh failure logs also name the step that failed. Aborted requests on Bedrock now use AWS's free CountTokens API to count input tokens—requiring IAM bedrock:CountTokens—instead of sending a request containing only a single token. The two Desktop keys are placed in the desktop policy block. orgPluginSettings is now sent in list format for Claude Desktop 1.15200.0 and later to read; older versions ignore it. If a desktop policy misspells a field in a nested object under managedMcpServers or orgPluginSettings, startup is refused and the exact field is identified.

BUGFIX

Plugin loading no longer freezes model switching, browser connection stabilizes

When a plugin hook or organization plugin marketplace fails to load, switching models no longer locks the entire session; each switch now re-checks and states the reason for refusal. SDK-provided MCP servers, such as Desktop connectors, no longer miss the first turn of conversation. When adding or removing connectors in cloud-hosted claude.ai sessions, Claude in Chrome tools no longer fail mid-task with Not connected. If an organization admin turns off this feature, --chrome, /chrome, and browser tools are disabled altogether. When installing plugins from a URL marketplace where the host application (such as Claude Desktop) stores the marketplace as a directory, it previously failed with:

marketplace entry path does not stay inside the marketplace directory

FEATURE

Agent team notifications route accurately, structured output adds early safeguards

When a subagent wakes another agent via SendMessage, the completion notification is now correctly sent back to the subagent that initiated the wake-up, rather than mistakenly delivered to the main session. During long API retry waits (such as under CLAUDE_CODE_RETRY_WATCHDOG), agent team transcripts are no longer evicted or wiped blank by retry notices. When running workflows, if a subagent is undergoing long context compaction, it is no longer misidentified as stalled and abruptly restarted. For structured output, Workflow's agent({schema}) now rejects unsatisfiable JSON Schemas up front, and errors hitting the retry limit will include the last validation failure. The 1-hour time limit on background commands started by subagents has been removed; they now run until they exit or are stopped, matching the main session.

FEATURE

Background sessions prevent ghost twins, worktree deletions safely guard unpushed commits

Sessions moved to the background no longer appear in ListAgents as a phantom interactive twin with the same name, and the viewer will no longer receive its SendMessage deliveries. Intermittent output swap errors when multiple sessions share the same project directory have also been fixed. When deleting a background session whose worktree has unpushed commits, the first attempt reports the branch name and commit count, and deleting again discards the worktree. Resuming with -p --resume or --continue when Git metadata is lost will fail once, then proceed without the worktree. If a self-hosted runner is configured with --kill-session-after-min, encountering a paused state that is purely waiting for user input will release the session peacefully instead of killing it and reporting a failure.

BUGFIX

History rewind verifies backups reliably, GitLab links no longer point to GitHub

When rewinding project state via /rewind or --rewind-files, the system now includes stricter verification mechanisms. If checkpoint backup files are missing and nothing is actually restored, the system no longer falsely reports success, nor does it leave stale file-read tracking from rewound turns—preventing misjudgments or full-file re-injections after external edits. Publishing an artifact in a remote or desktop app session no longer opens an unnecessary extra browser tab, and parameter validation errors on the first artifact tool call in collaboration sessions have been resolved. For developers using GitLab, projects in nested subgroups are now properly recognized as GitLab repositories, and issue reference links in the terminal (such as owner/repo#123) link accurately to gitlab.com rather than mistakenly to GitHub.

FEATURE

Skills preserve selected line counts accurately, cloud review wait window extended

IDE line selections are no longer lost when triggering a skill or slash command, allowing Claude to receive the N lines selected context. Managed skillOverrides entries keyed on a bundled skill's alias—such as overriding /doctor with checkup—now apply properly, and Skill(name) deny rules fully cover nested skills written in the <dir>:name format. The bundled claude-api skill examples have updated their Go, Java, and C# code to current-generation model IDs, clarifying that cheaper worker or subagent models should also use current-generation models. The maximum wait time for cloud review commands /ultrareview and claude ultrareview has been extended from 30 minutes to 45 minutes.

FEATURE

VS Code footer displays effort level, retrying responses leaves no artifacts

The VS Code extension brings cleaner interface rendering and session management. The model pill in the footer now directly displays the currently selected effort level, no longer retaining a stale value after switching models, and pill dimensions have returned to their earlier compact size. In the session list's status filter menu, Open and Closed options have been added for faster project categorization and searching. In addition, after Claude Code retries a dropped response, the screen no longer leaves behind half-finished messages, empty tool cards, or an extra Thought for line.

FEATURE

VS Code smartly switches open tabs, remote settings apply immediately

Working across multiple tabs and Remote Control in VS Code is now smoother. Selecting a session from the session history picker that is already open in another tab directly switches to that tab instead of loading the same conversation a second time. Executing the Rename command while a tab view is reloading now reliably applies the new name instead of silently doing nothing. When opening a new session where Remote Control starts automatically, the welcome screen no longer inexplicably disappears. Furthermore, toggling "Enable Remote Control for all sessions" right as a tab is launching now properly applies to the initializing tab.

Original changelog

Original changelogFullscreen diff panel launches, keeping the terminal screen clean without artifacts
Added a diff panel that opens beside the conversation in fullscreen mode and shows your uncommitted changes as Claude edits; toggle it with `/diff`
Changed `ctrl+l` / `cmd+k` in fullscreen mode to clear the transcript view like a terminal `clear`; scroll up to see earlier messages
Fixed Ctrl+Z in fullscreen leaving the shell on the alternate screen, drawn over the paused interface
Fixed flags, joined emoji and accented letters splitting across wrapped lines, and stale text staying on screen when a flag or joined emoji falls in the terminal's last two columns (now shown as `…`)
Original changelogHeadless mode supports advisor commands, making remote operations more resource-efficient
Added `/reload-plugins` to headless sessions, so it appears in the Claude Code Desktop and SDK command lists
Added a text form of `/advisor` (`/advisor`, `/advisor <model>`, `/advisor off`) for the desktop app, Remote Control, and other headless (`-p`/Agent SDK) sessions
Fixed Remote Control accepting a model pick that is not a valid model name; it is now refused with an error instead of failing on the next message
Improved idle CPU usage of non-interactive (`-p` / SDK) sessions
Original changelogFable 5.1 caching fully upgraded, 1M context compaction no longer times out
Added a likely cause for prompt-cache misses (e.g. tool definitions or system prompt changed, idle past the TTL) to `/cost` and the status line's `prompt_cache` field
Fixed `model: fable` agents ignoring the `[1m]` tag on an `ANTHROPIC_DEFAULT_FABLE_MODEL` pin and silently running with a 200K context window
Fixed the `/model` picker not showing Fable 5.1 for organizations that can use it, which was only accepted when typed as `/model claude-fable-5-1`
Fixed prompt caching on Claude Fable 5.1 not covering the context attached after tool results, so it was re-sent as uncached input on every tool-call turn
Improved auto-compact for 1M-context models: Opus and Fable sessions now compact shortly before the 1M-token limit, and recovery compaction on very large contexts no longer times out at 10 minutes
Improved `/effort` on Claude Fable 5.1 so changing effort mid-session no longer invalidates the prompt cache
Original changelogPermission rules accurately parse parentheses, tightening path matching against loopholes
Fixed `Edit`/`Write`/`Read` permission rules whose path contains parentheses being dropped as invalid or ignored by the Bash sandbox, which left "read-only" folders writable
Fixed one file permission rule with an uncompilable pattern (e.g. an unclosed `[`) making every file edit fail with `Invalid regular expression`; such a deny rule now guards the literal path it spells
Glob/Grep: Fixed the search path being probed on disk before the permission check; a missing path is now reported after permission is decided, as Read does
Improved the settings error for rules such as `Edit(C:\dir\(name)\**)`, where `\(` is read as an escaped parenthesis rather than a path separator, to suggest an unambiguous spelling
Changed permission rules with text after the closing parenthesis (e.g. `Bash(ls) x`), which never matched anything, to be reported as invalid settings instead of being silently ignored
Original changelogManual commands run outside the sandbox, accurately intercepting hidden substitutions
Fixed Bash permission checks auto-approving zsh commands that hide a command substitution in a REPORTTIME, REPORTMEMORY or DIRSTACKSIZE assignment; these now prompt for approval
Fixed `permissions.blockReadsOutsideWorkingDirectories` on macOS hiding the user's git config from sandboxed git and hiding a worktree-isolated sub-agent's own checkout
Reverted the 2.1.259 change applying `Read()` deny rules to Bash arguments; it denied `npm run build` under a `Read(./**/build/**)` rule in every mode and made `cd … && grep` prompt even in auto mode
Changed commands typed at the `!` bash-mode prompt to run outside the sandbox even when strict sandbox mode (`sandbox.allowUnsandboxedCommands: false`) is on, like typing into your own terminal
Original changelogEnterprise credentials log in smoothly, managed files bypass repeated approvals
Fixed Bedrock model discovery, token counting and AWS SSO/STS credential calls failing with "unable to get local issuer certificate" when the corporate root CA is only in the OS certificate store
Fixed managed settings not loading for claude.ai Enterprise/Team users who also had a leftover API key from an earlier `/login`
Fixed `/status` listing a signed-in claude.ai account and a configured API key as if both were in effect; the credential not in use is now marked
Changed server-managed settings so a managed CLAUDE.md (`claudeMd`) no longer triggers the security approval dialog; hooks, shell-command, sandbox, and unsafe `env` settings still require approval
Original changelogGateway supports Desktop policies, automatically blocking misspelled nested fields
Added `oidc.scope_on_refresh` to the Claude apps gateway for IdPs that return an id_token on refresh only when asked for `openid` again
Added Claude apps gateway support for newer Claude Desktop keys in `desktop` policy blocks, including `userPluginMarketplacesEnabled` and `userPluginUploadsEnabled`
Improved the Claude apps gateway's refresh-failure log to name the step that failed
Improved the Claude apps gateway on Amazon Bedrock: input tokens for an aborted request are now counted with AWS's free CountTokens API (grant `bedrock:CountTokens`) instead of a one-token request
Changed Claude apps gateway to send `orgPluginSettings` in the list form read by Claude Desktop 1.15200.0 and later; older desktops ignore it
Changed Claude apps gateway to also refuse to start, naming the field, when a `desktop` policy misspells a field in a nested object of a `managedMcpServers` or `orgPluginSettings` entry
Original changelogPlugin loading no longer freezes model switching, browser connection stabilizes
Fixed model switching staying blocked for the rest of the session after a plugin hook load failure; each switch now re-checks and the refusal names the cause
Fixed model switching being blocked for the session when an organization-managed plugin's marketplace could not be loaded
Fixed SDK-provided MCP servers (e.g. Desktop connectors) sometimes missing from the first turn and only appearing on the next one
Fixed Claude in Chrome tools failing with "Not connected" mid-task in cloud-hosted claude.ai sessions when a connector was added or removed
Fixed plugins from a URL marketplace failing to install with "marketplace entry path does not stay inside the marketplace directory" when a host app (e.g. Claude Desktop) stores it as a directory
Changed Claude in Chrome to follow your organization's Claude in Chrome admin setting; when an admin turns it off, `--chrome`, `/chrome` and the browser tools are unavailable
Original changelogAgent team notifications route accurately, structured output adds early safeguards
Fixed a subagent that resumed another agent via SendMessage never being woken by that agent's completion (the notification went to the main conversation instead)
Fixed agent teams: an in-process teammate's transcript losing messages, or going blank, during long API retry waits (e.g. under `CLAUDE_CODE_RETRY_WATCHDOG`) as retry notices evicted real messages
Fixed Workflow tool subagents being restarted as stalled while a long context compaction was still in progress
Improved structured output: Workflow `agent({schema})` rejects a JSON Schema that can never be satisfied up front, and retry-cap errors now include the last validation failure
Removed the one-hour time limit on background commands started by subagents; they now run until they exit or are stopped, matching the main session
Original changelogBackground sessions prevent ghost twins, worktree deletions safely guard unpushed commits
Fixed `-p --resume`/`--continue` (as used by the desktop app) failing on every retry once a session's worktree directory lost its git metadata; it now fails once, then resumes without the worktree
Fixed a session that moved to the background appearing twice in ListAgents (once as a phantom "interactive" twin with the same name) and receiving SendMessage deliveries in the viewer
Fixed intermittent "task output swap refused" errors when many sessions share a project directory
Improved deleting a background session whose worktree has unpushed commits: the message now names the branch and commit count, and deleting again discards the worktree
Changed self-hosted runner `--kill-session-after-min` to release a session that is only waiting on its user (paused, resumable on the next message) instead of killing it and reporting a failure
Original changelogHistory rewind verifies backups reliably, GitLab links no longer point to GitHub
Fixed `/rewind` and `--rewind-files` reporting success when checkpoint backup files were missing and nothing was actually restored
Fixed `/rewind` leaving stale file-read tracking from the rewound-away turns, which caused "File unchanged since last read" stubs and full-file re-injection after external edits
Fixed an extra browser tab opening when an artifact is published in a session you're driving from claude.ai, the desktop app, or mobile (Remote Control)
Fixed the Artifact tool's first call failing with an "Invalid tool parameters" validation error in some Cowork sessions
Fixed repository detection for GitLab projects in nested subgroups (e.g. `gitlab.com/group/subgroup/project`)
Fixed `owner/repo#123` issue references in rendered output linking to github.com when working in a GitLab repository; they now link to the gitlab.com issue
Original changelogSkills preserve selected line counts accurately, cloud review wait window extended
Fixed managed `skillOverrides` entries keyed on a bundled skill's alias (e.g. `checkup` for `/doctor`) not applying, and `Skill(name)` deny rules not covering a nested skill listed as `<dir>:name`
Fixed IDE line selections being dropped when running a skill or slash command (the "N lines selected" context now reaches Claude)
Improved `/ultrareview` and `claude ultrareview` to wait up to 45 minutes (previously 30) for long-running cloud reviews
Updated the bundled `claude-api` skill so its Go, Java, and C# samples use current-generation model IDs, and clarified that cheaper worker or sub-agent models should be current-generation too
Original changelogVS Code footer displays effort level, retrying responses leaves no artifacts
[VSCode] Added the selected effort level to the footer model pill, fixed a stale effort level after switching models, and returned the footer pills to their earlier compact size
[VSCode] Added Open and Closed to the session list's status filter menu
[VSCode] Fixed a half-finished message, an empty tool card or an extra "Thought for" line staying on screen after Claude Code retried a dropped response
Original changelogVS Code smartly switches open tabs, remote settings apply immediately
[VSCode] Fixed the welcome screen disappearing in a new session when Remote Control turns on automatically
[VSCode] Fixed the session history picker loading a session a second time when it is already open in another tab; it now switches to that tab
[VSCode] Fixed the session tab's Rename command silently doing nothing while the tab's view was reloading; it now always applies
[VSCode] Fixed "Enable Remote Control for all sessions" not applying to a session tab that was still starting when the toggle was flipped