Claude Code changelog

Claude Code 2.1.111

This release introduces powerful new capabilities, including the xhigh effort level for Opus 4.7 and Auto mode for Max subscribers, alongside /ultrareview for advanced, multi-agent code analysis of branches and GitHub PRs. Quality-of-life improvements range from an interactive /effort slider and better permission prompt handling for read-only commands, like glob patterns and `cd &&` prefixes, to a new "Auto (match terminal)" theme and intelligent subcommand typo suggestions. Important fixes address terminal display tearing in iTerm2+tmux, LSP diagnostic timing, improved file suggestions, and robust plugin error handling, ensuring a more stable and efficient development experience for all users.

Added

  • Added `xhigh` effort level for Opus 4.7, sitting between `high` and `max`. Available via `/effort`, `--effort`, and the model picker; other models fall back to `high`
  • Added "Auto (match terminal)" theme option that matches your terminal's dark/light mode — select it from `/theme`
  • Added `/less-permission-prompts` skill — scans transcripts for common read-only Bash and MCP tool calls and proposes a prioritized allowlist for `.claude/settings.json`
  • Added `/ultrareview` for running comprehensive code review in the cloud using parallel multi-agent analysis and critique — invoke with no arguments to review your current branch, or `/ultrareview <PR#>` to fetch and review a specific GitHub PR
  • Added `OTEL_LOG_RAW_API_BODIES` environment variable to emit full API request and response bodies as OpenTelemetry log events for debugging

Improved

  • Improved `/setup-vertex` and `/setup-bedrock` to show the actual `settings.json` path when `CLAUDE_CONFIG_DIR` is set, seed model candidates from existing pins on re-run, and offer a "with 1M context" option for supported models
  • Improved plugin error handling: dependency errors now distinguish conflicting, invalid, and overly complex version requirements; fixed stale resolved versions after `plugin update`; `plugin install` now recovers from interrupted prior installs

Changed

  • Claude Opus 4.7 xhigh is now available! Use /effort to tune speed vs. intelligence
  • Auto mode is now available for Max subscribers when using Opus 4.7
  • `/effort` now opens an interactive slider when called without arguments, with arrow-key navigation between levels and Enter to confirm
  • Auto mode no longer requires `--enable-auto-mode`
  • Windows: PowerShell tool is progressively rolling out. Opt in or out with `CLAUDE_CODE_USE_POWERSHELL_TOOL`. On Linux and macOS, enable with `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` (requires `pwsh` on PATH)
  • Read-only bash commands with glob patterns (e.g. `ls *.ts`) and commands starting with `cd <project-dir> &&` no longer trigger a permission prompt
  • Suggest the closest matching subcommand when `claude <word>` is invoked with a near-miss typo (e.g. `claude udpate` → "Did you mean `claude update`?")
  • `/skills` menu now supports sorting by estimated token count — press `t` to toggle
  • `Ctrl+U` now clears the entire input buffer (previously: delete to start of line); press `Ctrl+Y` to restore
  • `Ctrl+L` now forces a full screen redraw in addition to clearing the prompt input
  • Transcript view footer now shows `[` (dump to scrollback) and `v` (open in editor) shortcuts
  • The "+N lines" marker for truncated long pastes is now a full-width rule for easier scanning
  • Headless `--output-format stream-json` now includes `plugin_errors` on the init event when plugins are demoted for unsatisfied dependencies
  • Suppressed spurious decompression, network, and transient error messages that could appear in the TUI during normal operation
  • Reverted the v2.1.110 cap on non-streaming fallback retries — it traded long waits for more outright failures during API overload
  • Windows: `CLAUDE_ENV_FILE` and SessionStart hook environment files now apply (previously a no-op)
  • Windows: permission rules with drive-letter paths are now correctly root-anchored, and paths differing only by drive-letter case are recognized as the same path

Fixed

  • Plan files are now named after your prompt (e.g. `fix-auth-race-snug-otter.md`) instead of purely random words
  • Fixed terminal display tearing (random characters, drifting input) in iTerm2 + tmux setups when terminal notifications are sent
  • Fixed `@` file suggestions re-scanning the entire project on every turn in non-git working directories, and showing only config files in freshly-initialized git repos with no tracked files
  • Fixed LSP diagnostics from before an edit appearing after it, causing the model to re-read files it just edited
  • Fixed tab-completing `/resume` immediately resuming an arbitrary titled session instead of showing the session picker
  • Fixed `/context` grid rendering with extra blank lines between rows
  • Fixed `/clear` dropping the session name set by `/rename`, causing statusline output to lose `session_name`
  • Fixed Claude calling a non-existent `commit` skill and showing "Unknown skill: commit" for users without a custom `/commit` command
  • Fixed 429 rate-limit errors on Bedrock/Vertex/Foundry referencing status.claude.com (it only covers Anthropic-operated providers)
  • Fixed feedback surveys appearing back-to-back after dismissing one
  • Fixed bare URLs in bash/PowerShell/MCP tool output being unclickable when the terminal wraps them across lines