← Back to all releases
v2.1.323 Claude Code Release Notes
Claude's Analysisby Sonnet 5.5
Full AnalysisMajor stability and security pass: Bash permission and sandbox gaps closed, sign-in mix-ups fixed, plus experimental Code Mode and plugin engines gating.
Changes
294
Total Changes (vs Average)
14.0×
Version Type
Patch
Release Focus
Bug Fixes
Days Since Prior Release
3
Release # This Month
#6 of 6
Bug Fix Ratio
66%
Post-Release Edits
—
How does this release compare? Release pace, fix share and issue trends since April 2025.See all-time statistics
Change Category
Ecosystem Impact
Plugins / Skills, MCP, Cloud Sessions and Remote Control each appeared in 9 of the last 10 releases, showing sustained attention to the extensibility and remote-session surface rather than a one-off push.
Key Themes
24Bash permission and sandbox hardening|16Sign-in and background session identity|33Code Mode and plugin ecosystem controls|22MCP, SDK and headless reliability|10Memory, hangs and terminal polish
May Help If You've Noticed
Claude ran Bash commands without asking, or kept asking even after you chose 'don't ask again'
Changes in Claude Code v2.1.323
Added27 changes
- •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 (anthropics/claude-code#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 - •[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
- •[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] 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] 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] 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
- •[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
Improved21 changes
- •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 - •[VSCode] Improved sign-in errors behind TLS-inspecting proxies: a certificate failure now says what to do, as the terminal does
- •[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] 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] 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] 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
Fixed195 changes
- •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
- •[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
- •[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] 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] 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] 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
- •[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
- •[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] 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
Changed48 changes
- •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 - •[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
Removed3 changes
- •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
- •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