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.
New primitives
disableBundledSkills / CLAUDE_CODE_DISABLE_BUNDLED_SKILLSsettingA 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.
--safe-mode / CLAUDE_CODE_SAFE_MODEflagA 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.
/cdcommandA 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.
claude agents --all (+ id/state fields)flagShips 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.
API_FORCE_IDLE_TIMEOUTenv-varShips 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.
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