Claude Code 2.1.119: Settings Persistence, MCP Fixes, Windows Improvements

Invalid OAuth error response

Claude Code 2.1.119: Settings Persistence, MCP Fixes, Windows Improvements

TL;DR

  • Settings now persist to ~/.claude/settings.json with proper override precedence
  • Major MCP fixes: OAuth handling, plugin spawning on Windows, environment variable substitution
  • Vim mode, paste handling, and terminal rendering bugs squashed

New

  • Settings persistence/config settings (theme, editor mode, verbose) now save to ~/.claude/settings.json and respect project/local/policy override precedence
  • prUrlTemplate setting — Point the footer PR badge at custom code-review URLs instead of always github.com
  • CLAUDE_CODE_HIDE_CWD env var — Hide working directory in the startup logo
  • --from-pr expansion — Now accepts GitLab merge-request, Bitbucket pull-request, and GitHub Enterprise PR URLs
  • --print mode alignment — Now honors agent tools: and disallowedTools: frontmatter, matching interactive mode
  • --agent permission mode — Built-in agents now respect their definition's permissionMode
  • PowerShell auto-approval — Tool commands can now be auto-approved in permission mode, matching Bash behavior
  • Hook timing dataPostToolUse and PostToolUseFailure inputs now include duration_ms (tool execution time)
  • Parallel MCP reconfiguration — Subagent and SDK MCP servers now connect in parallel instead of serially
  • Plugin auto-update — Plugins pinned by another plugin's version constraint now auto-update to the highest satisfying git tag
  • Vim mode Esc behavior — Esc in INSERT no longer pulls queued messages back into input; press Esc again to interrupt
  • Slash command UX — Suggestions now highlight matched characters; long descriptions wrap to a second line instead of truncating
  • Git remote host detectionowner/repo#N shorthand links now use your git remote's host instead of always pointing at github.com
  • OpenTelemetry enhancementstool_result and tool_decision events now include tool_use_id; tool_result also includes tool_input_size_bytes
  • Status line JSON — stdin JSON now includes effort.level and thinking.enabled

Fixed

  • CRLF paste handling — Windows clipboards and Xcode console pastes no longer insert extra blank lines
  • Multi-line paste newlines — Fixed newline loss in terminals using kitty keyboard protocol inside bracketed paste
  • Glob/Grep tool visibility — Tools no longer disappear on native macOS/Linux builds when Bash tool is denied
  • Fullscreen scrolling — Scrolling up no longer snaps back to bottom when a tool finishes
  • MCP HTTP OAuth — Non-JSON OAuth discovery responses no longer fail withSource: Claude Code