What's changed
- Added Code Mode, an experimental opt-in in which Claude writes JavaScript to call its tools; see https://code.claude.com/docs/en/code-mode to turn it on, or to turn it off for an organization
- Added
engines["claude-code"]toplugin.json: plugins outside their stated Claude Code version range are not installed, updated or loaded, and install and update pick the newest version that fits - Added type checking of a plugin's TypeScript hooks module to
claude plugin validate; each finding is a warning, and--strictfails on it - Added to
claude plugin validatethe$nouns a mod'sengine.createhook adds, withholds or replaces - Added support for
CLAUDE_CODE_AUTO_MODE_MODELin managed settings for Claude Desktop sessions on third-party providers (takes effect once Claude Desktop includes this version) - Added an options menu (stop, switch to usage credits, upgrade) when a model needs usage credits that are turned off or used up
- Added a progress heartbeat every 30 seconds while hooks run long in
claude -pand SDK sessions, so a host such as Claude Desktop won't end the turn as hung (once it includes this version) - Added
.docxsupport to Artifact tool asset uploads - Added a
/diff to closehint to the diff panel, and the keys that focus and close a panel to the?shortcut guide - Added a start-up warning for Bash allow rules with a
*in a variable's value, such asBash(PORT=* npm run dev) - Added a warning when a plugin's language server can't start, naming the server and what to check
- Added a one-time startup notice naming
CLAUDE_CODE_PERFORCE_MODEwhen Perforce settings are found and the mode is off - Added
CLAUDE_CODE_DISABLE_AGENT_PROGRESS_SUMMARIES(available since 2.1.318): set it to1to turn off subagent progress summaries and the requests that write them (#86879) - Added
CLAUDE_CODE_RESUME_HINT_COMMAND, which a program that starts Claude Code can set to have the exit hint name its own resume command - Added
unsetOptionCountto theclaude plugin install --jsonresult: how manyuserConfigoptions are not yet set - Added
isPromptCoveredto the props a mod's pane is drawn with, telling it when a dialog or a field above the prompt covers the prompt - Fixed running
/compactagain, or after a command such as/context, summarizing away a message that Claude had not answered yet - Fixed a resumed session joining your next message to an old interrupted message that was not resumed
- Fixed a memory spike at the next prompt after Claude changed a very large file
- Fixed a setting saved in a running session undoing a hand edit made to
settings.jsonmoments earlier; a settings file you delete during a session now stays deleted - Fixed
claude plugincommands andclaude mcp listsigning you out of a Console profile when they ended while the token was being renewed - Fixed Edit and Bash running out of memory on certain
/procfiles, and Edit hanging or running out of memory on devices and named pipes - Fixed Claude Code failing to start, or to clear stored credentials at sign-out, when saving its configuration file failed with "Out of memory"
- Fixed requests sent without streaming failing on errors that streamed requests recover from, such as a rejected image, thinking block or beta header
- Fixed
ExitWorktree, the worktree exit dialog and/resumeleaving the session in the wrong folder when the folder the shell was in before entering the worktree had been deleted - Fixed accents and other combining marks sometimes landing left of the text, leaving stale copies on screen, or silently disappearing when text wraps
- Fixed the last key of a key chord, such as Enter in ctrl+x enter, acting on a dialog's text field when the chord's own action isn't available there
- Fixed
psprocesses piling up when the process listing Claude Code runs before stopping a command takes too long - Fixed subagent transcripts and large tool results being saved apart from the session's transcript after entering a worktree created by a
WorktreeCreatehook or belonging to a nested repository - Fixed a session on a named Anthropic profile moving to another sign-in when
/fork, the Left arrow or--bgcontinued it in the background; reopen any session that was open during the update - Fixed a background session sending a conversation under another sign-in when its named Anthropic profile is missing, changed or overridden; it now stops and says so
- Fixed a session on an API key, auth token or workload identity from its shell (not a setup token) moving to another sign-in in the background; it now stops and says so
- Fixed MCP tool calls ending in the sign-in server's error, such as
TOKEN_EXPIRED, instead of asking you to sign in again - Fixed an expired claude.ai login showing "Credit balance too low" when a saved Console key or
ant auth loginprofile without credit was used instead - Fixed a session on a named Anthropic profile being handed to an older background service that could not keep its sign-in; it now says to restart the service
- Fixed a background session's sign-in leaving the previous account's login or other credentials in place; it now clears them for every session on the computer, and a refused sign-in can leave no login
- Fixed background sessions moving between a profile and the stored login when an update restarted them
- Fixed sessions opened before a sign-in keeping signed-out feature flags after the sign-in
- Fixed sessions that kept failing after a Claude apps gateway sign-in expired: once you sign in again with
/loginin another terminal, they carry on at the next message - Fixed the billing notice naming your
ant auth loginorganization when a customX-Api-Keyheader is set - macOS: Fixed "Not logged in · Please run /login" coming back right after a successful
/loginor a token refresh when the keychain was slow to answer - Fixed turns failing in Claude Desktop when an organization's gateway answers an expired token with 403: Claude Code now asks Desktop for a fresh token and retries
- Fixed the error shown when Amazon Bedrock refuses your account a model: it no longer says to refresh your AWS credentials, it says to enable the model
- Fixed the
awsAuthRefreshorgcpAuthRefreshcommand sometimes running twice for one request when three or more sessions needed a fresh sign-in at once - Fixed the
claude -pwarning about an ended claude.ai login to say thatclaude auth logoutalso removes saved MCP server logins and plugin secrets - Fixed Bash permission prompts offering "don't ask again" for commands that write to sensitive paths such as
.gitor.claude, where the saved rule did not stop the next prompt - Fixed a case where some
lsofcommands ran without a permission prompt - Fixed Bash commands that write a file with
cat > file <<EOFbeing shown as "Read 1 file" - Fixed a case where Bash permission checks judged an
rmfrom the wrong folder and skipped the dangerous-removal prompt under bypass permissions or a Bash allow rule - Fixed
--permission-mode autoor a settingsdefaultMode: autostarting in a mode that could allow more when auto mode was unavailable. It now starts in Manual mode, which asks first - Fixed plan files sometimes being written outside the project when
plansDirectoryis set; a write that can't be shown to stay inside the project is now refused - Fixed a permission prompt when Claude read the output of its own background command or agent after entering a worktree
- Fixed a case where Bash permission checks missed part of a command
- Fixed a case where the Bash sandbox could switch off during a session
- Fixed Bash allow rules with an attached wildcard, such as
Bash(ls*), skipping the permission prompt in some cases; a rule that names a variable, such asBash(NODE_ENV*), now asks - Fixed auto mode running behind a gateway at
ANTHROPIC_BASE_URLon a model whose gateway name contains "haiku"; such a model, other thanclaude-haiku-5-5, is now refused, as Haiku 4.5 is - Fixed Bash deny and ask rules missing some commands run through
sudo,envand similar wrappers - Fixed Bash allow rules written with combined
sudoflags skipping the permission prompt in some cases - Fixed
sandbox.excludedCommandsletting a command that it does not name run outside the sandbox in some cases - Fixed a case where the Write and Edit tools could write to a path covered by a
Readdeny rule - Fixed a case where a Bash command ran without a permission prompt for zsh users with certain non-default shell options set
- Fixed the Bash sandbox not fully protecting Claude Code's own config on installs still using the legacy config file
- Fixed a permission prompt from a mod's
tool.checkhook naming every plugin hooked on the tool instead of the one that asked - Fixed sandboxed commands being able to read Claude Code's file checkpoint copies under the config directory
- Fixed a rewind sometimes changing your permission mode
- Fixed project settings sometimes being read through a symbolic link that leads to a different folder than the one Claude Code checked
- Fixed HTTP hooks failing with HTTP 500 on Linux when
CLAUDE_CODE_SUBPROCESS_ENV_SCRUBis set andsandbox.enabledis off - Fixed
claude -pand the Agent SDK running Bash unsandboxed when--settingsor SDK settings that turn the sandbox on fail validation; Claude Code now stops at start-up and names the invalid setting - Fixed
/exportsilently stopping early after a long run of calls to an MCP tool that is no longer loaded - Fixed earlier MCP tool calls missing from a resumed conversation, and lines repeating in scrollback, when the server connects late
- Fixed
claude mcp add --helpsplitting long example commands across lines in narrow terminals and pipes, so a pasted example ran without its header - Fixed plugins with
defaultEnabled: falsestaying off in a claude.ai chat's cloud session after you turn them on in claude.ai - Fixed
/fast onand/fast offon Vertex not asking a plugin'sconfig.sethook, as the/fastmenu does - Fixed documents created through the Claude Docs connector not opening in your browser when you work in a terminal
- Fixed the misleading "not cached" error for a plugin only a repository's settings enable: it now says it isn't installed, gives the install command, and shows in text and stream-json
-pruns - Fixed mods being able to reword Claude Code's own confirmation questions
- Fixed a mod's hot reload sometimes ignoring a file created just after a failed reload
- Fixed marketplaces named
npm,pip,uv,cargo,githuborghbeing refused as reserved names - Fixed a stopped MCP call, or a stopped shell command in fullscreen, reading as "Called" or "Ran" in a collapsed tool group: it now says no result was recorded and shows its input
- Fixed load errors of plugins enabled by managed settings going only to the debug log in SDK and Desktop sessions:
init.plugin_errorsnow lists them - Fixed plugin installs hiding what a plugin's install command wrote to stderr when that command succeeded, such as a note that the plugin has no skills yet
- Fixed one malformed entry in a plugin marketplace's
renamesmap making Claude Code ignore the marketplace's other renames - Fixed
claude --bg --safe-modesessions stopping at startup to ask about project MCP servers that safe mode never starts - Fixed MCP link prompts offering Accept for non-http links without saying the link wouldn't open
- Fixed
/mcpand/pluginsopening an MCP server's page with the cursor on "Disable" when the server needs authentication but still holds its sign-in; the page now offers "Reconnect" and opens on it - Fixed plugins with a version list in
enabledPluginsstaying off with no message:/pluginandclaude plugin listnow say why - Fixed plugins and marketplaces failing to install on Windows when the path of a cloned file reaches 260 characters
- Fixed a Stop pressed right after sending a message showing as an error in remote and SDK sessions while a
UserPromptSubmitor plugin prompt hook was still running - Fixed an MCP server staying disconnected with no tools after an Agent SDK app or
claude -pcaller removed and re-added it, when a tool call had tried to reach it in between - Fixed text-output
claude -pruns printing nothing to stderr when a--plugin-dirmod's hook hangs or crashes the hooks worker - Fixed SDK sessions giving an MCP server named by
--allowedToolsor anmcp_toolhook less than 2s before the first turn when settings loweredCLAUDE_CODE_MCP_STARTUP_WAIT_MSafter start-up - Fixed headless sessions ending when an SDK host sent a null entry in an MCP server's tools list
- Fixed WebFetch dropping empty table cells and shifting later values a column left
- Fixed temporary files of a session that had changed directory being left behind when the session expired under
cleanupPeriodDays - Fixed managed settings (
managed-settings.json,managed-settings.d) sometimes being missed at start-up while another program was rewriting the file: start-up now reads such a file a second time - Fixed
.claude/settings.local.jsonnot being ignored globally when the folder became a git repository later, or on a new machine - Fixed
/diffwaiting for Claude to finish before closing the diff panel in fullscreen - Fixed
/memoryshowing wrong or roundabout paths for folders whose names start with the working directory's or home folder's name, and losing slashes in the file path on Windows - Fixed a broken emoji character in a tool call's parameter name being resent with later requests, which strict JSON parsers reject
- Fixed a collapsed tool call looking as if it ran after you rejected it with a reason: it now shows "Not run · rejected"
- Fixed a case where part of a saved session could be lost on NFS or FUSE file systems when Claude Code discarded a reply
- Fixed WebFetch not rechecking organization policy and
CLAUDE_CODE_DISABLE_WEB_FETCHat each call - Fixed file titles, app names and session names in @-mentions from claude.ai and the desktop app sometimes being treated as text you typed
- Fixed a multi-row status line being pushed off screen by a long prompt in the fullscreen renderer
- Fixed a case where certificate errors behind a TLS-inspecting proxy persisted when the proxy itself is reached over
https:// - Fixed Pro and Max accounts being offered feedback drafts that their organization would refuse
- Fixed Claude in Chrome's policy message telling people to contact their admin when no admin setting can turn it on
- Fixed the artifact preview sometimes opening a different artifact than the one Claude just published
- Fixed certificate name-constraint errors being retried for minutes; they now fail at once with a message that says what to fix
- Fixed
claude --teleportopening an empty session when the server could not find the session's history, andclaude -p --teleportexiting without an error when the resume failed - Fixed a misspelled keybinding modifier, such as
ctl+k, binding the bare key; the binding is now ignored - Fixed
/btwanswers and recaps sometimes including earlier replies from the conversation - Fixed start-up requests switching from an organization's managed proxy and CA settings to user-set ones when a read of the managed settings file failed
- Fixed Claude giving a wrong reason when a new message interrupted a file it was sending you
- Fixed
CLAUDE_CODE_RESUME_INTERRUPTED_TURNre-running a turn that a hook'scontinue: falsehad stopped - Fixed Claude being told that automatic model switching is off when safeguards stopped a subagent whose model had no other model to switch to
- Fixed the changed-files list of remote sessions leaving out files added with
git add -Nbefore the first commit - Fixed some Claude in Chrome tool calls, such as
browser_batch, not showing the tool's name in the fullscreen transcript (ctrl+o) or in a subagent's progress - Fixed subagent progress summaries skipping an update when the reply took between 10 and 20 seconds
- Fixed
claude doctorand/statussaying a linked managed settings file is still read when it could not be read - Fixed an interactive
--chromesession giving no reason for starting without Claude in Chrome when your organization's policy turns it off: a line now says so - Fixed the
/rewindlist on network paths and hung folders: it named every tracked file as changed, was slow to show labels, and showed none at all when a file read never returned - Fixed
--debugand--debug-filereplacing a file namedlatestin the debug log's folder - Fixed a timed-out feedback send being reported as too large; it now says the request timed out
- Fixed screen reader mode cutting off an announcement when the system clock moved forward while it was being read
- Fixed screen reader mode dropping dictated or pasted text, and emoji, typed into an answer to a question or permission prompt
- Fixed the name label under permission and plan dialogs hiding part of some agent names
- Fixed a case where pressing Ctrl+C just as
claude updatefinished removed theclaudecommand - Fixed the fullscreen header naming the session's effort level for a viewed subagent on a different model, which that subagent doesn't use
- Fixed the model picker and
/modelshowing a picked effort level thatCLAUDE_CODE_EFFORT_LEVELoverrides - Fixed the tip after a slow worktree creation suggesting a
sparsePathslist without.claude, which left worktrees without your project settings and rules - Fixed the newest model's highlight missing from the
/modelpicker - Fixed
/upgradeand Ctrl+clicked links in fullscreen failing silently when no browser can open: the address is now shown - Fixed the Claude apps gateway's JSON logs escaping newlines and other control characters in a message twice
- Fixed terminal control sequences in a subagent's message taking effect instead of showing as plain text when the message is expanded
- Fixed Claude in Chrome setup saying
/chromefinishes the connection; it now tells you to restart withclaude --chrome - Fixed the Option-key hint appearing while typing ø or π inside words on Danish, Norwegian, Faroese and Greek keyboard layouts
- Fixed a Claude Desktop session getting stuck as busy after another of your sessions sent it the same message twice or many messages at once
- Fixed long tool results staying on disk after a session run with
--no-session-persistence; they are now removed on normal exit, Ctrl+C or SIGTERM - Fixed
PreCompact,PostCompactand post-compactionSessionStarthooks not receivingagent_idandagent_typewhen a subagent compacts - Fixed
CLAUDE_CODE_TRANSCRIPT_LOCAL_GCdropping messages from the saved transcript when another process rewrote the file while it was being trimmed - Fixed the "Now using usage credits" notice repeating or not showing past the weekly Fable limit when Claude Code made a quick side request on a smaller model, such as naming the session
- Fixed Fable's weekly limit showing no reset time and no options menu in the terminal
- Fixed a wait chosen in the usage limit menu silently moving to a later reset when its request was refused; the menu now opens
- Fixed the spend limit menu offering a lower limit when your current limit couldn't be loaded
- Fixed
/usagehiding limit bars for setup tokens andCLAUDE_CODE_OAUTH_TOKEN: it keeps the session and weekly bars and says why the rest are missing - Fixed
/usageshowing a whole-session percentage beside a subagent type's name, and saying sessions ran 8 hours when it only counts hours with requests - Remote Control: Fixed sessions showing as disconnected for a minute or more after a network change such as switching Wi-Fi or reconnecting a VPN
- Fixed Remote Control showing nothing while Claude Code asks whether to use usage credits: the question now also shows in the Claude app
- Fixed Remote Control showing a session as running while it waited on a permission prompt that can only be answered in the terminal
- Remote Control: Fixed
claude remote-controlreconnecting as a new computer when restarted in the same folder more than 4 hours after it stopped; it now keeps its identity for up to 30 days - Remote Control: Fixed sessions left running at shutdown, and finished sessions holding their slot, when the disk stops responding
- Remote Control: Fixed other devices and phone notifications not showing what Claude is asking permission for when
DISABLE_TELEMETRYorDO_NOT_TRACKis set - Remote Control: Fixed the host exiting, or stopping reading a session's output, in verbose or debug mode when a tool call's
commandwas a number, boolean or object - Remote Control: Fixed a host that could stall after sessions failed to start in folders on a filesystem that had stopped responding
- Remote Control: Fixed sessions from the desktop app showing as idle on your phone while background subagents were still running
- Fixed the Agent SDK's
managedSettingsignoring the Remote Control, agent view, Workflows and Artifact off switches - Fixed OpenTelemetry export failing silently when an
otlpexporter had an endpoint but noOTEL_EXPORTER_OTLP_PROTOCOL: it now defaults tohttp/protobuf - Fixed OpenTelemetry export to the default
localhost:4318endpoint going through a configured proxy - Fixed one malformed
OTEL_RESOURCE_ATTRIBUTESentry dropping all of that variable's attributes from the OpenTelemetry resource; the others are now kept, and/statusnames the one left off - Fixed OpenTelemetry
user_promptevents and interaction spans recording a background agent's reply whenOTEL_LOG_ASSISTANT_RESPONSES=0 - Fixed OpenTelemetry exports failing when a proxy took over 10 seconds to reach the collector; it now has 25 seconds, also the most that
OTEL_EXPORTER_OTLP_TIMEOUTcan allow (previously 30) - Fixed OpenTelemetry
agent.nameshowing a user-defined subagent's name instead ofcustomwhen an official plugin's skill launched it - Fixed
claude agentsshowing a status from an earlier turn after a session resumes - Fixed read-only git commands needing approval, or being refused under
claude -p, whenCLAUDE_CODE_SUBPROCESS_ENV_SCRUBis set on Linux - Fixed
claude agentslosing a typed prompt: Esc now needs a second press to clear it, and ctrl+y restores it - Fixed the move-to-background key doing nothing in
claude attachandclaude agentssessions; to detach with Ctrl+B d, press d within 800 ms of Ctrl+B - Fixed background sessions ignoring a
DISABLE_ERROR_REPORTINGset only in your shell when the background service started without it - Fixed false "needs input" notifications in
claude agentsafter replying to a blocked session, and repeated ones after a background turn ended with no text and only basic tools such as Bash or Read - Fixed
claude -psilently using another model in text output when settings block the requested one; it now warns on stderr - Fixed
claude -pprinting notes aboutdeniedModelsandavailableModelsentries on every run;/statusandclaude doctorstill list them - Windows: Fixed some file-reading Bash commands running without a permission prompt when given a wildcard or a list of files
- Windows: Fixed Claude Code running a
.cmdor.batwrapper found beside a program's.exein the same PATH folder (agit.cmdnext togit.exe, say); it now runs the.exe, ascmd.exewould - Windows: Fixed shell commands failing with "Working directory was deleted" on drives where a folder's real path can't be resolved
- Fixed a cloud session's history becoming unreadable if its machine stopped just after the history was rewritten
- Fixed scheduled tasks from an ended session sometimes not running after another session in the same folder used
/clear,/resumeor/branch - Fixed an approved plan being answered with "You are not in plan mode" when the approval arrived after the session's process had restarted, in cloud, self-hosted runner and SDK sessions
- Cloud sessions: Fixed an answer to Claude's question being lost after a restart in a long conversation
- Fixed a message dropping out of a cloud session's conversation when the session restarted before Claude replied
- Cloud sessions: Fixed Claude saying an attached image is missing when the message names its file
- Fixed a resumed cloud session making a model call nobody asked for when files arrived right after a chat's first reply
- Fixed streamed replies in cloud sessions missing text from the middle when the session's container shut down partway through a reply
- Fixed skill files sent from Cowork cloud sessions sometimes failing to upload on the first try
- Self-hosted runner: Reverted the exit code of an on-demand runner whose work order was superseded to 1; 2.1.321 and 2.1.322 had changed it to 0
- Improved sign-in errors in
/loginandclaude setup-tokenfor a rejected, unreachable or timed-out request: they now say what happened and what to check - Improved Bash permission checks so the same command more reliably gets the same answer on a slow or busy machine
- Improved Bash permission checks: some commands that could run differently from how they were checked now ask for permission
- Improved
/mcpto show how many of a server's tools were left out because the API would reject their input schema, and why - Improved the "Not now" choice when Claude Code asks to turn on the mods it writes in a session: it now says when they load
- Improved the error for an MCP tool call whose connector ID is mistyped by a character or two: for a server that the host application registered, it now names the tool to call
- Improved Claude Desktop and cloud sessions for claude.ai accounts with more than 2,000 plugins turned on: a shorter wait at startup, and Claude can now say why plugins are missing
- Improved memory use with many subagents: a finished subagent's transcript is freed sooner instead of staying in memory while later subagents run
- Improved installing with the install script: the latest version is no longer downloaded twice
- Improved WebFetch speed and memory use on deeply nested pages
- Improved the
cleanupPeriodDayscleanup to count folders it can't read as errors - Improved the Claude apps gateway's
/v1/modelsto statemax_input_tokensfor models whose context window is certain on every upstream - Improved
ToolSearchto say when a tool Claude searched for by its short name is already available, instead of only reporting no match - Improved start-up on Linux when
/homeis an autofs map: Claude Code no longer looks up files in/homeitself. SetCLAUDE_CODE_AUTOMOUNT_ROOTSfor a map root deeper than one folder below/ - Improved the Fable limit message in
-p, SDK, IDE and cloud sessions: it now says when the limit resets, along with how to continue - Changed
/security-reviewto ask before Claude runs it, and skills' inline git commands to stop in bare-repository worktrees and similar folders until you allow them, outside auto mode and bypass - Changed how many messages each of your sessions on the same machine can send the others without a prompt from you, from about 20 to 100,000
- Changed the number of messages a Claude Desktop Code tab session can send to your other sessions before it waits for you to type again from 20 to 100,000
- Changed organization settings and policy requests to no longer use a proxy set only by
ALL_PROXY; setHTTPS_PROXYif your network needs a proxy for them - Changed the context window assumed for a model ID that Claude Code doesn't recognize from 200K to 1M; use
/autocompactto compact earlier, orCLAUDE_CODE_DISABLE_1M_CONTEXT=1to keep 200K - Changed sessions on other vendors' models with a smaller window: once full, they can fail every turn until
/clear, so setCLAUDE_CODE_DISABLE_1M_CONTEXT=1before they fill - Changed Claude Code's own ripgrep and most internal git commands to run without most of its sign-in tokens and API keys, so a credential helper or hook under such a git command no longer finds them
- Changed
MCP_SDK_GENERATION=v1to run the v2 MCP client in a compatibility mode (earlier handshake, relaxed OAuth sign-in checks), because the v1 MCP client is removed - Changed the tool Claude uses to finish an MCP server sign-in so that it asks you to confirm, even in bypass and auto modes; where nobody can be asked, such as in
dontAskmode, use/mcp - Self-hosted runner: Changed a session at a connector's approval prompt or sign-in inside a running tool to be released as paused at the idle or lifetime limit; a late answer resumes from a fresh clone
- Changed artifact updates to ask first, even under an allow rule, when people outside your organization can see the artifact or Claude can't check who can
- Changed
glab config setwithout--globalor--host, andglab config edit --local, to fail read-only inside the Bash sandbox; run them outside it - Changed the Bash sandbox on macOS, Linux and WSL to ignore write access granted through a symlink in a writable folder that leads elsewhere or to a missing path; grant the real path instead
- Changed "don't ask again" so an allow rule that looks like it holds a secret, or would be saved to a
settings.local.jsonthat git tracks, lasts for the session only and isn't saved - Changed the sandbox on macOS and Linux:
git worktree add,moveandremovenow fail read-only, as do commits in a worktree the session wasn't started in or given, even one inside the project - Changed start-up to stop when a
--settingsfile isn't valid JSON and has asandboxkey, even one that turns the sandbox off - Changed what happens when a tool's permission check fails with an error after a
PreToolUsehook returned "allow": Claude Code now decides the call as if no hook had answered - Changed what happens when a tool's permission check fails on input that a
PermissionRequesthook rewrote: Claude Code now asks again, or refuses the call where nobody can answer - Changed the GitLab merge request badge to show only for the repository a sandboxed session opened in
- Changed the
claude mcp add --helpexample to a local command - Changed mods: a
*, namespace or negated hook onengine.createnow only observes. To add or withhold a$noun, hookengine.createby name - Changed
claude plugin validateto fail a mod whoseengine.createhook isn't written in the one accepted form; installed mods keep loading - Changed marketplace and plugin installs to fail when a git submodule isn't on the commit its repository records
- Changed project (
.mcp.json) MCP server approvals to match the server's exact name; an approval entry written in another spelling now asks again - Changed self-hosted runners under
--trust-workspace falseand VS Code sessions in an untrusted folder: the repository's settings can no longer disable your hooks or turn plugins on or off - Changed
tool.listplugin hooks so the tools they add or remove apply to the model and every agent - Changed
claude plugin installand/pluginto show a warning instead of success when a plugin's install command writes to stderr - Changed claude.ai chats and Cowork tasks to check a plugin file for secret keys before sending it, and to ask first if it may hold one
- Changed
claude rmand the agents view to say a session is removed from the list, not deleted;claude rmhelp says the conversation is kept andclaude --resumelists it - Changed
/stickersto say that the sticker pack is all claimed for now, instead of opening a page in the browser - Changed a managed settings
policyHelperto no longer take environment variables from user or--settingsfiles; set what it needs in managedenvor the launching shell - Changed a
/skillor@filetyped between two files picked in claude.ai or the desktop app, or after a picked file and a link, to no longer take effect - Changed split-pane agent teammates to check that requests come from their team lead: one that outlives its lead has its asks refused, and plan approvals must be re-sent after
/clearor/resume - Changed worktree creation to refuse checkouts whose
.gitfolders are links or hold hard links, such as git-new-workdir layouts andcp -alcopies; use a plain clone - Changed what Claude is told after safeguards stop a forked skill or a workflow agent: retry with a narrower prompt or tell you, instead of doing the work itself
- Changed browser tool calls (Claude in Chrome, the desktop browser pane) to refuse some escaped or JSON-text inputs and tell Claude how to respell them
- Changed workflows so that a prompt an app marks as not typed no longer reaches their agents as your request
- Changed computer use on macOS to refuse key chords that hold Space with Control or Option, and more system shortcuts that need your grant
- Changed first-run setup in Terminal.app to name the "Use Option as Meta key" setting, what Option stops typing, and how to undo it before you agree
- Changed the maximum of
CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MSfrom 64000 to 300000 - Changed workflows in the desktop app's Code tab to pause at a usage limit and continue after it resets
- Changed the spend limit and 1M context errors, and
/usage-credits, in cloud sessions and under Remote Control: they no longer give a web address - Changed which MCP servers are reported by name in OpenTelemetry exports to follow the current connector directory
- Changed
/logoutin a background session, which had no effect: it now signs out every session on the computer, deletes stored MCP logins and plugin secrets, and ends the session, as in a terminal - macOS: Changed the Bash sandbox so
lsofand similar tools may show less about processes a command did not start - Changed cloud scheduled tasks: a
PostToolUsehook from your own settings can no longer replace the plan inExitPlanMode's result - Changed
CLAUDE_AUTOCOMPACT_PCT_OVERRIDEin Anthropic-hosted cloud sessions to stop applying to auto-memory extraction and, in some sessions, to/btw; the main conversation still follows it - Removed the
subagentStatusLinesetting: subagent rows always use the default look, and settings files that still hold the key load as before - Deprecated a plugin's
agentsetting: it still applies, and now warns at startup, inclaude plugin listand inclaude plugin validate - [VSCode] Added a Claude Code trust prompt before the first session in a folder you haven't trusted; declining leaves the folder's settings and MCP servers unused
- [VSCode] Added the live output of a running Bash or PowerShell command to the chat, under the command's card
- [VSCode] Fixed a response that was discarded because its tool call could not be parsed still showing after Claude retried
- [VSCode] Fixed a queued message missing from a conversation or fork when it directly followed a compaction summary
- [VSCode] Fixed the "Buy usage credits on claude.ai" button counting as agreement to pay for Fable while usage credits were off
- [VSCode] Fixed the "extensions want to relaunch the terminal" warning coming back on open terminals after every window reload or restart
- [VSCode] Fixed "Couldn't load this conversation's saved history" appearing in a new chat whose Claude process had restarted before the first prompt
- [VSCode] Fixed the sign-in screen showing the login choices again after a pasted code; it now shows "Signing in…" until the sign-in finishes
- [VSCode] Fixed the "You've hit your Fable limit" line staying in the VS Code and JetBrains panels after you pick another model
- [VSCode] Fixed the Fable usage warning in the VS Code and JetBrains panels naming usage credits when they're off or used up
- [VSCode] Fixed the diff tab not opening for multi-line edits on files with CRLF line endings
- [VSCode] Fixed dictation continuing to record after switching sessions
- [VSCode] Improved sign-in errors behind TLS-inspecting proxies: a certificate failure now says what to do, as the terminal does
- [VSCode] Changed opening a Claude Code on the web session in a folder where Claude Code's sandbox is on: the extension no longer switches to the session's branch for you, and the dialog says why
- [Claude Code on the web] Improved the message when a file fails to upload to a cloud or Remote Control session: it now gives the reason, such as too many pages, a password or a time-out
- [Claude Code on the web] Improved adding a repository Claude can't access to a cloud session: a short message and a Reconnect GitHub button replace the long error
- [Claude Code on the web] Fixed self-hosted sessions staying on "Starting Claude Code" after it had started, when you reopened a paused session without sending a message
- [Claude Code on the web] Fixed a paused session in a self-hosted environment sometimes still showing "Sending" and a Stop button under the "Session paused" banner
- [Claude Code on the web] Fixed pull request updates from GitHub Enterprise Server linking to github.com in cloud sessions; new updates link to your own server
- [Claude Code on the web] Improved the message when some network secrets can't be added to a new cloud environment: it lists each host, says why where it can, and stays until you dismiss it
- [Claude Code on the web] Fixed very large GitHub Actions job logs and run log archives failing to download or being cut off in cloud sessions
- [Claude Code on the web] Improved the new-session repository picker when GitHub single sign-on hides organizations: it now says so even with other repositories listed, and links to reconnect GitHub
- [Claude Code on the web] Fixed new cloud sessions started from the iOS app with a repository not getting a branch of their own
- [Claude Code on the web] Fixed an open cloud or Remote Control session's page staying "Disconnected" after a few minutes of failed connections; it now tries to reconnect by itself
- [Claude Code on the web] Fixed Try again on an open cloud or Remote Control session's "Connection lost" card sending "Try again" as your message; it now tries to reconnect instead
- [Claude Code on the web] Fixed the Stop button disappearing from a cloud session five minutes into a reply that had shown nothing yet while Claude was still working
- [Claude Code on the web] Fixed an approval prompt sometimes disappearing from a tab left open after a self-hosted runner released the session while it waited for your answer
- [Claude Code on the web] Added a failure notification when a scheduled task's run can't start because its settings require a sandbox that isn't available where it runs
- [Claude Code on the web] Improved the Git providers page when your GitHub sign-in has expired: it now asks you to reconnect instead of silently hiding organizations you can link
- [Claude Code on the web] Fixed removing a repository from a scheduled task silently moving its GitHub trigger to another repository; Save now waits until you pick one
- [Claude Code on the web] Fixed git clones and fetches that take longer than ten minutes in a cloud session sometimes being cut off at the very end
- [Claude Code on the web] Added the No repository option to the repository picker for new sessions on a self-hosted environment
- [Claude Code on the web] Added a warning to a cloud session's Delete dialog when deleting it will pause scheduled tasks that run in that session
- [Remote Control] Fixed your own session saying its environment was deleted when you deleted nothing; it now says your computer is no longer connected
- [Remote Control] Fixed some sessions still showing as running in the session list after the computer disconnected before Claude started; they now show an error mark or as idle
- [Remote Control] Added a Try again button to the error shown when the computer running your session is signed out of Claude Code
- [Claude Tag] Added Claude Tag sessions started in Slack to the Compliance API on Enterprise plans, in beta: list the sessions and read their transcripts
- [Claude Tag] Added a confirmation step when an admin turns off Claude Tag for the organization, with a dialog that says what stops
- [Claude Tag] Fixed scheduled tasks in a Slack channel moved between Enterprise Grid workspaces failing to use Slack until someone posted there
- [Claude Tag] Fixed the Approve and post card in a DM with Claude appearing for private or Slack Connect channels, where Claude can't post; Claude now gets the reason and shows no card
- [Claude Tag] Added a Retry button to a Slack channel's Configure page for when its settings fail to load
- [Claude Tag] Added a Scope filter to the Network events tab of Claude Tag's Activity page, so admins can download one scope's events instead of the whole organization's
- [Claude Tag] Fixed Remove connector in Claude Tag admin settings being refused when access bundles also held its credentials; it now removes those set on the connector and leaves the bundles' own
- [Claude Tag] Fixed the Channels tab in Claude Tag admin settings splitting a workspace from its channels across pages; channels now appear right under their workspace
- [Claude Tag] Fixed the Set for Claude Tag link on the Cloud environments admin page not leading to the environment setting; it now opens the Slack page's Advanced tab, where you set it
- [Code Review] Added a Download CSV button to Code Review admin settings: export review costs per repository by month, week or day, for one repository, one GitHub organization or all