2.1.169 control-plane untested · changelog-derived

Claude Code 2.1.169

Hardening-heavy release: ~25 fixes/improvements vs. 3 genuine new primitives (plus 2 new surfaces bundled into fixes). The standout primitive for agent orchestration is `disableBundledSkills` / `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS`, which lets an orchestrator strip the model's default skill/workflow/command surface down to a controlled set — a targeted control-plane lever for deterministic multi-agent fan-out. Output is changelog-derived, not runtime-tested.

5 new primitives 0 workflow recipes 25 fixes

New primitives

disableBundledSkills / CLAUDE_CODE_DISABLE_BUNDLED_SKILLSsetting

A setting plus matching env-var that hides bundled skills, workflows, and built-in slash commands from the model. One feature exposed via two surfaces (settings key + env-var). Most orchestration-relevant primitive: lets a parent strip each worker's default skill/command surface to a controlled allowlist for deterministic fan-out.

Added a `disableBundledSkills` setting and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` environment variable to hide bundled skills, workflows, and built-in slash commands from the model
--safe-mode / CLAUDE_CODE_SAFE_MODEflag

A flag plus matching env-var (one feature, two surfaces) that starts Claude Code with all customizations — CLAUDE.md, plugins, skills, hooks, MCP servers — disabled for troubleshooting. Blunt all-off switch rather than targeted control.

Added `--safe-mode` flag (and `CLAUDE_CODE_SAFE_MODE`) to start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting
/cdcommand

A slash command to move a session to a new working directory without breaking the prompt cache mid-session. Useful for long-lived orchestrator sessions that need to retarget without a cache-busting restart.

Added `/cd` command to move a session to a new working directory without breaking the prompt cache mid-session
claude agents --all (+ id/state fields)flag

Ships inside a fix line, but introduces a genuinely new flag `--all` (include completed sessions) plus new `id` and `state` fields on `claude agents --json`. Counted as a primitive per the task's flag/capability definition. Directly relevant to fan-out observability: enumerating and tracking dispatched background sessions.

Fixed `claude agents --json` omitting blocked and just-dispatched background sessions; added `--all` to include completed sessions, plus new `id` and `state` fields
API_FORCE_IDLE_TIMEOUTenv-var

Ships inside a restore-default fix line, but introduces a genuinely new env-var. The 5-minute idle timeout on Vertex/Foundry is a restoration (hardening); the opt-out knob `API_FORCE_IDLE_TIMEOUT=0` is the new primitive surface. Counted per the task's env-var definition.

Restored a default 5-minute idle timeout on Vertex/Foundry so a stalled stream aborts instead of hanging indefinitely; set `API_FORCE_IDLE_TIMEOUT=0` to opt out

Agentic relevance

This version sharpens the multi-agent control plane: `disableBundledSkills` gives an orchestrator a precise lever to strip each worker down to a controlled skill/command surface for deterministic fan-out, while `claude agents --all` plus the new `id`/`state` fields improve observability over dispatched background sessions. The remaining surface is mostly hardening — background-session flag preservation, worktree edit signaling, and managed-MCP policy enforcement — that makes long-lived orchestrated runs more reliable rather than more capable.

Hardening & fixes (25)

  • Fixed Up/Down arrows jumping to command history past the wrapped rows of a long input line — they now move through each visual row first, and history recall enters at the near edge
  • Fixed enterprise managed MCP policies (allowedMcpServers/deniedMcpServers) not being enforced on reconnect, IDE-typed configs, --mcp-config servers during the first session after install, or before remote settings loaded; also fixed slow cold starts for orgs without remote settings
  • Fixed a ~30-50ms UI stall at the start of each turn for macOS users logged in with claude.ai credentials
  • Fixed claude -p being slow or appearing to hang on Windows while waiting for the slash-command/skill scan (regression in 2.1.161)
  • Fixed Remote Control getting stuck on 'reconnecting' after resuming a session when an OAuth token refresh happened at the same time
  • Fixed Git Credential Manager's 'Connect to GitHub' popup appearing on Windows at startup when background git commands ran without cached credentials
  • Fixed footer hints (e.g. 'esc to interrupt') not showing for users with a custom statusline
  • Fixed stale permission and dialog prompts reappearing every time you reattached to a remote session whose worker had died while waiting on them
  • Fixed agents view leaving a stale/garbled frame after navigating back from an agent on WSL in Windows Terminal
  • Fixed background agents ignoring project-level settings env values (e.g. ANTHROPIC_MODEL) when dispatched onto a pre-warmed worker
  • Fixed MCPB plugin cache being spuriously invalidated on Windows, causing unnecessary re-extraction
  • Fixed plugin .in_use PID lock files accumulating without bound; stale markers from crashed sessions are now swept once per day
  • Fixed untrusted project settings being able to set OTEL client-certificate paths without trust confirmation
  • /workflows now opens immediately even while a turn is in progress
  • Improved TaskCreate reliability: malformed inputs are repaired automatically and validation errors for unloaded tools include the schema
  • Improved the error message shown when your organization has disabled API key authentication, with guidance based on where the active API key comes from
  • Reduced CPU usage while responses stream and during spinner animations
  • Remote-managed settings with an invalid entry now apply their remaining valid policies and surface the validation error, instead of silently dropping the whole payload
  • Background sessions now preserve --ide, --chrome, --bare, --remote-control, and other flags across retire→wake, and respawn state validation was hardened
  • Background sessions are now told that shared-checkout edits are blocked until they enter a worktree, avoiding a wasted rejected edit before EnterWorktree
  • The 'CLAUDE.md is too long' warning threshold now scales with the model's context window
  • Auto-updater on Windows now stops retrying within a session once claude.exe is held by another process
  • Improved color contrast for skill tags in the slash-command menu
  • Promo credit claims for Apple/Google-billed subscribers without a payment method now explain where to add one
  • Added a tip suggesting claude agents when running multiple concurrent sessions

Raw changelog

## 2.1.169

- Added `--safe-mode` flag (and `CLAUDE_CODE_SAFE_MODE`) to start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting
- Added `/cd` command to move a session to a new working directory without breaking the prompt cache mid-session
- Added a `disableBundledSkills` setting and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` environment variable to hide bundled skills, workflows, and built-in slash commands from the model
- Fixed Up/Down arrows jumping to command history past the wrapped rows of a long input line — they now move through each visual row first, and history recall enters at the near edge
- Fixed enterprise managed MCP policies (`allowedMcpServers`/`deniedMcpServers`) not being enforced on reconnect, IDE-typed configs, `--mcp-config` servers during the first session after install, or before remote settings loaded; also fixed slow cold starts for orgs without remote settings
- Fixed a ~30-50ms UI stall at the start of each turn for macOS users logged in with claude.ai credentials
- Fixed `claude -p` being slow or appearing to hang on Windows while waiting for the slash-command/skill scan (regression in 2.1.161)
- Fixed Remote Control getting stuck on "reconnecting" after resuming a session when an OAuth token refresh happened at the same time
- Fixed Git Credential Manager's "Connect to GitHub" popup appearing on Windows at startup when background git commands ran without cached credentials
- Fixed footer hints (e.g. "esc to interrupt") not showing for users with a custom statusline
- Fixed stale permission and dialog prompts reappearing every time you reattached to a remote session whose worker had died while waiting on them
- Fixed `claude agents --json` omitting blocked and just-dispatched background sessions; added `--all` to include completed sessions, plus new `id` and `state` fields
- Fixed agents view leaving a stale/garbled frame after navigating back from an agent on WSL in Windows Terminal
- Fixed background agents ignoring project-level settings `env` values (e.g. `ANTHROPIC_MODEL`) when dispatched onto a pre-warmed worker
- Fixed MCPB plugin cache being spuriously invalidated on Windows, causing unnecessary re-extraction
- Fixed plugin `.in_use` PID lock files accumulating without bound; stale markers from crashed sessions are now swept once per day
- Fixed untrusted project settings being able to set OTEL client-certificate paths without trust confirmation
- `/workflows` now opens immediately even while a turn is in progress
- Improved `TaskCreate` reliability: malformed inputs are repaired automatically and validation errors for unloaded tools include the schema
- Improved the error message shown when your organization has disabled API key authentication, with guidance based on where the active API key comes from
- Reduced CPU usage while responses stream and during spinner animations
- Restored a default 5-minute idle timeout on Vertex/Foundry so a stalled stream aborts instead of hanging indefinitely; set `API_FORCE_IDLE_TIMEOUT=0` to opt out
- Remote-managed settings with an invalid entry now apply their remaining valid policies and surface the validation error, instead of silently dropping the whole payload
- Background sessions now preserve `--ide`, `--chrome`, `--bare`, `--remote-control`, and other flags across retire→wake, and respawn state validation was hardened
- Background sessions are now told that shared-checkout edits are blocked until they enter a worktree, avoiding a wasted rejected edit before `EnterWorktree`
- The "CLAUDE.md is too long" warning threshold now scales with the model's context window
- Auto-updater on Windows now stops retrying within a session once `claude.exe` is held by another process
- Improved color contrast for skill tags in the slash-command menu
- Promo credit claims for Apple/Google-billed subscribers without a payment method now explain where to add one
- Added a tip suggesting `claude agents` when running multiple concurrent sessions