Release notes

FEATURE

Opus 5.5 arrives as the default, and Pro plans switch to Opus

If you haven't picked a model yourself, the next time you open Claude Code you'll be on the new flagship, Claude Opus 5.5 (claude-opus-5-5). It is now the default Opus model and offers a 1M context window. Pricing is $4 per million input tokens and $20 per million output tokens, with cache reads at $0.20 per million tokens. The default model for Pro and Team Standard plans has also changed from Sonnet to Opus, matching Max, Team Premium, and Enterprise. For thinking effort, settings saved in older versions no longer apply to new models like Opus 5.5. Opus 4.7, Opus 4.8, and Fable 5 also no longer let their launch defaults override effortLevel configured via -p, the SDK, projects, or settings files.

BUGFIX

File writes check the real path, and auto mode's safety check stops hammering retries

If you let Claude edit files on its own or run in auto mode, this batch is about safety. When writing to a file through a symlink, the prompt explicitly states where the write actually lands. If the real target sits outside the project directory, acceptEdits, allow rules, and auto mode will no longer approve it. In auto mode, if a safety check declines to review an action, the action is denied once with a notice that retrying will not help. If a safety check gives no response, retries now back off with increasing intervals, stopping the turn with an explanatory message after ten consecutive non-responses. In addition, Write tool calls that pass non-standard parameters such as path, file_text, file_content, or a stray description now pass validation properly.

BUGFIX

Fullscreen lists take the mouse wheel, and dialog keys get fixed

Scrolling lists and clicking options in fullscreen no longer means fighting the dialogs. You can use the mouse wheel to scroll the /skills list and click on a skill's state options in /plugin. An issue where the wheel could not scroll lists with hidden items in fullscreen mode (such as /model and /permissions) has been fixed. Pressing Ctrl+C or Ctrl+D twice in the following dialogs now only closes the dialog instead of exiting the program:

/model, /effort, /config, /status, /usage, /plugin, /sandbox, /permissions,
/artifacts, /mobile, /login, /upgrade, /usage-credits, /install-github-app,
/setup-bedrock, /setup-vertex

Clicking a window to bring it to the foreground no longer accidentally triggers items under the pointer—such as search pickers, tab bars, agent and workflow rows, command links, or dropdowns. Dialogs no longer confirm or close on a stray y or n key, switching to Enter to accept and Esc to cancel (you can bind confirm:yes and confirm:no in keybindings.json to restore this behavior). In addition, text input fields in dialogs no longer lose typed letters, numbers, or spaces to matching keybindings.

BUGFIX

A batch of fixes for the input box, voice dictation, and stashed prompts

Can't see what you're about to send, or dictation still listening after you hit stop? Those small snags are fixed. On Windows terminals, the screen repaints after invisible characters are removed on Enter, letting you clearly review the exact text being sent. Invisible character cleanup also no longer removes the zero-width non-joiner used in Persian and Arabic text to attach suffixes. For voice dictation, pressing Ctrl+C stops microphone recording immediately, Esc cleanly cancels while a transcript is processing, and holding Space in the transcript view or vim NORMAL mode will not accidentally trigger dictation. IDE selections are no longer lost when pressing Esc while startup hooks run, or when editing or rewinding brings a sent prompt back into the input box. A ! shell-mode prompt stashed with Ctrl+S remains in shell mode when restored, and typing / immediately lists file paths after stashing.

FEATURE

Switching models no longer breaks the cache, and /cost explains cache misses

Switching models or taking over a subagent used to risk a full cache recompute and a wasted wait. When switching models from an external host application while Claude is working, the next prompt will no longer suffer a cache miss. Supported host applications include Claude Desktop, VS Code, and the SDK. When reading cache, resumed fork subagents re-send the tool list they originally used rather than rebuilding the list, preventing cache breakage. In addition, cache miss explanations in the /cost command have been improved to explicitly identify changes in thinking mode or thinking display settings.

BUGFIX

Plugin updates work with Git credential helpers, and names posing as the official marketplace are blocked

If you use plugins or skills, updating them is less error-prone now. Background plugin marketplace auto-updates now support Git credential helpers, ensuring private repository marketplaces no longer re-clone every run or fail to update. When updating plugins from a GitHub repository or Git URL tracking a branch or tag, installed_plugins.json updates to the latest revision instead of keeping the install-time commit. Running claude plugin update also no longer misidentifies plugin versions as unknown when the official marketplace snapshot file is a link or too large. For skills, items in ~/.claude/skills/ are no longer accidentally moved to the .trash folder when a manifest.json in that folder lists their names. Furthermore, adding a plugin marketplace whose name imitates a reserved official marketplace name is rejected immediately, and existing ones stop loading.

BUGFIX

Icon and color fixes: disabled skills no longer look like failed loads

This batch fixes small icons and colors on screen, so statuses are harder to misread. On light and ANSI themes, the session feedback survey now properly displays hover highlights. Running /workflows with only a single execution record directly opens that run instead of briefly flashing a one-row list. In /plugin and /skills, disabled skills are now represented with a dim circle ◯, avoiding confusion with the red ✘ used for failed plugin loads. Multi-select option descriptions are now properly indented under the label text instead of under the option number. The search box in /plugin, /skills, and /mcp no longer loses its right border in fullscreen mode. Finally, servers with warnings now consistently display a ⚠ icon across the MCP server list, detail views, and /plugin.

BUGFIX

Home, End, PgUp and other keys work properly in menus

Pressed End to jump to the bottom of a list, or Tab to move on, only to get nothing or a silently changed setting? In the /config settings list, as well as selection lists such as /model, /memory, and permission prompts, pressing Home and End now jumps to the very top and bottom. In the /skills menu, pressing PgUp and PgDn stops the selection on the first or last skill rather than wrapping around. Pressing Tab in the /config list no longer silently changes the selected setting's value, instead doing nothing there. Ctrl+L and Cmd+K in fullscreen mode restore their original screen repainting behavior rather than clearing the transcript view. In addition, the footer hint for /autocompact now lists ← and → for adjusting values, while the footer for /fast explicitly identifies Space as the toggle key.

BUGFIX

Damaged or malformed session records no longer break the conversation

The longer a session runs, the more one bad record can threaten to stall the whole conversation. Conversations no longer fail on turn requests with an API error stating that role 'system' must precede an 'assistant' message. When advisor mode is enabled behind a proxy or gateway that does not support the advisor_20260301 tag, API Error 400 requests automatically retry without the tag. When saved session history contains a malformed notice about unloaded MCP tools, turns and /compact no longer fail on every turn. Resuming a session no longer crashes when its saved transcript holds a malformed system message or a memory-saved notice missing its file list. When long-running fullscreen sessions encounter corruption, damaged cached message lists are automatically rebuilt, preventing unrecoverable interface errors from aborting the run.

BUGFIX

Settings files no longer hang or crash on swaps and stale values

Stuck while reading a settings file, or /config crashing on open? When a settings file or a file being re-read after an edit is replaced by a named pipe mid-read, Claude Code no longer hangs indefinitely. In addition, when a preference has moved to settings.json while ~/.claude.json still holds a legacy value like null or "false", opening /config no longer crashes, and toggle preferences are parsed accurately.

BUGFIX

Background subagent messages and reports stop getting lost, and two Ctrl+C presses exit

If you hand work to background subagents, these fixes stop things from getting lost in the handoff. In headless mode and SDK sessions, messages sent to a background subagent are no longer silently lost when the subagent is finishing its turn. If the conversation that launched a subagent is compacted before reading the report, the finished subagent's findings will no longer be dropped. Background subagents can now use the LSP tool for semantic code analysis when an LSP plugin is active. Pressing Ctrl+C twice now cleanly exits while background subagents are running, removing the need for three or four presses. Resuming a session with unfinished background agents, shells, or workflows will not start a model turn on its own before you type anything. In addition, expanding subagent hand-back messages outside verbose mode no longer exposes internal provenance preambles.

BUGFIX

Background task fixes: exit codes, null characters, and temp directories

A background command that finished fine but showed as failed, or claude agents opening to a blank screen: those are fixed. When background shell tasks return benign non-zero exit codes (such as a grep command finding no matches), they are no longer reported as failures. When environment variables passed into a session contain NUL characters, background sessions running claude --bg can still execute Git, hooks, plugins, and helper programs normally. When the temp directory is full, lacks write permissions, or is owned by another user, running claude agents displays a clear error message instead of remaining stuck on a blank, unresponsive screen. Startup warnings for cross-session messaging have also been improved to explain that --debug-file writes debug logs to a path you choose.

FEATURE

MCP description length is now adjustable, and re-added servers reconnect right away

If you run lots of MCP servers or write long tool descriptions, these two changes are for you. You can now set the environment variable CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH to customize the length cap on MCP tool descriptions and server instructions across every MCP server in the session, overriding the default 2,048-character limit. In addition, when an MCP server was re-added under the same name after running claude mcp remove, the interface previously remained stuck in an error state requiring authentication; the system now reconnects directly without requiring repetitive manual sign-ins.

FEATURE

Artifact publishing explains what went wrong, and dark mode now covers the whole page

Publishing an Artifact and the tool suddenly vanished, or your access rules quietly reset? When organization policies fail to load due to factors like web proxies, the Artifact tool no longer disappears silently; Claude now explicitly explains what is blocking it. When republishing an artifact, if database access rules or viewer profile scopes are omitted, the system actively refuses publication, preventing stored access rules from being accidentally reset or scopes from being dropped. If Claude cannot read an artifact link it received, it notifies the user before continuing. For generated artifact web pages, Print buttons, confirmation dialogs, and device features blocked by the viewer have been removed, email and phone details appear as plain text, and dark mode extends across form controls and scrollbars.

BUGFIX

Fixes for /ultrareview and remote sessions

Reviews shown as stopped while still running, or cloud runners dropping on auth failures: far fewer of these now. When uploading reviews with /ultrareview, renamed copies of key and config files (such as id_rsa copy or kubeconfig (1).yaml) remain on your local machine rather than being uploaded. If a session is deleted or the signed-in account changes, /ultrareview no longer misreports stopped reviews as completed or retriable errors, nor does it wait out the full timeout. In the Claude app, context usage figures for Remote Control and cloud sessions update immediately after /compact or /clear; when a branch has both committed and uncommitted changes, the diff view no longer drops committed files. When servers experience prolonged overloads during which access tokens rotate, cloud and self-hosted runner sessions no longer fail with authentication errors. When memory write conflicts arise in Cowork sessions for files exceeding about 10,800 characters, retried writes no longer drop the middle content.

FEATURE

Hook timeouts name the culprit, and logs record output size

If you write your own hooks, problems are now easier to track down. The hook_execution_complete OpenTelemetry event now includes hook output sizes and the count of oversized outputs saved to disk. When a UserPromptSubmit hook times out, the timeout notice and debug log now explicitly name which hook command timed out. In addition, agent-type hooks are no longer permitted in PermissionRequest hooks since their answers could never allow or deny requests; the interface now displays an error pointing to command or HTTP hooks.

FEATURE

The permission rules list is easier to use, and delete confirmations default to No

Once permission rules pile up and lists grow long, the easiest thing to lose track of is where your cursor sits. After viewing, adding, or deleting a rule in /permissions, focus returns to the rule list automatically, and confirmation dialogs for deleting rules or removing directories now default to No to prevent accidental deletions. Pressing ←, →, and Tab within the rule list switches tabs directly without moving focus to the tab bar. Running /install-github-app now displays "Esc to cancel" during the GitHub CLI check and repository selection steps. Scrollbars at the right edge of /artifacts and /workflows lists make it easy to see how much of a long list is hidden and where you currently are. In addition, running agents and phases in the workflow progress tree now display a dim dot instead of ⟳.

FEATURE

Fullscreen layouts line up, and @ file search lists filename matches first

Typed @ to find a file, only to see files that merely sit in a matching folder listed first? In fullscreen mode, the Add Marketplace form in /plugin no longer draws an extra box inside the pane, aligning its text and key hints with the rest of the interface. The /workflows detail view in fullscreen mode no longer draws an extra horizontal line beneath the pane divider. Code blocks without a specified language are now styled with inline-code coloring so commands stand out distinctly from surrounding text. Asking side questions via /btw while a tool is still running now recognizes the call as in progress rather than misinterpreting it as failed. When searching files with @, entries matching the query in their file name rank above those matching only across folder names.

BUGFIX

Fixes for self-hosted runners and Windows cleanup

If you run Claude Code work on your own machines (a self-hosted runner), or point settings folders elsewhere on Windows, this batch is for you. On self-hosted runners, lifecycle-hook commits failing to sign under --configure-git has been resolved. When a runner reaches --retire-at and is about to retire, it briefly waits for the turn to be reported before stopping the session, avoiding lost finish signals. Git inside lifecycle hooks now ignores hook directories and programs named in the runner's shared Git files, while local-path and git:// remotes now require GIT_ALLOW_PROTOCOL. On Windows, background cleanup no longer deletes directory symlinks or junctions used to relocate ~/.claude/session-env, image-cache, or other target directories.

FEATURE

VS Code gains six slash-command dialogs

VS Code users get a batch of new dialogs this time. You can type /status to open the Status dialog, inspecting session version, account, model, and server details. You can type /sandbox or open the Sandbox dialog from the panel menu to manage sandbox mode, unsandboxed fallbacks, and excluded commands. You can type /chrome or open the Claude in Chrome dialog from the panel menu to view extension status, installation, reconnection, permissions pages, and the enabled-by-default setting. In addition, typing /export copies or saves the conversation as plain text. Typing /skills opens the Slash commands dialog to check each skill's source, token estimate, and on/off state with click-to-toggle support. Typing /plan switches to plan mode, sends a first planning prompt, or views the current plan.

FEATURE

VS Code marks long pastes, and new tabs open beside your editor

When you paste a big chunk of text in VS Code, Claude can now tell what you pasted from what you typed. When pasting text over 800 characters or containing more than 2 line breaks into the chat box, the text is automatically marked as pasted so Claude can distinguish it from what you typed. If pasted text contains invisible Unicode formatting and tag characters, the system notifies you after stripping them, and invisible characters in any other text are removed before sending. Clicking "Open in New Tab" now opens Claude right beside the editor group you are currently working in rather than after the last group. In addition, paste marker lines no longer linger in your own messages after reopening a session.

FEATURE

VS Code shows live thinking effort, and a stuck Python extension no longer blocks startup

A few spots in VS Code that stalled or showed stale info are fixed. The effort chip no longer shows a stale saved effort level, instead displaying the actual level the session runs at in real time. When the Python extension hangs during activation, Claude Code no longer waits indefinitely, starting after 60 seconds without the Python environment. On the plan approval card, when auto mode is available, the first option now properly offers "Yes, and use auto mode", matching the terminal experience. In addition, arrow-key navigation in the session list no longer stops working after archiving or unarchiving a session from the keyboard.

FEATURE

Routine settings move under Remote sessions, and GitHub Enterprise tokens renew automatically

Admins looking for the Routines switch: it moved. The admin Routines on/off setting has moved under "Admin settings → Capabilities → Remote sessions", with a direct link added to the Claude Code admin page. When executing gh commands and GitHub API calls inside a cloud session on a GitHub Enterprise Server repository, access tokens renew automatically after about eight hours without expiring. In addition, if a routine is edited moments before its scheduled execution, resuming an existing session immediately applies the updated prompt and name rather than running with old settings.

BUGFIX

Fixes for cloud sessions on the web

Clicked a file link that just kept loading, or had an unanswered approval logged as your denial? In cloud session transcripts, file links pointing outside the working directory that fail to load are now disabled with an explanation, rather than opening a blank file card that never loads. In auto mode, if an approval prompt expires unanswered or is superseded by a newer message, it is no longer recorded as an active user rejection, allowing tool calls to retry normally. When viewing cloud sessions in the Claude app, Claude now saves files intended for you where the app can open them. In addition, starting a session on a self-hosted environment in an organization where an admin turned GitHub off no longer shows an empty repository picker.

FEATURE

See Claude's progress in Slack and stop it anytime

Once you hand work to Claude in a Slack channel, you want to know how far along it is. When Claude replies in channel threads, it displays Slack's native Working indicator, Stop button, and thread title; the indicator remains visible until Claude finishes, and pressing Stop interrupts the task at any time. Under Restrict or Channel only guest settings, when a guest joins or the last guest leaves and alters how Claude responds, a short notice is posted in the channel explaining the change. In addition, scheduled routines failing silently in Slack workspaces connected to Claude before joining Enterprise Grid have been fixed.

FEATURE

Slack file scans retry automatically, and errors say what actually failed

When something goes wrong using Claude in Slack, it's now clearer where the problem is. When a brief file-scanning service outage occurs, Claude no longer asks you to re-upload files, instead retrying the scan automatically and receiving a notice if the scanner is down. In Claude's Slack replies, list items starting with +, -, or * are no longer rendered as empty bullets with stray nested items, properly preserving the text and character as a single bullet. When cloud environment setup scripts fail, the notice no longer displays a generic retry prompt, instead naming the failed script and advising you to fix the issue first. In admin settings, the GitHub connection banner now explains exact disconnection reasons, including not signed in, app not linked or not installed, sign-in expired, or SSO not authorized.

FEATURE

Code Review now tells you when REVIEW.md is too long and gets cut

If your review guidelines run long, part of them may never have been read at all. When a repository's REVIEW.md instruction file is partially cut or entirely omitted during code review because it exceeds size limits, the Code Review check run explicitly issues a notice naming the file and the exact limit. This allows teams to immediately understand why review guidelines did not take full effect and adjust instruction file lengths promptly.

Original changelog

Original changelogOpus 5.5 arrives as the default, and Pro plans switch to Opus
Added Claude Opus 5.5 (`claude-opus-5-5`), now the default Opus model — 1M context, $4/$20 per Mtok with $0.20/Mtok cache reads
Changed the default model on Pro and Team Standard plans from Sonnet to Opus, matching Max, Team Premium, and Enterprise
Changed an effort level saved before `/effort` became per-model to no longer apply to newly released models such as Opus 5.5; they start at their default until you pick a level
Changed Opus 4.7, Opus 4.8 and Fable 5 to stop holding their launch-default effort over `/effort` in `-p` or the Agent SDK, a project, managed or `--settings` `effortLevel`, or a per-model level
Original changelogFile writes check the real path, and auto mode's safety check stops hammering retries
Fixed writes through a symlinked path being judged by their in-tree spelling: the prompt names where the write lands, and `acceptEdits`, allow rules and auto mode no longer approve one landing outside
Fixed auto mode retrying an action over and over when a safety check declined to review it; the action is now denied once, noting that retrying won't help
Fixed auto mode denying actions over and over without pause when a safety check gave no answer; retries now back off, and the turn stops with a message after ten in a row
Fixed Write calls failing validation when a model sends `path`, `file_text`, `file_content` or a stray `description` instead of `file_path` and `content`
Original changelogFullscreen lists take the mouse wheel, and dialog keys get fixed
Added mouse support to more lists in fullscreen mode: the wheel scrolls the `/skills` list, and a skill's state options in `/plugin` can be clicked
Fixed Ctrl+C or Ctrl+D pressed twice in most dialogs (`/model`, `/effort`, `/config`, `/status`, `/usage`, `/plugin`, `/sandbox`, `/permissions`, `/artifacts`, `/mobile`, `/login`, `/upgrade`, `/usage-credits`, `/install-github-app`, `/setup-bedrock`, `/setup-vertex`) quitting Claude Code instead of closing the dialog
Fixed a click that only brought the terminal window to the front also triggering the item under the pointer — in search pickers, tab bars, agent/workflow rows, slash-command links and suggestion dropdowns
Fixed a stray `n` closing dialogs and a stray `y` confirming them; Enter and Esc accept and cancel (bind `y`/`n` to `confirm:yes`/`confirm:no` in `keybindings.json` to restore)
Fixed text fields in dialogs losing a typed letter, digit or Space to a keybinding on that key
Fixed the mouse wheel not scrolling selection lists with hidden options (such as `/model` and `/permissions`) in fullscreen mode
Original changelogA batch of fixes for the input box, voice dictation, and stashed prompts
Fixed the prompt line staying scrambled on Windows terminals after invisible characters were removed on Enter; the screen is now repainted so you review the exact text that will be sent
Fixed the invisible-character cleanup removing the zero-width non-joiner that Persian and Arabic text uses to attach a suffix to a Latin word or number, such as the plural of "PDF"
Fixed voice dictation not stopping on Ctrl+C (the prompt cleared but the microphone kept recording), Esc not cancelling while a transcript was processing, and held Space starting dictation from the transcript view and vim NORMAL mode
Fixed IDE selection being dropped when a sent prompt comes back into the input, such as pressing Esc to edit it, rewinding to it, or pressing Esc while startup hooks run
Fixed a `!` shell-mode prompt stashed with Ctrl+S coming back as a plain prompt when restored, and `/` listing file paths right after stashing one
Original changelogSwitching models no longer breaks the cache, and /cost explains cache misses
Fixed a model switch made from a host app (Claude Desktop, VS Code, SDK) while Claude is working causing a prompt-cache miss on the next prompt
Fixed resumed fork subagents rebuilding their tool list instead of re-sending the one they first used, which broke prompt caching for that agent
Improved `/cost` cache-miss causes to name thinking mode and thinking display changes
Original changelogPlugin updates work with Git credential helpers, and names posing as the official marketplace are blocked
Fixed `installed_plugins.json` keeping the install-time commit after updating a plugin from a GitHub repository or git URL that tracks a branch or tag
Fixed skills in `~/.claude/skills/` being moved to `~/.claude/skills/.trash/` when a `manifest.json` in that folder listed their names
Fixed background plugin marketplace auto-update ignoring git credential helpers, so private-repo marketplaces were re-cloned every run or never updated
Fixed `claude plugin update` clearing a plugin's recorded commit and moving it to version "unknown" when the official marketplace's snapshot file is a link or too large
Changed plugin marketplaces whose name imitates a reserved marketplace name to be refused when added, and to stop loading if one was already added
Original changelogIcon and color fixes: disabled skills no longer look like failed loads
Fixed the session feedback survey showing no hover highlight on light and ANSI themes
Fixed `/workflows` briefly showing a one-row list before opening the only run
Fixed a skill you switched off showing the same red ✘ as a plugin that failed to load in `/plugin` and `/skills`; off now shows a dim ◯
Fixed multi-select option descriptions being indented under the option number instead of under the label
Fixed the search box in `/plugin`, `/skills` and `/mcp` losing its right border in fullscreen mode
Fixed `/mcp` showing △ in the server list but ⚠ in the detail view for the same server; the list, detail views and `/plugin` now all show ⚠
Original changelogHome, End, PgUp and other keys work properly in menus
Fixed Home and End doing nothing in the `/config` settings list and in selection lists such as `/model`, `/memory` and permission prompts
Fixed PgUp/PgDn in the `/skills` menu wrapping past the first or last skill instead of stopping there
Fixed Tab silently changing the selected setting's value in the `/config` list; it now does nothing there
Reverted `ctrl+l` / `cmd+k` in fullscreen mode clearing the transcript view (added in 2.1.260); they redraw the screen again
Changed `/autocompact`'s footer hint to name ←/→, the keys that adjust other ordered values
Changed `/fast`'s footer to name Space as the toggle key
Original changelogDamaged or malformed session records no longer break the conversation
Fixed conversations failing on every turn with a "role 'system' must precede an 'assistant' message" API error
Fixed conversations with the advisor on failing every turn with API Error 400 "Input tag 'advisor_20260301'" behind a proxy or gateway that doesn't support it; the request now retries without it
Fixed a session failing on every turn and `/compact` when its saved history held a malformed notice about MCP tools that could not be loaded
Fixed a crash when resuming a session whose saved transcript holds a malformed system message or a memory-saved notice without its file list
Fixed one cause of long-running fullscreen sessions exiting with "Claude Code exited after an unrecoverable interface error": a damaged cached message list is now rebuilt
Original changelogSettings files no longer hang or crash on swaps and stale values
Fixed Claude Code hanging when a settings file, or a file it re-reads after an edit, is replaced by a named pipe mid-read
Fixed `/config` crashing and some on/off preferences being misread when a preference that has moved to `settings.json` still holds a value like `null` or `"false"` in `~/.claude.json`
Original changelogBackground subagent messages and reports stop getting lost, and two Ctrl+C presses exit
Fixed subagent hand-back messages showing an internal provenance preamble when expanded outside verbose mode
Fixed resuming a session with unfinished background agents, shells or workflows starting a model turn on its own before you typed anything
Fixed messages sent to a background subagent being silently lost in headless and SDK sessions when the subagent was finishing its turn
Fixed a finished subagent's report being lost when the conversation that launched it was compacted before the report was read
Fixed background subagents being unable to use the LSP tool when an LSP plugin is active
Fixed Ctrl+C needing three or four presses to exit while background subagents are running; two presses now exit
Original changelogBackground task fixes: exit codes, null characters, and temp directories
Fixed background shell tasks reporting benign non-zero exits (e.g. grep with no matches) as failures
Fixed background sessions (`claude --bg`) being unable to run git, hooks, plugins and other helper programs when an environment variable handed to the session contained a NUL character
Fixed `claude agents` showing a blank, unresponsive screen instead of an error when the temp directory is full, not writable or owned by another user
Improved the cross-session messaging startup warning to explain that `--debug-file` writes a debug log to a path you choose
Original changelogMCP description length is now adjustable, and re-added servers reconnect right away
Added `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` to change the 2,048-character cap on MCP tool descriptions and server instructions for every MCP server in the session
Fixed an MCP server re-added under the same name after `claude mcp remove` still showing as needing authentication instead of reconnecting
Original changelogArtifact publishing explains what went wrong, and dark mode now covers the whole page
Fixed the Artifact tool silently disappearing when your organization's policy can't be loaded (for example behind a web proxy); Claude now says what's blocking it
Fixed artifact republishes silently resetting stored database access rules or dropping the viewer profile scope when that capability was re-sent without them; they are now refused
Improved the Artifact tool so that when Claude cannot read an artifact link it was given, it tells the user before continuing
Improved artifact pages: no Print buttons, confirm dialogs or device features the viewer blocks, email and phone details shown as text, and dark mode that reaches form controls and scrollbars
Original changelogFixes for /ultrareview and remote sessions
Fixed `/ultrareview` reporting a stopped cloud review as completed or as an error to retry, and waiting out the full timeout when its session was deleted or the signed-in account changed
Fixed the Claude app showing a missing or stale context usage figure for Remote Control and cloud sessions right after /compact or /clear
Fixed the Claude app's diff view for Remote Control and cloud sessions dropping a branch's committed files whenever there are also uncommitted changes
Fixed cloud and self-hosted runner sessions failing with "Authentication failed" after waiting out a long overload during which the session's access token was rotated
Fixed memory write conflicts in Cowork sessions showing Claude only the start and end of a memory file over about 10,800 characters, so the retried write dropped the middle
Improved `/ultrareview` uploads: renamed copies of key files, such as `id_rsa copy` or `kubeconfig (1).yaml`, now also stay on your machine
Original changelogHook timeouts name the culprit, and logs record output size
Added hook output sizes and the number of oversized outputs saved to a file to the `hook_execution_complete` OpenTelemetry event
Improved the UserPromptSubmit hook timeout notice and the debug log to name which hook command timed out
Changed `PermissionRequest` hooks: an agent-type hook no longer runs there, since its answer could never allow or deny the request; it now shows an error pointing to command or http hooks
Original changelogThe permission rules list is easier to use, and delete confirmations default to No
Improved `/permissions`: focus returns to the rule list after viewing, adding or deleting a rule, and the delete-rule and remove-directory confirmations now default to No
Improved `/permissions` tab navigation: ←/→ and Tab pressed in a rule list now switch tabs without moving focus to the tab bar
Improved `/install-github-app`: the GitHub CLI check and repository selection steps now show "Esc to cancel"
Improved the `/artifacts` and `/workflows` lists: a scrollbar at the right edge shows how much of a long list is hidden and where you are in it
Improved the workflow progress tree: running agents and phases now show a dim dot instead of ⟳
Original changelogFullscreen layouts line up, and @ file search lists filename matches first
Improved `/plugin`'s Add Marketplace form in fullscreen: it no longer draws a box inside the pane, and its text and key hints line up with the rest of `/plugin`
Improved the `/workflows` detail view in fullscreen: it no longer draws a second horizontal rule under the pane's divider
Improved code blocks that don't name a language: they are now colored like inline code, so commands stand out from the surrounding text
Improved `/btw` asked while a tool is still running: the side question now knows that call is in progress instead of reading it as a failed one
Improved `@` file suggestions: a file whose name contains the query now ranks above one that only matches across its folder names
Original changelogFixes for self-hosted runners and Windows cleanup
Self-hosted runner: Fixed lifecycle-hook commits failing to sign under `--configure-git`
Windows: Fixed background cleanup deleting a directory symlink or junction used to relocate `~/.claude/session-env`, `image-cache` or another cleaned-up folder
Self-hosted runner: Fixed a turn that ended right at a `--retire-at` release losing its finished signal; the runner now briefly waits for the turn to be reported before stopping the session
Self-hosted runner: Changed git in lifecycle hooks to ignore hook folders and programs named in the runner's shared git files; local-path and `git://` remotes there now need `GIT_ALLOW_PROTOCOL`
Original changelogVS Code gains six slash-command dialogs
[VSCode] Added a Status dialog, with a typed `/status`, showing the session's version, account, model and server details
[VSCode] Added a Sandbox dialog for the sandbox mode, the unsandboxed fallback and excluded commands, opened from the panel menu or by typing `/sandbox`
[VSCode] Added a Claude in Chrome dialog (extension status, the install, reconnect and permissions pages, the enabled-by-default setting), opened from the panel menu or by typing `/chrome`
[VSCode] Added Export conversation, with a typed `/export`, to copy or save the conversation as plain text
[VSCode] Added each skill's source, token estimate and on/off state to the Slash commands dialog, with a click to change the state, and a typed `/skills` that opens it
[VSCode] Added a typed `/plan` that switches to plan mode, sends a first planning prompt, or shows the session's plan
Original changelogVS Code marks long pastes, and new tabs open beside your editor
[VSCode] Improved pasted-text handling in the chat box: a paste over 800 characters or over 2 line breaks is now marked so Claude can tell it from what you typed
[VSCode] Improved prompt handling in the chat box: invisible Unicode formatting and tag characters are removed from pasted text with a notice, and from anything else before it is sent
[VSCode] Changed "Open in New Tab" to open Claude beside the editor group you are working in rather than after the last group
[VSCode] Fixed paste marker lines showing in your own messages after reopening a session
Original changelogVS Code shows live thinking effort, and a stuck Python extension no longer blocks startup
[VSCode] Fixed the effort chip showing a stale saved effort level instead of the level the session runs at
[VSCode] Fixed Claude Code never starting when the Python extension hangs while activating; it now starts after 60 seconds without the Python environment
[VSCode] Fixed the plan approval card never offering auto mode: when auto mode is available, its first option is now "Yes, and use auto mode", as in the terminal
[VSCode] Fixed arrow-key navigation in the session list stopping after archiving or unarchiving a session from the keyboard
Original changelogRoutine settings move under Remote sessions, and GitHub Enterprise tokens renew automatically
[Claude Code on the web] Changed the admin Routines on/off setting to live under Admin settings → Capabilities → Remote sessions; the Claude Code admin page now links to it
[Claude Code on the web] Fixed `gh` and GitHub API calls inside a cloud session on a GitHub Enterprise Server repository failing after about eight hours; the token now renews automatically
[Claude Code on the web] Fixed a routine that resumes an existing session running with its old prompt and name when it was edited moments before the scheduled run started
Original changelogFixes for cloud sessions on the web
[Claude Code on the web] Fixed file links in a cloud session transcript that point outside the session's working directory opening a file card that never loads; they're now disabled and say why
[Claude Code on the web] Fixed auto mode refusing to retry a tool call because an approval prompt that expired unanswered, or was superseded by a newer message, had been recorded as your rejection
[Claude Code on the web] Improved cloud sessions viewed in the Claude app: Claude now saves files meant for you where the app can open them
[Claude Code on the web] Removed the empty repository picker shown when starting a session on a self-hosted environment in an organization where an admin has turned GitHub off
Original changelogSee Claude's progress in Slack and stop it anytime
[Claude Tag] Added Slack's native Working indicator, Stop button and thread title to Claude's threads in channels; the indicator stays up until Claude finishes, and Stop interrupts the task
[Claude Tag] Added a short notice in the Slack channel when a guest joining, or the last guest leaving, changes how Claude responds there under a Restrict or Channel only guest setting
[Claude Tag] Fixed scheduled routines silently failing to run in Slack workspaces that were connected to Claude before the workspace joined its Enterprise Grid
Original changelogSlack file scans retry automatically, and errors say what actually failed
[Claude Tag] Fixed Claude asking you to re-upload a Slack file when a brief file-scanning outage, not the file, was the problem; it now retries the scan and is told when the scanner is down
[Claude Tag] Fixed a bullet in Claude's Slack reply whose text starts with +, - or * rendering as an empty bullet with a stray nested item; it now shows as one bullet with the character kept
[Claude Tag] Fixed the Slack notice for a failed cloud environment setup script sometimes being a generic "mention me to retry"; it now names the setup script and says to fix it first
[Claude Tag] Improved the GitHub banner in Claude Tag admin settings to say why GitHub isn't connected: not signed in, app not linked or not installed, sign-in expired, or SSO not authorized
Original changelogCode Review now tells you when REVIEW.md is too long and gets cut
[Code Review] Improved the Code Review check run to say when REVIEW.md instructions were cut or left out of a review for exceeding a size limit, naming the file and the limit