Release notes

Claude Code 2.1.212

· 3 new· 28 fixed

Workflow is significantly improved, with /fork now creating independent background sessions and /subtask handling in-session delegation. Users gain more control through auto-mode reset and new guardrails limiting runaway WebSearch tool calls and subagent spawns. Key security fixes prevent plan mode from auto-executing file-modifying commands and resolve worktree creation vulnerabilities. These updates enhance reliability and provide a more stable experience, including improved web search and a /resume picker for all past sessions.

Added3

  • 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

Improved3

  • 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

Changed14

  • `/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`
  • 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
  • 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
  • Changed Enterprise `forceLoginMethod` to be enforced for VS Code extension, SDK, `setup-token`, and `install-github-app` logins, not just the terminal
  • Changed session transcripts to record the reasoning effort level on each assistant message
  • Changed headless/SDK sessions to apply a `set_model` control request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn
  • Changed agent view / `claude agents --json`: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working"
  • Updated the auth status panel title from "Cloud authentication" to "Authentication"
  • Corrected an earlier release note (2.1.200): tmux through the 3.6 series lacks synchronized output; newer tmux with support is detected automatically

Fixed28

  • 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

Never miss a Claude Code release.

Get a push notification the moment the next version ships.

Get Claude Drops

New to the changelog? Read our guide to reading the Claude Code changelog or browse all releases.