Release · Claude Code · Anthropic

Claude Code v2.1.321

What's new in Claude Code v2.1.321, released Nov 9, 2026 (). Newer: v2.1.323 (Nov 12, 2026)

Release notes

Claude Code v2.1.321

What's changed

  • 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 old_string, 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 KSH_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

…