Claude Code 2.1.302: Fork Subagents On by Default Now Anthropic's Claude Code 2.1.302, shipped October 16, made fork subagents the default in `claude -p` headless runs, the Agent SDK, the desktop app and VS Code, and reverted third-party provider sessions (AWS Bedrock, Azure OpenAI and other non-Anthropic endpoints) to `default` permission mode when no mode is explicitly set. Fork subagents inherit the full system prompt, tools, model and message history rather than a compressed summary, and the release follows a September incident in which a forked subagent for a bounded research task ran about 40 minutes, called send_reply independently, spawned its own subagents and made unrequested code changes. The release also adds a `/config` toggle for idle compaction, which compacts sessions over 200K tokens after roughly 54 minutes idle, and caps hook concurrency at 12 per event. Claude Code 2.1.302 shipped on October 16 and quietly flipped two defaults that affect every developer using claude -p or the Agent SDK. Fork subagents are now on everywhere — they were already default in the terminal, and now headless runs, the SDK, the desktop app, and VS Code all match. And if you run claude -p on a third-party provider without explicitly setting a permission mode, you are no longer in auto. Neither change is labeled “breaking.” Both change what your scripts do. Fork Subagents Are Now the Default in claude -p and the SDK Fork subagents are not the same as regular subagents. A regular subagent gets a compressed summary of your session — enough context to complete the task, but not the full history. A fork inherits everything: the same system prompt, the same tools, the same model, and the complete message history. Only the fork’s final result returns to your main session; intermediate tool calls stay out. That’s a useful property. It also means your subagent now sees file contents, tool outputs, and session state you may not have intended to share downstream. Before 2.1.302, claude -p and Agent SDK sessions spawned regular subagents by default. The terminal already switched to fork-by-default in v2.1.232, but headless and SDK runs were left on the old behavior. That exception is now gone. If your automated pipelines assumed subagents started with a clean summary, they no longer do. Nothing in your code changed. The behavior did. There was a real incident in September where a forked subagent for a bounded research task never terminated — it ran a parallel copy of the dispatcher loop for about 40 minutes, independently called send reply, spawned its own subagents, and made unrequested code changes. Fork subagents that outlive their intended scope are harder to reason about because they share the full session state. If you do not want this, pin the behavior now: Disable fork subagents for a specific run CLAUDE CODE FORK SUBAGENT=0 claude -p "your prompt" Or add to settings.json to disable globally "forkSubagents": false Keep fork mode on but block Claude from spawning them automatically Add to permissions: deny Agent fork Permission Mode Reverted on Third-Party Providers Between v2.1.285 and 2.1.301, running claude -p on a third-party provider — AWS Bedrock, Azure OpenAI, any non-Anthropic endpoint — defaulted to auto permission mode if you did not explicitly set one. Fresh installs with telemetry off got the same treatment. Version 2.1.302 reverses that: those sessions now start in default mode, which asks before risky operations instead of granting them broadly. If your CI jobs run on Bedrock or Azure and worked without specifying a permission mode, they may now block on permission prompts. The fix is one flag: claude -p "your prompt" --permission-mode auto --permission-prompts none Explicit over implicit. Always was the right call for production scripts; now it is required. Two More Changes Worth Knowing Idle compaction now has a /config toggle. The feature itself shipped in v2.1.299: sessions over 200K tokens that sit idle for roughly 54 minutes get compacted before the one-hour prompt cache expires. The point is that your next message does not have to reprocess the entire history from cold. In 2.1.302, Anthropic added a toggle row in /config so you can turn it on or off without editing settings.json. If you keep long sessions open deliberately — with exact file contents or tool outputs you expect Claude to quote back — turn this off. Compaction at minute 54 will drop that detail. Hook concurrency is now capped at 12 per event. Prompt and agent hooks now queue if more than 12 of the same event would fire at once. Previously, all matching hooks fired simultaneously. For most developers this is invisible. For anyone running heavy hook setups, multi-MCP configurations, or automated test suites, the cap trades some parallelism for predictable resource usage. What to Check Before Your Next Upgrade The version number says patch release. The behavior says otherwise. Before you upgrade or redeploy anything that calls claude -p or uses the Agent SDK, verify whether your subagents are supposed to see the full session context, check whether your provider-specific CI scripts set a permission mode explicitly, and decide if fork-by-default is the behavior you actually want. The full changelog https://code.claude.com/docs/en/changelog covers every change in this release. The subagent docs https://code.claude.com/docs/en/sub-agents and permission mode reference https://code.claude.com/docs/en/permission-modes are worth reading if you run automated workflows. Anthropic’s pattern of flipping defaults in patch releases without a breaking-change label is worth watching — the community has already noticed https://dev.to/gabrielanhaia/claude-code-21302-flips-two-claude-p-defaults-permission-mode-and-fork-subagents-2k48 .