
Claude Code v2.1.302 Major Updates - Default Enablement of Fork Subagents and Permission Mode Changes for claude -p
This page has been translated by machine translation. View original
This is Ishikawa from the Cloud Business Division. Claude Code v2.1.302 (released October 16, 2026) has been released. This release includes changes related to default behavior in non-terminal execution environments such as claude -p and the Agent SDK. I tried out the default enablement of fork subagents.
The previous update article is here.
Update Summary
v2.1.302 includes 63 changes: 43 bug fixes, 3 default behavior changes, 3 new features, and 1 end-of-life announcement. Of the 63 changes, 27 are for Cloud Sessions, Claude Tag (Slack), VS Code, Remote Control, and Code Review.
Notable Updates
Fork subagents now enabled by default in claude -p, Agent SDK, and more
Fork subagents (subagent_type: "fork") are now enabled by default in claude -p, Agent SDK, desktop app, and VS Code, just as they are in the terminal. They can be disabled with CLAUDE_CODE_FORK_SUBAGENT=0 and are not provided in claude mcp serve.
If you have automations using subagents in claude -p or the Agent SDK and want to preserve the previous behavior, I think specifying CLAUDE_CODE_FORK_SUBAGENT=0 is the way to go.
Default permission mode change for claude -p and Agent SDK
Sessions using claude -p and Agent SDK without a specified permission mode will now start in default mode when using third-party providers, when telemetry is off, or on a fresh install. Specifying --permission-mode auto will keep it in auto mode. The CHANGELOG states the conditions as: "on third-party providers, with telemetry off or on a fresh install."
If you are calling claude -p from CI or batch jobs under the applicable conditions without specifying a permission mode, I think it's worth checking whether execution results involving tool calls that require permissions have changed.
Addition of CLAUDE_CODE_AUTO_MODE_MODEL
The environment variable CLAUDE_CODE_AUTO_MODE_MODEL has been added, allowing you to choose the model used by the client-side auto mode classifier. The server-side auto mode model remains unchanged.
I think this is a useful setting for environments using the client-side classifier where you want to explicitly pin the classifier model.
End-of-life announcement for standalone Claude Design
Notices have been added to /design-sync and /design-login indicating that standalone Claude Design (claude.ai/design) will be discontinued by December 14, 2026.
If you are using standalone Claude Design together with /design-sync, I think it's worth revisiting your workflow in preparation for the December 14, 2026 shutdown.
Fix for tools not working on servers using MCP protocol version 2026-07-28
A bug has been fixed where tools were not displayed or all tool calls failed when an MCP server negotiated protocol version 2026-07-28 while omitting resultType, ttlMs, and cacheScope.
If you have built or operate MCP servers that negotiate protocol version 2026-07-28 and have been experiencing symptoms of tools not appearing, I think it's worth checking whether updating resolves the issue.
Read tool now rejects image sources larger than 128 MB
A bug has been fixed where the Read tool would load entire image files of arbitrary size, or pipes/devices with image-like names, into memory. Image sources larger than 128 MB are now rejected.
I think this fix will help those who were loading large images or pipes/devices with image-like names via Read and experiencing memory pressure. If you need to handle image sources larger than 128 MB with Read, you will likely need to resize them beforehand.
Update Details
New Features
- The environment variable
CLAUDE_CODE_AUTO_MODE_MODELhas been added, allowing you to choose the model used by the client-side auto mode classifier. The server-side auto mode model remains unchanged. - An
Idle compactionrow has been added to/config, allowing you to toggle idle compaction on and off. The notification displayed after idle compaction now also shows how to turn it off. - [Cloud sessions] A banner has been added to the routine page indicating why the previous run did not start (such as reaching the organization's concurrent cloud session limit).
Improvements
- Startup time when a large number of plugins are enabled has been improved. The number of filesystem calls required to load plugin command and agent files has been significantly reduced, with particularly noticeable improvements on Windows.
- In auto mode using the server-side classifier, if a conversation is too long for safety checks, the conversation will now be compacted rather than rejecting all tool calls subject to the check.
- For prompt hooks and agent hooks, a maximum of 12 will now run simultaneously for the same event, with the rest queued.
- Instructions for Claude in Chrome have been repositioned within the system prompt so that new conversations can load from the shared prompt cache.
- Additionally, improvements and changes have been made to Claude Tag management settings (expanded repository search scope, display timing for Add place and Add > Domain, reorganization into 4 tabs, how roles are grouped on the Roles page), error display for cloud session start failures, the
← for agentshint in the footer, and the message when/feedbackis disabled.
Fixes
- Fixed issue where MCP server tools were not displayed: Tools were not displayed or all tool calls failed when an MCP server negotiated protocol version 2026-07-28 while omitting
resultType,ttlMs, andcacheScope. - Fixed issue where Read tool loaded entire images into memory: Image files of arbitrary size, or pipes/devices with image-like names, were being loaded entirely into memory. Image sources larger than 128 MB are now rejected.
- Fixed issue where configuration writes from
claude pluginand similar commands were lost: Subcommands such asclaude pluginwould sometimes exit before completing queued configuration/config writes, causing changes to be lost or.tmpfiles to remain. - Fixed issue where stopping during compaction resulted in "Prompt is too long": Stopping a turn during conversation compaction would result in a "Prompt is too long" error.
- Fixed prompt cache miss when reloading tools via ToolSearch: The prompt cache was missing when tools added mid-session were reloaded via ToolSearch or after compaction.
- Fixed issue where prompt suggestions consumed credits: Prompt suggestions were consuming usage credits for models that charge only in credits. Prompt suggestions are now skipped after a credit-charged response.
- Fixed file writes being rejected on exFAT/FAT32 drives on Windows: All file writes were being rejected or requiring confirmation for projects on exFAT/FAT32 drives (including sessions started with
--plugin-dir). - Fixed duplicate work when re-running routines: [Cloud sessions] Scheduled routine runs that failed partway through would restart from the beginning after 1 hour or more, causing duplicate work such as posting the same report twice.
- Additionally, numerous minor bugs have been fixed related to mid-session switching to Bedrock/Vertex, OpenTelemetry
tool_decisionevents, PowerShell tools, the VS Code extension, cloud sessions, Claude Tag (Slack), and more.
Breaking Changes / Deprecations
Default permission mode for claude -p and Agent SDK
This is the change introduced in the Notable Updates section. Below are command examples. The previous starting mode is not documented in the CHANGELOG, so it is not noted in the comments.
Before (up to v2.1.301):
# Running without specifying a permission mode
claude -p "Run the tests and summarize the results"
After (v2.1.302 onward):
# The same command above will start in default mode when using third-party providers, when telemetry is off, or on a fresh install
claude -p "Run the tests and summarize the results"
# Specify explicitly to run in auto mode
claude -p --permission-mode auto "Run the tests and summarize the results"
Default enablement of fork subagents
This is the change introduced in the Notable Updates section. Below are command examples.
Before (up to v2.1.301):
# In claude -p, fork subagents (subagent_type: "fork") are not enabled by default
claude -p "..."
After (v2.1.302 onward):
# Fork subagents are now enabled by default in claude -p as well
claude -p "..."
# To disable
CLAUDE_CODE_FORK_SUBAGENT=0 claude -p "..."
Foreground/background execution of subagents
In the desktop app and VS Code, subagents in the main conversation will now always run in the background, just like in the terminal, rather than letting Claude decide. Additionally, in claude -p, Agent SDK, desktop app, and VS Code, agents called by subagents themselves will now run in the foreground by default.
Summarizing the CHANGELOG entries in a table:
| Target | Before (up to v2.1.301) | After (v2.1.302 onward) |
|---|---|---|
| Subagents in the main conversation in desktop app and VS Code | Claude decides whether to run in the background | Always runs in the background, same as terminal |
Agents called by subagents themselves in claude -p, Agent SDK, desktop app, and VS Code |
Not documented in CHANGELOG | Runs in the foreground by default |
End-of-life announcement for standalone Claude Design
This is the change introduced in the Notable Updates section.
| Target | Before (up to v2.1.301) | After (v2.1.302 onward) |
|---|---|---|
When running /design-sync or /design-login |
No end-of-life notice | Notifies that standalone Claude Design (claude.ai/design) will be discontinued by December 14, 2026 |
What is documented in the CHANGELOG is the addition of the notice; there is no mention of deprecating /design-sync or /design-login themselves.
Trying out the default enablement of fork subagents
I verified that in claude -p with v2.1.302, fork is included among the values that can be specified for subagent_type in the Agent tool without any configuration, and that it is removed when CLAUDE_CODE_FORK_SUBAGENT=0 is specified.
I ran claude -p for a single turn (--max-turns 1) in a working directory and saved the events output by --output-format stream-json --verbose to a file. I asked Claude to list the values that can be specified for subagent_type in the Agent tool without using any tools.
I extracted Claude's response (result) and the agents list from the init event using jq.
Running with default settings:
% claude -p --max-turns 1 --output-format stream-json --verbose "Please list the values that can be specified for subagent_type in the Agent tool, one per line, without using any tools. No explanations needed." | jq -r 'if .type=="system" and .subtype=="init" then "version: \(.claude_code_version // "-")\nagents: \((.agents // []) | join(", "))" elif .type=="result" then "result:\n\(.result // .subtype)" else empty end'
version: 2.1.302
agents: claude, Explore, general-purpose, Plan, statusline-setup
result:
claude
Explore
general-purpose
Plan
statusline-setup
fork
Running with fork subagents disabled:
% CLAUDE_CODE_FORK_SUBAGENT=0 claude -p --max-turns 1 --output-format stream-json --verbose "Please list the values that can be specified for subagent_type in the Agent tool, one per line, without using any tools. No explanations needed." | jq -r 'if .type=="system" and .subtype=="init" then "version: \(.claude_code_version // "-")\nagents: \((.agents // []) | join(", "))" elif .type=="result" then "result:\n\(.result // .subtype)" else empty end'
version: 2.1.302
agents: claude, Explore, general-purpose, Plan, statusline-setup
result:
claude
Explore
general-purpose
Plan
statusline-setup
In Claude's response, fork appeared at the top only when running with default settings, and did not appear when CLAUDE_CODE_FORK_SUBAGENT=0 was specified. Since Claude's response is considered to be based on the Agent tool description provided, I believe that by default, fork is included among the values for subagent_type, and it is removed with CLAUDE_CODE_FORK_SUBAGENT=0. On the other hand, the agents list in the init event was the same in both runs and did not include fork. This list could not be used to determine whether fork is available.
With fork subagents now enabled by default, bringing the behavior of the terminal and claude -p/Agent SDK in line with each other, I feel it has become easier to bring workflows tested interactively into non-interactive automation.
Closing
Changes have been made to align the default enablement of fork subagents and the handling of background execution across the terminal, claude -p, Agent SDK, desktop app, and VS Code, and I feel that the differences between environments are gradually narrowing.
If you are using Claude Code with claude -p, the Agent SDK, the desktop app, or VS Code, why not update and see how the default behavior has changed?
References
