
Sign up to save your podcasts
Or


What's new in Claude Code v2.1.128
A polish-heavy release with one real data-safety fix. EnterWorktree used to create the new branch from origin/, silently orphaning any unpushed commits — it now branches from local HEAD as documented. /mcp shows the tool count for each connected server and explicitly flags servers that connected with 0 tools (the most common silent MCP failure mode). --plugin-dir accepts .zip archives in addition to directories. --channels now works with API-key console auth, gated behind a new channelsEnabled: true managed setting. Subprocesses (Bash, hooks, MCP, LSP) no longer inherit OTEL_* env vars, so OTel-instrumented apps under the Bash tool stop accidentally sharing Claude Code's collector. MCP workspace is now a reserved server name (breaking — existing servers with that name are skipped with a warning). And SDK hosts receive a persistent localSettings suggestion for Bash permission prompts so "Always allow" persists to .claude/settings.local.json.
EnterWorktree branches from local HEAD
Why: Creating a worktree from origin/ quietly orphaned unpushed commits on your current branch — a silent data-loss path if you launched a worktree mid-session.
What: EnterWorktree now creates the new branch from your local HEAD as documented, so unpushed commits travel with you into the worktree.
How: claude -w feature-branch (or the EnterWorktree tool) — branches off your current local commit, no git stash needed.
/mcp shows tool count + flags 0-tool servers
Why: When an MCP server connected but exposed zero tools (auth scope mismatch, broken tool registration), it looked "fine" in /mcp and silently did nothing — you only noticed when you tried to use it.
What: /mcp now displays the tool count alongside each connected server and explicitly flags servers that connected with 0 tools. Reconnects also stop flooding the conversation with full tool-name lists — re-announces are summarized by server prefix.
How: Run /mcp — the count appears inline; 0-tool servers are highlighted so you can investigate before noticing in production.
MCP: workspace is now a reserved server name
Why: A new built-in workspace MCP capability ships in 2.1.128, and any user-defined server named workspace would silently shadow or conflict with the built-in.
What: workspace is now a reserved MCP server name. Existing servers configured with that name are skipped on startup with a warning, not silently overridden.
How: Check /doctor or /mcp after upgrading; rename any "workspace" entry in your MCP config.
--plugin-dir accepts .zip archives
Why: Sharing or testing a plugin meant unzipping it first and pointing --plugin-dir at the unpacked tree — fine locally, awkward for CI artifacts and review packets.
What: --plugin-dir now accepts .zip plugin archives in addition to directories.
How: claude --plugin-dir ./build/my-plugin.zip — same flag, archives load alongside unpacked dirs.
--channels works with console (API key) auth
Why: Channels research preview previously required Claude.ai authentication, which excluded API-key console orgs running on Bedrock/Vertex/Foundry.
What: --channels now works with API-key console authentication. Console orgs with managed settings opt in via a new channelsEnabled: true managed setting before users can attach channels.
How: As an admin, set channelsEnabled: true in your managed settings.json; users then run claude --channels plugin:@.
Subprocesses no longer inherit OTEL_* env vars
Why: OTel-instrumented apps run via the Bash tool inherited Claude Code's own OTEL_EXPORTER_OTLP_ENDPOINT and friends, so their telemetry got mailed to Claude Code's collector instead of the app's.
What: Bash, hook, MCP, and LSP subprocesses now have OTEL_* env vars stripped from their environment. Claude Code keeps its own telemetry; child processes use whatever they were configured with, or nothing.
How: No action needed. If you intentionally want a subprocess to share Claude Code's OTel config, set the env vars explicitly in your hook or wrapper script.
SDK: persistent localSettings suggestion for Bash prompts
Why: SDK hosts choosing "Always allow" for a Bash command had no canonical place to persist the rule — every host implemented its own local store.
What: SDK hosts now receive a persistent localSettings suggestion for Bash permission prompts. Selecting "Always allow" writes the rule to .claude/settings.local.json, so the next session honors it.
How: Update your SDK host to surface the localSettings suggestion field; "Always allow" then auto-persists the matching Bash(...) rule.
Hosts: Alex Chen & Sarah Kim · Generated from the official Claude Code CHANGELOG.
Full changelog: github.com/anthropics/claude-code/CHANGELOG.md
Claude Code docs: code.claude.com/docs
By AndreiWhat's new in Claude Code v2.1.128
A polish-heavy release with one real data-safety fix. EnterWorktree used to create the new branch from origin/, silently orphaning any unpushed commits — it now branches from local HEAD as documented. /mcp shows the tool count for each connected server and explicitly flags servers that connected with 0 tools (the most common silent MCP failure mode). --plugin-dir accepts .zip archives in addition to directories. --channels now works with API-key console auth, gated behind a new channelsEnabled: true managed setting. Subprocesses (Bash, hooks, MCP, LSP) no longer inherit OTEL_* env vars, so OTel-instrumented apps under the Bash tool stop accidentally sharing Claude Code's collector. MCP workspace is now a reserved server name (breaking — existing servers with that name are skipped with a warning). And SDK hosts receive a persistent localSettings suggestion for Bash permission prompts so "Always allow" persists to .claude/settings.local.json.
EnterWorktree branches from local HEAD
Why: Creating a worktree from origin/ quietly orphaned unpushed commits on your current branch — a silent data-loss path if you launched a worktree mid-session.
What: EnterWorktree now creates the new branch from your local HEAD as documented, so unpushed commits travel with you into the worktree.
How: claude -w feature-branch (or the EnterWorktree tool) — branches off your current local commit, no git stash needed.
/mcp shows tool count + flags 0-tool servers
Why: When an MCP server connected but exposed zero tools (auth scope mismatch, broken tool registration), it looked "fine" in /mcp and silently did nothing — you only noticed when you tried to use it.
What: /mcp now displays the tool count alongside each connected server and explicitly flags servers that connected with 0 tools. Reconnects also stop flooding the conversation with full tool-name lists — re-announces are summarized by server prefix.
How: Run /mcp — the count appears inline; 0-tool servers are highlighted so you can investigate before noticing in production.
MCP: workspace is now a reserved server name
Why: A new built-in workspace MCP capability ships in 2.1.128, and any user-defined server named workspace would silently shadow or conflict with the built-in.
What: workspace is now a reserved MCP server name. Existing servers configured with that name are skipped on startup with a warning, not silently overridden.
How: Check /doctor or /mcp after upgrading; rename any "workspace" entry in your MCP config.
--plugin-dir accepts .zip archives
Why: Sharing or testing a plugin meant unzipping it first and pointing --plugin-dir at the unpacked tree — fine locally, awkward for CI artifacts and review packets.
What: --plugin-dir now accepts .zip plugin archives in addition to directories.
How: claude --plugin-dir ./build/my-plugin.zip — same flag, archives load alongside unpacked dirs.
--channels works with console (API key) auth
Why: Channels research preview previously required Claude.ai authentication, which excluded API-key console orgs running on Bedrock/Vertex/Foundry.
What: --channels now works with API-key console authentication. Console orgs with managed settings opt in via a new channelsEnabled: true managed setting before users can attach channels.
How: As an admin, set channelsEnabled: true in your managed settings.json; users then run claude --channels plugin:@.
Subprocesses no longer inherit OTEL_* env vars
Why: OTel-instrumented apps run via the Bash tool inherited Claude Code's own OTEL_EXPORTER_OTLP_ENDPOINT and friends, so their telemetry got mailed to Claude Code's collector instead of the app's.
What: Bash, hook, MCP, and LSP subprocesses now have OTEL_* env vars stripped from their environment. Claude Code keeps its own telemetry; child processes use whatever they were configured with, or nothing.
How: No action needed. If you intentionally want a subprocess to share Claude Code's OTel config, set the env vars explicitly in your hook or wrapper script.
SDK: persistent localSettings suggestion for Bash prompts
Why: SDK hosts choosing "Always allow" for a Bash command had no canonical place to persist the rule — every host implemented its own local store.
What: SDK hosts now receive a persistent localSettings suggestion for Bash permission prompts. Selecting "Always allow" writes the rule to .claude/settings.local.json, so the next session honors it.
How: Update your SDK host to surface the localSettings suggestion field; "Always allow" then auto-persists the matching Bash(...) rule.
Hosts: Alex Chen & Sarah Kim · Generated from the official Claude Code CHANGELOG.
Full changelog: github.com/anthropics/claude-code/CHANGELOG.md
Claude Code docs: code.claude.com/docs