Claude Code v2.1.321
Claude Code v2.1.321 was released on .
Summary
Claude Code 2.1.321 is here: Fable 5.2 is now the default, remote-control takes a settings file, and a batch of permission and security gaps got patched. Curious what else slipped through the cracks?
Release Context
- This was the 260th Claude Code release of 2026 tracked by Havoptic.
- It shipped 4 days after Claude Code v2.1.319 (November 6, 2026).
- Claude Code: ships every 1.7 days — 19 releases in the last month.
Why it matters: Claude Fable 5.2 Is Now the Default Model.
Claude Fable 5.2 is available today on all paid plans, on the Claude Platform, and on all major cloud platforms. It’s $8 per million input tokens and $40 per million output tokens, down from $10… — Claude
Shipped around the same time
Within 3 days of this release, other AI coding tools also shipped:
- GitHub Copilot CLI v1.0.109 (November 10, 2026)
- Antigravity CLI v1.5.5 (November 10, 2026)
- OpenCode v2.2.7 (November 10, 2026)
- Antigravity CLI v1.5.4 (November 10, 2026)
- Factory Droid v1.7.0 (November 10, 2026)
Compare Claude Code
- Claude Code vs OpenAI Codex CLI
- Claude Code vs Cursor
- Claude Code vs Gemini CLI
- Claude Code vs Kiro CLI
- Claude Code vs GitHub Copilot CLI
- Claude Code vs Devin Desktop
- Claude Code vs Antigravity CLI
- Claude Code vs Grok Build
- Claude Code vs Cline
- Claude Code vs OpenCode
- Claude Code vs Zed
- Claude Code vs Factory Droid
- Claude Code vs Devin
- Claude Code vs Lovable
- Claude Code vs Amp
- Claude Code vs GitHub Copilot in VS Code
- Claude Code vs Replit Agent
- Claude Code vs Bolt
- Claude Code vs v0
Release Notes
- 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> to claude remote-control, which applies a settings file to every session it starts; if the file changes, no new session starts until you restart claude remote-control
- 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 cp or mv into 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 login printing a SEP-2352 issuer warning each time you sign in again to a server that Claude Code registered with
- Fixed NotebookEdit deleting or overwriting a notebook's first cell when the call named no cell, on network paths (UNC shares, WSL folders, /net mounts)
- Fixed Edit changing the first of several matches, replacing a whole file on an empty oldstring, or editing a notebook as text, on network paths (UNC shares, WSL folders, /net mounts)
- Fixed /config showing 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 FileChanged hooks stopping for paths set through watchPaths after the first shell command, when the session's working directory had a lowercase drive letter
- Fixed --plugin-dir . and --plugin-dir ./builtin writing generated type files for Claude Code's built-in plugins into a builtin folder
- Fixed context usage estimates overcounting tool definitions when exact token counts are unavailable
- Fixed /compact showing twice in Remote Control on web and mobile
- Fixed plugin auto-updates and /plugin marketplace 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 -p sometimes telling Claude that background commands get 30 minutes when they are stopped after 10
- Fixed pkill, pgrep and pidwait in 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 ask reason instead of another hook's when both asked
- Fixed a PreToolUse hook's ask being lost when another hook's defer finished 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 /desktop on 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 agents ignoring --permission-mode, --dangerously-skip-permissions, --model, --effort or --agent typed before agents when a flag such as --verbose was 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 desktop setting holds a field newer than the gateway, such as a managed MCP server's oauth.omitResource; it now warns and serves it
- Fixed Bash commands coming back empty for zsh users whose .zshrc sets KSHOPTIONPRINT
- 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 UserPromptSubmit hook blocked a replayed permission answer; these hooks no longer run on that replay
- Fixed claude remote-control accepting a y typed 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 PreToolUse mcptool hooks 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 -p on 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 list output, 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
- Improved the /model picker: "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 /device page: they no longer name gateway settings, which the gateway's own log still names
- Improved claude install and 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 --worktree session 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: /login is 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/LosAngeles)"
- Windows: Improved startup time with a standard Git for Windows install by no longer checking which git.exe to run on every launch
- Updated the session-feedback message and the allowedProviders setting description to name Ultra alongside Pro and Max, and the forceLoginMethod description 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: false or allowManagedDomainsOnly, and not to load in dontAsk mode
- Changed mods' own tool calls ($.tool.call, $.mcp.call) to raise no permission prompt, even under your own ask rules or in dontAsk and -p runs; 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-1 to switch back
- Changed the fast mode labels in /fast, /config and /model to name your current model when it supports fast mode, and removed "(Opus only)" from the VS Code row
- Changed nested skill loading: .claude/skills folders inside ~/.claude/plugins no 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 numhooks and numsuccess after 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 AskUserQuestion in claude -p and SDK sessions to deny a host's permission answer that sets the undocumented afkTimeoutMs input 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 policymode: layered in 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 ANTHROPICBASEURL variables in the gateway's environment. Set baseurl on the upstream to use another endpoint
- Changed headless sessions to reload mods in .claude/skills when their files change; set CLAUDECODEPLUGINDIRWATCH=0 to 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 cp and mv spelled by a path, such as /bin/cp, to get the same path checks as cp and mv
- 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 extraKnownMarketplaces take-overs from an undeclared source: saved data is set aside for cleanupPeriodDays, and options and secrets until claude plugin restore-set-aside
- [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
- [VSCode] Fixed a plugin's permission request showing a name with hidden characters: it now reads "a plugin"
Other Recent Claude Code Releases
- v2.1.318 (November 3, 2026)
- v2.1.317 (November 2, 2026)
- v2.1.316 (October 31, 2026)
- v2.1.314 (October 30, 2026)
- v2.1.312 (October 27, 2026)
Upgrading from v2.1.321? See all 1 release since.
All Claude Code releases · All AI coding tool releases on Havoptic