Release notes
Claude Code v2.1.319
What's changed
- Changed auto mode with telemetry or feature flags off, including behind LLM gateways: calls the server can't check are asked about or denied, with no fallback to the built-in classifier; set
CLAUDE_CODE_AUTO_MODE_SERVER=0to keep using it (Bedrock, Vertex and Foundry are unchanged) - Changed auto mode behind an LLM gateway:
CLAUDE_CODE_AUTO_MODE_SERVER=1turns on the server-side check even withCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASset; if managed settings set the latter, they must set the1too - Added support for MCP tasks in the terminal: when an MCP server runs a tool call as a task, Claude Code moves it to the background right away and tells Claude the result when it finishes
- Added the
CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDenvironment variable to make Claude Code wait for an MCP task inside its tool call instead of moving it to the background right away - Added
permissions.denyInsteadOfPromptingsetting: a tool call that would wait on a permission prompt is denied and the turn continues, in terminal sessions, subagents and teammates - Added
/claude-api latency-optimizeto find where your Claude API code makes people wait and try faster settings against your eval - Added the
CLAUDE_CODE_DISABLE_FEATURE_FLAGSenvironment variable, which stops feature-flag fetching without turning off telemetry; every flag then uses its built-in default - Added spend for today, this week and this month to
/usagefor developers behind a Claude apps gateway who have no spend limit, when the gateway runs this version or later - Added
admin.pooled_conflict_ruleandadmin.pooled_priority_orderto the Claude apps gateway, to set which pooled group budget pays first for a developer in several groups - Added an optional
login_noticesetting to the Claude apps gateway that shows an operator-defined message on the gateway's browser verification page and on Claude Code's sign-in screen - Added
CLAUDE_GATEWAY_LOG_FORMAT=jsonto the Claude apps gateway: operational log lines become JSON withseverity,timeandmessage, for log collectors that read the level from a field - Added a Claude apps gateway boot warning for a case where another policy's
availableModelsalso allows a custom model id that one policy lists by name - Added start-up warnings to the Claude apps gateway for policies with no
desktopHomethat rely oncoworkTabEnabled: falseorchatSessionRetentionDays, ahead of Claude Desktop's November 10 change - Added a warning when your claude.ai login ends and Claude Code continues on the sign-in from
ant auth login, which bills usage to your Claude Console organization - Added a line at startup naming the Claude Console organization that is billed in a case where Claude Code uses the sign-in from
ant auth login - Added an "Earlier in this session" row to
/tasksthat lists finished subagents, so you can reopen one and message it even after it leaves the list or you restart - Added a note to
/loopconfirmations in cloud sessions that a timer stops with its container, with an offer of a loop that survives - Fixed MCP servers on the older handshake failing to connect, or returning empty results, because Claude Code declared an extension that it only uses with newer servers
- Fixed a long-running MCP tool call on a claude.ai connector sometimes never reporting its result after
--resume - Fixed a session's diff failing to load on claude.ai and the mobile apps when the folder Claude Code runs in has a file or folder named
HEAD - Fixed
/diffshowing "Diff unavailable" when a git repository has a file or folder namedHEADat its top level - Fixed the
/diffpane opening blank in sessions where 64 or more turns edited files - Fixed slash commands typed after a leading space, tab or newline being sent to Claude as plain text instead of running
- Fixed a request that kept failing with a 401 refreshing your login on every retry and causing 401s in your other sessions
- Fixed
/contextsending its full visual grid to Claude on every later turn; Claude now reads only the table - Fixed
claude -pexiting 0 in auto mode when its actions were refused because no safety check was available: text and JSON output now exit 1 - Fixed a case where Claude Code listed every project file at start on Linux for projects on a network file system (NFS, SMB, Lustre and similar)
- Fixed a case where auto mode was wrongly refused when a client sent a model change and a request for auto mode back to back
- Fixed
/statusshowing "Auto mode server: Enabled" when the server-side review isn't reaching the session, for example behind an LLM gateway that drops it - Fixed Claude-drafted feedback, surveys and
/feedbackcontinuing to appear after the server refused feedback for your organization - Fixed Claude drafting feedback on third-party gateways, where it can't be sent
- Fixed auto mode refusing actions without saying why when permission rules or
autoModesettings are very large: it now explains and, unlessautoModedeny rules are set, asks you in the terminal - Fixed a case where Bash deny and ask rules missed commands written with quoted words
- Fixed subagent hand-back reports showing an internal marker and provenance note when expanded outside verbose mode
- Fixed
claude -p --resumewith a prompt losing a deferred tool call when its MCP server is missing: the run now exits 1, keeps the call and refuses later input - Fixed a case where text was dropped from informational messages sent to SDK clients
- Fixed a case where Agent SDK hosts got a generic exit-code error instead of a failed run's own error message when the disk was full
- Fixed
CLAUDE_CODE_RESUME_INTERRUPTED_TURNre-running a turn that was interrupted in plan mode when the session resumes in another permission mode - Fixed edits to a settings file being ignored when made within a few seconds of Claude Code writing that file
- Fixed a config file left at the legacy name hiding your setup with no warning: Claude Code now says on stderr when a home holds two config files, and which is in use
- Fixed
~/.claude.json, settings and edited files ending up empty or cut off when the disk fills during a save in a read-only folder or to a bind-mounted file (one session saving at a time) - Fixed Write ending the turn as a refusal when it couldn't read the file to overwrite
- Fixed background Bash commands that finish almost instantly losing their output while being reported as completed
- Fixed the Bash tool's diff of changed files missing a file that the command wrote just before it ended
- Fixed a mistyped model name, such as
opus-5-5, telling you to update Claude Code instead of suggesting the model you meant - Fixed a case where
NotebookEditchanged the wrong cell when the notebook changed while a permission prompt was open - Fixed a ~0.5s hang after pressing Enter on the
/loginsuccess screen: the dialog now dismisses immediately and the post-login refresh runs in the background - Fixed Ctrl+G not opening the external editor while typing an "Other" answer to a question in screen reader mode
- Fixed Monitor's WebSocket watch failing with "could not resolve" behind a proxy when
CLAUDE_CODE_PROXY_RESOLVES_HOSTSis set and the machine has no DNS of its own - Fixed
claude plugin evalwarnings suggestingmax: 0for a tool that must not be called, which could never pass - Fixed background plugin auto-update not installing a dependency added by the updated plugin version
- Fixed Cmd+click not opening links in Ghostty over tmux in sessions opened from the agents view
- Fixed a mod's hot reload in
.claude/skillsmissing a file that was deleted just after it appeared, and missing its return - Fixed
/rewindfailing with "No files were restored" when restoring code to a checkpoint from before/branch - Fixed the
/claude-apiskill saying Console web settings don't apply to Managed Agents sessions, and tightened its credential and permission examples
…