v2.1.119
Claude CodeSummary
This release introduces significant configuration persistence, allowing settings like theme and editor mode to be saved locally and respected across overrides. Key updates include expanded support for various Git provider URLs in the `--from-pr` flag and improved handling of tool execution context in print mode and hooks. Numerous bugs were fixed, addressing issues with multi-line pasting, configuration overrides, and various command behaviors across different operating systems.
New Features
- Added support for pointing the footer PR badge at a custom code-review URL via the new `prUrlTemplate` setting.
- Enabled hiding the working directory in the startup logo using the `CLAUDE_CODE_HIDE_CWD` environment variable.
- Expanded support for the `--from-pr` flag to accept GitLab merge-request, Bitbucket pull-request, and GitHub Enterprise PR URLs.
- Enabled `--print` mode to honor the agent's `tools:` and `disallowedTools:` frontmatter, aligning behavior with interactive mode.
- Enabled `--agent <name>` to honor the agent definition's `permissionMode` for built-in agents.
- Enabled auto-approval for PowerShell tool commands when operating in permission mode, matching Bash behavior.
- Introduced `duration_ms` (tool execution time) to `PostToolUse` and `PostToolUseFailure` hook inputs.
- Enabled plugins pinned by another plugin's version constraint to auto-update to the highest satisfying git tag.
- Updated slash command suggestions to highlight the characters that matched the user's query.
- Updated slash command picker to wrap long descriptions onto a second line instead of truncating them.
- Updated `owner/repo#N` shorthand links in output to use the git remote's host instead of defaulting to github.com.
- Updated OpenTelemetry events: `tool_result` and `tool_decision` now include `tool_use_id`; `tool_result` also includes `tool_input_size_bytes`.
Bug Fixes
- Fixed pasting CRLF content (from Windows clipboards or Xcode console) from inserting an extra blank line between every line.
- Fixed multi-line paste losing newlines when using terminals that employ kitty keyboard protocol sequences inside bracketed paste.
- Fixed Glob and Grep tools disappearing on native macOS/Linux builds when the Bash tool was denied via permissions.
- Fixed scrolling up in fullscreen mode snapping back to the bottom every time a tool finished execution.
- Fixed MCP HTTP connections failing with "Invalid OAuth error response" when servers returned non-JSON bodies during OAuth discovery requests.
- Fixed the Rewind overlay incorrectly showing "(no prompt)" for messages that contained image attachments.
- Fixed auto mode overriding plan mode when conflicting "Execute immediately" instructions were present.
- Fixed async `PostToolUse` hooks that emit no response payload from writing empty entries to the session transcript.
- Fixed the spinner remaining active when a subagent task notification became orphaned in the queue.
- Fixed `@`-file Tab completion from replacing the entire prompt when used inside a slash command with an absolute path.
- Fixed a stray `p` character appearing at the prompt on startup when running in macOS Terminal.app via Docker or SSH.
- Fixed `${ENV_VAR}` placeholders in `headers` for HTTP/SSE/WebSocket MCP servers from not being substituted before requests.
- Fixed MCP OAuth client secret provided via `--client-secret` not being sent during token exchange for servers requiring `client_secret_post`.
- Fixed the Enter key in the `/skills` dialog from closing the dialog instead of pre-filling `/<skill-name>` into the prompt.
- Fixed the `/agents` detail view from mislabeling built-in tools unavailable to subagents as "Unrecognized".
- Fixed MCP servers originating from plugins from failing to spawn on Windows when the plugin cache was incomplete.
- Fixed `/export` from showing the current default model instead of the model the conversation actually used.
- Fixed the verbose output setting from not persisting correctly after a restart.
- Fixed `/usage` progress bars from overlapping with their corresponding "Resets …" labels.
- Fixed plugin MCP servers from failing when `${user_config.*}` references an optional field that was left blank.
- Fixed list items containing a sentence-final number from wrapping that number onto its own line.
- Fixed `/plan` and `/plan open` from not acting on the existing plan when entering plan mode.
- Fixed skills invoked before auto-compaction from being re-executed against the next user message.
- Fixed `/reload-plugins` and `/doctor` from reporting load errors for plugins that were disabled.
- Fixed Agent tool instances using `isolation: "worktree"` from reusing stale worktrees from prior sessions.
- Fixed disabled MCP servers from incorrectly appearing as "failed" in the `/status` command output.
- Fixed `TaskList` from returning tasks in arbitrary filesystem order instead of sorting them by ID.
- Fixed spurious "GitHub API rate limit exceeded" hints appearing when `gh` output contained PR titles that mentioned "rate limit".
- Fixed SDK/bridge `read_file` functionality from not correctly enforcing the size cap on growing files.
- Fixed the PR not being linked to the session when working within a git worktree.
- Fixed `/doctor` from incorrectly warning about MCP server entries that were overridden by a higher-precedence scope.
- Removed a false-positive warning on Windows regarding the need for a `'cmd /c' wrapper` for MCP configuration.
- Fixed voice dictation's first recording producing no output on macOS while the microphone permission prompt was visible in VSCode.
Improvements
- Configuration settings like theme, editor mode, and verbosity now persist to `~/.claude/settings.json` and respect project/local/policy override precedence.
- Subagent and SDK MCP server reconfiguration now connects servers in parallel instead of serially, improving startup time.
- Slash command suggestions now highlight the characters that matched your query.
- Slash command picker now wraps long descriptions onto a second line instead of truncating them.
- Security enforcement for `blockedMarketplaces` now correctly respects `hostPattern` and `pathPattern` entries.
- Tool search is now disabled by default on Vertex AI to prevent errors related to an unsupported beta header; users can opt-in via `ENABLE_TOOL_SEARCH`.
- Status line stdin JSON now includes `effort.level` and `thinking.enabled` for richer status reporting.