Claude Code 2.1.163 adds enterprise version enforcement via requiredMinimumVersion/requiredMaximumVersion managed settings, plus Stop/SubagentStop hooks can now return additionalContext to give Claude feedback without triggering a hook error
The MCP per-server timeout behavior changed: values below 1000 are now ignored and fall through to MCP_TOOL_TIMEOUT (previously they were floored to 1 second)
WebFetch tool now has a built-in set of preapproved documentation domains that fetch without permission prompts, with explicit deny/ask/allow rules able to override them
Compliance Access Keys for the Compliance API are now managed from "Organization settings > API" (not "Data and privacy")
Citations API now supports URL as an input method for PDF documents (alongside base64 and file_id)
Added requiredMinimumVersion and requiredMaximumVersion managed settings — Claude Code refuses to start if its version is outside the allowed range
Added /plugin list command to list installed plugins, with --enabled/--disabled filters
Added "c to copy" shortcut in /btw that copies the raw markdown answer to the clipboard
Stop and SubagentStop hooks can now return hookSpecificOutput.additionalContext to give Claude feedback and keep the turn going without being labeled a hook error
Skills: added \$ escape syntax to include a literal $ before a digit in command bodies
stdio MCP servers now receive the same CLAUDE_CODE_SESSION_ID as hooks/Bash on --resume
Existing feature improvements
Background agent sessions now update to a new Claude Code version in the background, so opening a session after an update no longer waits on a cold restart
Clearer descriptions for built-in commands and skills in the / menu
Subscription-switch suggestion now shows in the startup announcement slot instead of a toast
claude agents dispatching from the state-grouped view now starts the session in the directory the agent view was opened from
Major bug fixes
Fixed claude -p hanging forever after its final result when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes
Fixed claude -p failing with "ANTHROPIC_API_KEY required" on Bedrock/Vertex/Foundry when CI=true and no Anthropic API key is set
Fixed bash commands failing under bazel and EDR-protected Go workflows: $TMPDIR was overridden to /tmp/claude-{uid} for all commands instead of only sandboxed ones (regression in 2.1.154)
Fixed Bash commands failing on Windows with "EEXIST: file already exists" on the session-env directory inside OneDrive or with read-only attribute
Fixed org-managed permission rules not applying for the entire session when managed settings fetch completed during startup on a fresh config directory
Fixed background sessions in claude agents losing their running background tasks when reattached after a Claude Code update
Fixed terminal misalignment and a multi-second hang when exiting the agent view by pressing Esc
Fixed hook if: "Bash(...)" conditions firing on every Bash command containing $() or $VAR
Fixed deny rules on home-directory paths (e.g. Read(~/Desktop/**)) not blocking Bash commands that reference the path via $HOME
Added documentation for ResultMessage.subtype field, explaining the different subtypes (success, error_during_execution, error_max_turns, error_max_budget_usd, error_max_structured_output_retries) and which fields are populated for each, including is_error, api_error_status, result, and errors. [line 1494] [Source]
Updated claude agents --json description: when status is waiting, the new waitingFor field explains what the session is blocked on (e.g., permission prompt or input needed). [line 391] [Source]
Changed how deep link launch notification is shown: now a Prompt from an external link warning line below the input box that stays visible until the prompt is sent or cleared (was a banner above the input). [line 32] [Source]
Simplified repo path display in deep links: the welcome header shows which path was selected (removed previous note about last fetch time from remote). [line 76] [Source]
Clarified MCP_TOOL_TIMEOUT behavior: the per-server timeout field in .mcp.json now ignores values below 1000 (previously floored to one second); the env variable still floors to one second. [line 302] [Source]
Rewrote the claude mcp add option-ordering note: clarified that -- separates Claude's own options from the server command, and added a warning that --env must not be immediately followed by the server name (place another option between them). [line 98] [Source]
Updated per-server timeout behavior: values below 1000 are now ignored and fall through to MCP_TOOL_TIMEOUT (or its ~28-hour default). Before v2.1.162, they were floored to one second. [line 169] [Source]
Added note that some Anthropic-hosted connectors (Microsoft 365, Gmail, Google Calendar) require connecting via claude.ai Settings → Connectors because the upstream identity provider only accepts the claude.ai redirect URL. [line 736] [Source]
Added tool_use_id and gen_ai.tool.call.id attributes to tool spans and tool result spans, enabling correlation of spans with tool result/decision events and hook payloads. [lines 194-195] [Source]
Added skill.kind attribute (value "workflow" for workflow skills, absent otherwise) to skill invocation events. [line 762] [Source]
Updated LSP tool capability description: "List symbols in a file" and "Search for a symbol by name across the workspace" are now listed separately (was "List symbols in a file or workspace"). [line 157] [Source]
WebFetch now has a built-in set of preapproved documentation domains that fetch without a permission prompt. Explicit WebFetch(domain:...) rules in deny, ask, or allow override the preapproved set. [lines 250-251] [Source]
Added a note that in PowerShell, curl.exe -sI must be used instead of curl -sI (PowerShell aliases curl to Invoke-WebRequest which rejects those flags). [line 50] [Source]
Updated VS Code extension data removal instructions with platform-specific paths and commands for macOS, Linux, and Windows PowerShell (replaces the previous single cross-platform path). [lines 458-476] [Source]
Added guidance on when Claude chooses to run code vs. answer directly: code runs for non-trivial math, data analysis, algorithm execution, and explicit run requests; direct answers for simple arithmetic, conversational, or creative requests. [lines 84-99] [Source]
Compliance Access Keys are now created and managed from claude.ai > Organization settings > API (was Data and privacy). All instructions and links throughout the page updated to reflect the new location. [lines 15-27] [Source]
Added new "Steer with instructions" section explaining how the optional instructions field works: it steers synthesis focus, merge/drop decisions, and output structure, but is not a text editor for specific lines. [lines 72-76] [Source]