Skip to content

Claude Code v2.1.212

Released · Anthropic

BreakingChanges subagent definitions, MCP server config, permission rules, background and headless runs, sandbox settings

What the release notes say

What's changed

  • /fork now copies your conversation into a new background session (its own row in claude agents) while you keep working; the in-session subagent it used to launch is now /subtask

  • Added claude auto-mode reset to restore the default auto-mode configuration, with a confirmation prompt (pass --yes to skip)

  • Added a session-wide limit on WebSearch tool calls (default 200, tunable via CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION) to stop runaway search loops

  • Added a per-session cap on subagent spawns (default 200, override with CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION) to stop runaway delegation loops; /clear resets the budget

  • MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS

  • Typing /resume in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session

  • Fixed plan mode auto-running file-modifying Bash commands (e.g. touch, rm) without a permission prompt or SDK canUseTool callback

  • Fixed worktree creation following a repository-committed symlink at .claude/worktrees, which could create files outside the repository

  • Fixed a continue:false hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections

  • Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143

  • Fixed /background and claude --bg failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7

  • Fixed shell mode (!) not executing commands containing file paths while the path autocomplete popup was open

  • Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji

  • Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the ? help overlay

  • Fixed /ultrareview rejecting PR references like #123, PR 123, and pasted PR URLs; error hints now name the command you actually typed

  • Fixed /ultrareview <branch> not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos

  • Fixed /ultrareview skipping the billing confirmation in a new conversation after /clear

  • Fixed /ultrareview's "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands

  • Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning

  • Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session

  • Fixed ExitWorktree failing with "no active EnterWorktree session" after resuming a session with --continue/--resume in print/SDK mode

  • Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run

  • Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart

  • Fixed background sessions created with /fork losing their live-parent protection after a state write failure

  • Fixed reopening a stopped background session from the agent view failing silently — it now resumes the session, or shows why it can't and lets you force a restart

  • Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session

  • Fixed the plan-approval dialog footer splitting "ctrl+g to edit in <editor>" apart when the file path is long

  • Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode

  • Fixed diff previews losing their line numbers and +/- markers in narrow layouts

  • Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143

  • Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding

  • Fixed OTLP event log records missing trace_id/span_id when TRACEPARENT is set in SDK/headless mode

  • Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause

  • Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded

  • Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff

  • Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)

  • Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait

  • Reduced token usage in inter-agent messaging: SendMessage bodies are no longer duplicated into replayed history and tool results

  • Changed /fork to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view

  • Changed bare /btw to reopen the side-question panel on your most recent exchange so you can browse earlier answers

  • Changed the ← footer hint to pulse N done for a moment when a background agent finishes while nothing needs your input

  • Deprecated the Task tool's mode parameter (now ignored); subagents inherit the parent session's permission mode by default