← Back to all releases
v2.1.321 Claude Code Release Notes
Claude's Analysisby Sonnet 5.5
Full AnalysisClaude Fable 5.2 is the new default Fable model with 1M context, plus security fixes for MCP token leaks and sandbox bypasses and a broad stability pass across Remote Control.
Changes
118
Total Changes (vs Average)
5.8×
Version Type
Patch
Release Focus
Bug Fixes
Days Since Prior Release
3
Release # This Month
#4 of 5
Bug Fix Ratio
63%
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
Cloud Sessions appeared in 9 of the last 10 releases, alongside Plugins / Skills and VS Code at 9 of 10 each, and Remote Control at 8 of 10. Sustained attention on remote and extensible surfaces continues alongside core fixes.
Key Themes
6Fable 5.2 becomes the default|9Security and permission hardening|12Hangs, crashes and memory|14Remote Control and cloud sessions|5Faster startup, especially on Windows|12Hooks, plugins and skills reliability
May Help If You've Noticed
Your Claude Code session froze or hung and never recovered
Changes in Claude Code v2.1.321
Added3 changes
- •Added Claude Fable 5.2 (
claude-fable-5-2), now the default Fable model — 1M context, $8/$40 per Mtok with $0.20/Mtok cache reads - •Added
--settings <file>toclaude remote-control, which applies a settings file to every session it starts; if the file changes, no new session starts until you restartclaude remote-control - •[VSCode] Added a warning above the prompt box when both an auth token and an API key are set, matching the terminal's startup warning
Improved15 changes
- •Improved the
/modelpicker: "More models" is now an unnumbered row below every other, and older models open under it without renumbering the rest - •Gateway: Improved spend limits on a busy replica, which now skips fewer checks and records spend sooner
- •Improved the Claude apps gateway's sign-in limit messages in Claude Code and on the
/devicepage: they no longer name gateway settings, which the gateway's own log still names - •Improved
claude installand the install scripts: they finish 2 to 4 seconds sooner - •Improved how soon a Remote Control session whose process crashed can pick up a new message
- •Windows: Improved startup and first-command time by finding programs on PATH without starting a helper process
- •Improved auto mode in headless sessions, the desktop app and VS Code: reports from background subagents that wait together are answered in one model call, as in the terminal
- •Improved the agent view's row for a
claude --bg --worktreesession that couldn't set up its worktree: it now shows the error from its beginning, not an internal tag or its last 200 characters - •Improved the messages shown when an artifact is in another organization:
/loginis offered only if it's one of yours, and Claude now says where a copy may be after an account move - •Improved sessions with more images than fit in one request: Claude is told whether it has already seen a dropped image, and repeat reads of an unchanged image are limited
- •Improved
claude remote-control's messages for an unanswered first-run question: each now says what to do next - •Improved start-up time by loading trusted TLS certificates faster
- •Improved Claude apps gateway error messages to show the gateway's address without any user name or password
- •Improved the Claude apps gateway's spend limit error: the reset now shows in your local time, such as "resets 4pm (America/Los_Angeles)"
- •Windows: Improved startup time with a standard Git for Windows install by no longer checking which git.exe to run on every launch
Fixed74 changes
- •Fixed MCP OAuth requests sending secrets such as refresh tokens to another host when a server redirected them
- •Fixed a case where a read-only Bash command ran outside the sandbox without a permission prompt
- •Fixed a case where Bash permission checks judged a file write from the wrong folder and didn't prompt
- •Fixed deny rules and protected-file prompts not applying to the file that a
cpormvinto a directory writes - •Fixed the "Draws from usage credits" note showing after a switch to Fable on Enterprise seats whose plan includes Fable
- •Fixed the fallback model sometimes declining a request or mentioning a stopped response when the first model was blocked before replying
- •Fixed
claude mcp loginprinting a SEP-2352 issuer warning each time you sign in again to a server that Claude Code registered with - •Fixed
NotebookEditdeleting or overwriting a notebook's first cell when the call named no cell, on network paths (UNC shares, WSL folders,/netmounts) - •Fixed Edit changing the first of several matches, replacing a whole file on an empty
old_string, or editing a notebook as text, on network paths (UNC shares, WSL folders,/netmounts) - •Fixed
/configshowing Manual as the default permission mode when new sessions start in auto mode; pressing Space on "Auto (default)" now saves Don't Ask, not Plan - •Windows: Fixed
FileChangedhooks stopping for paths set throughwatchPathsafter the first shell command, when the session's working directory had a lowercase drive letter - •Fixed
--plugin-dir .and--plugin-dir ./builtinwriting generated type files for Claude Code's built-in plugins into abuiltinfolder - •Fixed context usage estimates overcounting tool definitions when exact token counts are unavailable
- •Fixed
/compactshowing twice in Remote Control on web and mobile - •Fixed plugin auto-updates and
/pluginmarketplace updates downloading a plugin again for each worktree or folder of a repository - •Fixed auto mode losing a background subagent's report that had started a turn when the conversation was compacted before Claude answered it
- •Fixed project skills, commands and agents staying missing after their folder was removed and came back mid-session, such as with
git stash, including after entering a worktree - •Fixed
claude -psometimes telling Claude that background commands get 30 minutes when they are stopped after 10 - •Fixed
pkill,pgrepandpidwaitin cloud sessions matching the session's own parent processes - •Fixed Claude in Chrome and computer use server processes staying alive after their parent exits behind a proxy that stalls connections
- •Fixed a large hook output pointing Claude to a file that held another hook's output from the same tool call
- •Fixed apps that embed Claude Code getting their own PreToolUse hook's
askreason instead of another hook's when both asked - •Fixed a PreToolUse hook's
askbeing lost when another hook'sdeferfinished first and could not be honored - •Fixed a rare crash on permission prompts and background tasks
- •Fixed project skills, commands and agents disappearing from the menu in SDK and desktop sessions after Claude entered a worktree
- •Fixed
/desktopon macOS saying Claude Desktop is not installed when it is in~/Applications - •Fixed OpenTelemetry repository attributes (
vcs.*) missing from Claude Desktop sessions that start on a pre-started process - •Fixed WebFetch passing "No response from model" to Claude as page content when the model reading the page returned no text; the call now fails with a clear error
- •Fixed screen reader mode delaying the prompt at startup when the system clock moved back while Claude Code was starting
- •Fixed a command's panel sometimes not coming back after a dialog closed, leaving no panel or prompt on screen until the next redraw
- •Fixed a project's MCP server being disconnected after the first message in a Claude Desktop Code tab session when the desktop app has an MCP server or extension of the same name
- •Fixed a turn ending with "API Error: EPROTO: The TLS handshake failed" when the connection broke partway through a reply; the partial reply is kept or the request is retried, as before 2.1.302
- •Fixed high memory use in long sessions that repeatedly read single lines from large files
- •Fixed fast mode losing replies, switching models or retrying for minutes when fast serving is rate-limited, overloaded or failing; it now tries standard speed on the same model first
- •Fixed one request carrying far more background agent reports than intended after Claude was stopped while several were waiting
- •Fixed messages from a Claude Desktop Code tab session to your other sessions staying paused after you typed while Claude was still working
- •Fixed
claude agentsignoring--permission-mode,--dangerously-skip-permissions,--model,--effortor--agenttyped beforeagentswhen a flag such as--verbosewas also on the line - •Fixed a case where Remote Control showed as off with "login expired" in the desktop app while its connection was still up, because the app was briefly unable to hand over a sign-in token
- •Fixed a Remote Control message sent with "Queue for later" reaching Claude in the middle of the running turn
- •Fixed the git status given to Claude at session start reading as clean when git status failed; it now reads as unavailable
- •Fixed the git status given to Claude at session start showing the first listed file as staged when its changes were not staged
- •Fixed a hang or out-of-memory crash when a connector in a cloud session lists resources with very long names
- •Fixed Remote Control showing as connected after its connection closed for good while the session's history was still uploading
- •Fixed screen reader mode turning off when you return to a conversation from agent view
- •Fixed screen reader mode y/n questions taking as yes a stray "y" at the end of text typed as the question opened
- •Fixed cloud sessions telling Claude that a host is probably not allowed when it is allowed and the network proxy could not connect to it
- •Fixed an MCP server sometimes showing as connected with no tools after it was reconnected or the session's directory changed while its tools were still loading
- •Fixed Bash commands sometimes running in the wrong folder when Claude sent several at once and an earlier one changed folders
- •Fixed files Claude sends from cloud and Remote Control sessions failing at once when an upload gets an HTTP 507 from a proxy; the upload now gets a second try
- •Fixed new messages not being saved, and
claude -p, SDK and VS Code sessions hanging, when memory ran out while the transcript was being read - •Fixed sign-in, token refresh and logout waiting indefinitely when something on the network accepts the connection but never answers the TLS handshake
- •Fixed a sent file showing under a different name in the Claude apps when its name hid text-direction or control characters; Claude now refuses to send such a file
- •Fixed sub-agent progress summaries running a request to its end after the model replied with a tool call
- •Fixed Bash reads such as
grep -r foo "$PWD/src"asking for permission when the same command with the path typed out runs without asking - •Fixed Claude apps gateway refusing to start when a
desktopsetting holds a field newer than the gateway, such as a managed MCP server'soauth.omitResource; it now warns and serves it - •Fixed Bash commands coming back empty for zsh users whose
.zshrcsetsKSH_OPTION_PRINT - •macOS: Fixed "Unable to read managed policy settings" at startup when a valid MDM profile was slow to read: the read is retried once, and a timeout is now reported as a timeout
- •Fixed agent view erasing another agent view's saved input text when it restarted for an update with nothing typed
- •Fixed remote sessions giving no reply after a restart when a
UserPromptSubmithook blocked a replayed permission answer; these hooks no longer run on that replay - •Fixed
claude remote-controlaccepting aytyped without Enter at its first-run question when the terminal's input ended - •Fixed Claude Desktop not showing spend limit warnings behind a Claude apps gateway whose policy has no
code:rules - •Fixed fullscreen sessions with some plugins ending with an error when a tool result that had got shorter scrolled off the top of the screen
- •Fixed prompt suggestions making extra API requests when the model replied with a tool call
- •Fixed
PreToolUsemcp_toolhooks on stdio and HTTP MCP servers being skipped when their answer was over 16 MiB; the tool call is now refused - •Fixed skill and command names holding a Bamum letter that some fonts draw as blank: they are now refused
- •Fixed
claude -pon Linux exiting 0 in silence when a full NFS export or a used-up NFS quota lost transcript lines: it now prints an error and, in text and json output, exits 1 - •Fixed background agents being reported as stopped by the user, and refused a resume, when a service interrupted a cloud session and nobody pressed Stop
- •Fixed NotebookEdit reporting success to hooks and telemetry when the edit failed, for example when the notebook changed while the permission prompt was open
- •Fixed a blank screen or no answer at startup, and empty
claude mcp listoutput, when a stored MCP sign-in record was null - •Fixed the Artifact tool telling Claude to add filters when an artifact's database collection is too large to sort; it now says to read the collection page by page and sort the results
- •Fixed a restarted cloud session dropping a message with a large image when the restart came before Claude's first reply to it
- •Fixed a restarted cloud session leaving a subagent's message to the main conversation unanswered
- •Fixed Claude not being told when you stop or pause a running workflow, so it no longer says the workflow is still running
- •[VSCode] Fixed a plugin's permission request showing a name with hidden characters: it now reads "a plugin"
Changed26 changes
- •Updated the session-feedback message and the
allowedProviderssetting description to name Ultra alongside Pro and Max, and theforceLoginMethoddescription to cover every paid Claude plan - •Updated the bundled dataviz skill to suggest a list of meters, one row per item, for several ratios that each have their own limit
- •Updated the "Upgrade to Max" options to say "Upgrade to Max or Ultra"
- •Changed mods Claude writes to turn on without asking in auto and bypass modes, even with managed
allowUnsandboxedCommands: falseorallowManagedDomainsOnly, and not to load indontAskmode - •Changed mods' own tool calls (
$.tool.call,$.mcp.call) to raise no permission prompt, even under your own ask rules or indontAskand-pruns; deny rules and organization policy still apply - •Changed saved Fable 5.1 model picks to move to
fable: on Pro and Max plans at once, on Team and Enterprise plans once your organization allows it; use/model claude-fable-5-1to switch back - •Changed the fast mode labels in
/fast,/configand/modelto name your current model when it supports fast mode, and removed "(Opus only)" from the VS Code row - •Changed nested skill loading:
.claude/skillsfolders inside~/.claude/pluginsno longer load when Claude works on files there - •Self-hosted runner: Changed an on-demand runner that the server refuses because it is not needed (session ended or paused, work order superseded) to exit 0 instead of 1
- •Windows: Changed how Claude Code finds programs it starts itself, such as git, to skip relative and UNC PATH entries and links onto a network share, and to pick up PATH changes from settings
- •Changed OpenTelemetry hook events in non-interactive sessions to leave two built-in hooks out of
num_hooksandnum_successafter Bash and PowerShell calls - •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 10 to 20
- •Changed
AskUserQuestioninclaude -pand SDK sessions to deny a host's permission answer that sets the undocumentedafkTimeoutMsinput field - •Changed managed
extraKnownMarketplaces: a declared name can't be added from another source, an entry from elsewhere is hidden, and plugins the declared marketplace lists are reinstalled from it - •Changed Claude in Chrome tools that an app running Claude Code provides, such as the Claude desktop app's Code tab, to follow your organization's Claude in Chrome policy
- •Changed
policy_mode: layeredin the Claude apps gateway: managed MCP servers now add up over every matching policy,match: {}included, so a gateway already on it serves more after the upgrade - •Gateway: Changed Bedrock, Vertex and Foundry upstreams to ignore the
ANTHROPIC_*_BASE_URLvariables in the gateway's environment. Setbase_urlon the upstream to use another endpoint - •Changed headless sessions to reload mods in
.claude/skillswhen their files change; setCLAUDE_CODE_PLUGIN_DIR_WATCH=0to turn this off - •Changed the Cyber Verification Program sentence on a cyber safeguard block to use the same words as claude.ai
- •Changed Cowork cloud sessions: a PostToolUse hook can no longer replace the answer to AskUserQuestion or the plan in ExitPlanMode's result; Claude reads the originals
- •Changed
cpandmvspelled by a path, such as/bin/cp, to get the same path checks ascpandmv - •Changed background command notifications and TaskStop results to show Claude only the start and end of a command over 1,000 characters, which saves context
- •Changed artifact design guidance to treat Inter and Space Grotesk as good default typefaces
- •Changed the account email check to refuse only a shell command that holds your email and names a User-Agent, without asking, so other commands and scheduled runs no longer stop at its prompt
- •Changed Remote Control sessions to keep the folder they were started in: a connected client can no longer move a session to another folder
- •Changed managed
extraKnownMarketplacestake-overs from an undeclared source: saved data is set aside forcleanupPeriodDays, and options and secrets untilclaude plugin restore-set-aside