Claude Code changelog

Claude Code 2.1.169

This release introduces a new `--safe-mode` flag and environment variable to start the application with all customizations disabled, significantly aiding troubleshooting efforts. A new `/cd` command allows seamless working directory changes mid-session without affecting the prompt cache. Users also gain more control with a setting to hide bundled skills and slash commands from the model. Key fixes include improved command history navigation, reliable enforcement of enterprise managed policies, and addressing UI stalls on macOS. Performance enhancements for slash-command scanning on Windows and stable Remote Control sessions after token refreshes are also delivered, ensuring a smoother and more reliable experience for all users.

Added

  • 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
  • Added a tip suggesting `claude agents` when running multiple concurrent sessions

Improved

  • 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
  • Improved color contrast for skill tags in the slash-command menu

Changed

  • `/workflows` now opens immediately even while a turn is in progress
  • 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
  • Promo credit claims for Apple/Google-billed subscribers without a payment method now explain where to add one

Fixed

  • 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