3 min read AI-generated

Claude Code 2.1.212: /fork Grows Up — and Plan Mode Had a Hole

Copy article as Markdown

Forks now become their own background session instead of an in-chat subagent. And along the way, a bug gets closed where plan mode could touch files without asking.

Featured image for "Claude Code 2.1.212: /fork Grows Up — and Plan Mode Had a Hole"

Claude Code 2.1.212 shipped overnight, about a day after 2.1.211. And this time there’s an actual conceptual change — not cosmetics.

/fork and /subtask are now two different things

/fork used to be a bit fuzzy: it launched a subagent inside the same session. As of 2.1.212, /fork copies your conversation into its own background session — with its own row in claude agents — while you keep working in the original. The old in-session subagent is now /subtask.

That’s the more honest split. A fork is a branch, not a helper. Wondering whether a different approach would work better? Fork it, let it run, carry on. Bonus: the fork gets named after your prompt when the session has no title yet. Small thing, big difference once the agent view has ten rows in it.

The fix I’d call the important one

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

Plan mode is the promise that nothing gets touched before you say yes. That promise was broken: file-modifying Bash commands like touch or rm went straight through — no permission prompt, no canUseTool callback in the SDK.

The second security fix fits the pattern: worktree creation followed a repository-committed symlink at .claude/worktrees and could create files outside the repo. Both are the kind of gap you only find when someone goes looking.

Brakes against runaway loops

Two new caps, both sensible:

  • WebSearch: max 200 calls per session (CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION)
  • Subagents: max 200 spawns per session (CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION), reset by /clear

Both exist because agents can loop — search, search, search, delegate, delegate. If you’ve ever watched that land on an invoice, you know this isn’t an academic concern.

What else is in there

  • MCP tool calls running longer than 2 minutes move to the background automatically so the session stays usable (CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS).
  • /resume in the agent view now opens a picker of past sessions — including ones deleted from the list — and brings your pick back as a background session.
  • claude auto-mode reset restores the default auto-mode configuration.
  • SIGTERM during a running Bash tool orphaned the command’s process tree in print/SDK mode. Now: abort the turn, kill the tree, exit 143.
  • Prompt caching for the mid-conversation system block now works behind LLM gateways and custom base URLs.
  • The Task tool’s mode parameter is deprecated — subagents inherit the parent session’s permission mode by default.
  • Conversations with many images were incorrectly failing with “Request too large”.
  • Web search and web fetch returned the text “API Error” as search results when the API was overloaded. Now there are retries with backoff.

My take

Splitting /fork and /subtask is the kind of change you only appreciate two weeks later. The plan mode bug is the reason to update today — if you rely on plan mode meaning nothing happens, that assumption had exceptions until now.

claude --version. You know the drill.


Sources: