/configsettings now persist across restarts and join the override chain. Theme, editor mode, verbose, and other/configtweaks write to~/.claude/settings.jsonand respect project/local/policy precedence. (more below)--printand--agentnow enforce agent frontmatter restrictions. If you run agents via--printin CI,tools:anddisallowedTools:are now honored;--agentalso respectspermissionModefor built-in agents. (more below)PostToolUseandPostToolUseFailurehooks now carryduration_ms. Tool execution time (excluding permission prompts and PreToolUse hooks) is available in hook inputs, so you can build timing-aware hooks without wrapping commands.--from-praccepts GitLab, Bitbucket, and GitHub Enterprise URLs. If you have been copying diffs manually from non-GitHub platforms, that workaround is gone.
New in 2.1.119
2.1.119 (April 24, 2026)
/configsettings (theme, editor mode, verbose, etc.) now persist to~/.claude/settings.jsonand participate in project/local/policy override precedence- Added
prUrlTemplatesetting to point the footer PR badge at a custom code-review URL instead of github.com - Added
CLAUDE_CODE_HIDE_CWDenvironment variable to hide the working directory in the startup logo --from-prnow accepts GitLab merge-request, Bitbucket pull-request, and GitHub Enterprise PR URLs--printmode now honors the agent'stools:anddisallowedTools:frontmatter, matching interactive-mode behavior--agent <name>now honors the agent definition'spermissionModefor built-in agents- PowerShell tool commands can now be auto-approved in permission mode, matching Bash behavior
- Hooks:
PostToolUseandPostToolUseFailurehook inputs now includeduration_ms(tool execution time, excluding permission prompts and PreToolUse hooks) - Subagent and SDK MCP server reconfiguration now connects servers in parallel instead of serially
- Plugins pinned by another plugin's version constraint now auto-update to the highest satisfying git tag
- Vim mode: Esc in INSERT no longer pulls a queued message back into the input; press Esc again to interrupt
- 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
owner/repo#Nshorthand links in output now use your git remote's host instead of always pointing at github.com- Security:
blockedMarketplacesnow correctly enforceshostPatternandpathPatternentries - OpenTelemetry:
tool_resultandtool_decisionevents now includetool_use_id;tool_resultalso includestool_input_size_bytes - Status line: stdin JSON now includes
effort.levelandthinking.enabled - Fixed pasting CRLF content (Windows clipboards, Xcode console) inserting an extra blank line between every line
- Fixed multi-line paste losing newlines in terminals using kitty keyboard protocol sequences inside bracketed paste
- Fixed Glob and Grep tools disappearing on native macOS/Linux builds when the Bash tool is denied via permissions
- Fixed scrolling up in fullscreen mode snapping back to the bottom every time a tool finishes
- Fixed MCP HTTP connections failing with "Invalid OAuth error response" when servers returned non-JSON bodies for OAuth discovery requests
- Fixed Rewind overlay showing "(no prompt)" for messages with image attachments
- Fixed auto mode overriding plan mode with conflicting "Execute immediately" instructions
- Fixed async
PostToolUsehooks that emit no response payload writing empty entries to the session transcript - Fixed spinner staying on when a subagent task notification is orphaned in the queue
- Tool search is now disabled by default on Vertex AI to avoid an unsupported beta header error (opt in with
ENABLE_TOOL_SEARCH) - Fixed
@-file Tab completion replacing the entire prompt when used inside a slash command with an absolute path - Fixed a stray
pcharacter appearing at the prompt on startup in macOS Terminal.app via Docker or SSH - Fixed
${ENV_VAR}placeholders inheadersfor HTTP/SSE/WebSocket MCP servers not being substituted before requests - Fixed MCP OAuth client secret stored via
--client-secretnot being sent during token exchange for servers requiringclient_secret_post - Fixed
/skillsEnter key closing the dialog instead of pre-filling/<skill-name>in the prompt - Fixed
/agentsdetail view mislabeling built-in tools unavailable to subagents as "Unrecognized" - Fixed MCP servers from plugins not spawning on Windows when the plugin cache was incomplete
- Fixed
/exportshowing the current default model instead of the model the conversation actually used - Fixed verbose output setting not persisting after restart
- Fixed
/usageprogress bars overlapping with their "Resets ..." labels - Fixed plugin MCP servers failing when
${user_config.*}references an optional field left blank - Fixed list items containing a sentence-final number wrapping the number onto its own line
- Fixed
/planand/plan opennot acting on the existing plan when entering plan mode - Fixed skills invoked before auto-compaction being re-executed against the next user message
- Fixed
/reload-pluginsand/doctorreporting load errors for disabled plugins - Fixed Agent tool with
isolation: "worktree"reusing stale worktrees from prior sessions - Fixed disabled MCP servers appearing as "failed" in
/status - Fixed
TaskListreturning tasks in arbitrary filesystem order instead of sorted by ID - Fixed spurious "GitHub API rate limit exceeded" hints when
ghoutput contained PR titles mentioning "rate limit" - Fixed SDK/bridge
read_filenot correctly enforcing size cap on growing files - Fixed PR not linked to session when working in a git worktree
- Fixed
/doctorwarning about MCP server entries overridden by a higher-precedence scope - Windows: removed false-positive "Windows requires 'cmd /c' wrapper" MCP config warning
- [VSCode] Fixed voice dictation's first recording producing nothing on macOS while the microphone permission prompt is showing
Notes
/config persistence completes a multi-release configuration overhaul. 2.1.111 added the /effort interactive slider, 2.1.116 made /config search match option values, and 2.1.118 merged /cost and /stats into /usage. This release makes all /config settings durable by writing them to ~/.claude/settings.json. The practical shift: if you have been re-setting editor mode or theme every session, that stops now. But settings now participate in the full override chain, so a project-level .claude/settings.json or a managed-settings policy can override what you set in /config. The "fixed verbose output not persisting after restart" fix in the same release was likely the symptom that drove this change.
Agent frontmatter enforcement closes two remaining gaps in print/interactive convergence. 2.1.116 made agent frontmatter hooks: fire when running via --agent, and 2.1.117 loaded mcpServers from agent frontmatter for --agent sessions. This release adds tools:/disallowedTools: enforcement in --print mode and permissionMode enforcement for built-in agents. Agent .md definitions are becoming the single source of truth for what an agent can do, regardless of invocation mode. If you maintain agent definitions for CI pipelines, their frontmatter now matters everywhere.