Release · Claude Code · Anthropic

Claude Code v2.1.323

What's new in Claude Code v2.1.323, released Nov 12, 2026 (). This is the latest version.

Release notes

Claude Code v2.1.323

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"] to plugin.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 --strict fails on it
  • Added to claude plugin validate the $ nouns a mod's engine.create hook adds, withholds or replaces
  • Added support for CLAUDE_CODE_AUTO_MODE_MODEL in 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 -p and SDK sessions, so a host such as Claude Desktop won't end the turn as hung (once it includes this version)
  • Added .docx support to Artifact tool asset uploads
  • Added a /diff to close hint 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 as Bash(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_MODE when Perforce settings are found and the mode is off
  • Added CLAUDE_CODE_DISABLE_AGENT_PROGRESS_SUMMARIES (available since 2.1.318): set it to 1 to 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 unsetOptionCount to the claude plugin install --json result: how many userConfig options are not yet set
  • Added isPromptCovered to 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 /compact again, 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.json moments earlier; a settings file you delete during a session now stays deleted
  • Fixed claude plugin commands and claude mcp list signing 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 /proc files, 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 /resume leaving 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 ps processes 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 WorktreeCreate hook 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 --bg continued 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 login profile 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 /login in another terminal, they carry on at the next message
  • Fixed the billing notice naming your ant auth login organization when a custom X-Api-Key header is set
  • macOS: Fixed "Not logged in · Please run /login" coming back right after a successful /login or 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 awsAuthRefresh or gcpAuthRefresh command sometimes running twice for one request when three or more sessions needed a fresh sign-in at once
  • Fixed the claude -p warning about an ended claude.ai login to say that claude auth logout also 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 .git or .claude, where the saved rule did not stop the next prompt
  • Fixed a case where some lsof commands ran without a permission prompt
  • Fixed Bash commands that write a file with cat > file <<EOF being shown as "Read 1 file"
  • Fixed a case where Bash permission checks judged an rm from the wrong folder and skipped the dangerous-removal prompt under bypass permissions or a Bash allow rule
  • Fixed --permission-mode auto or a settings defaultMode: auto starting 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 plansDirectory is 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 as Bash(NODE_ENV*), now asks
  • Fixed auto mode running behind a gateway at ANTHROPIC_BASE_URL

…