●
v2.1.123 Apr 29, 2026
v2.1.123
What's changed
- Fixed OAuth authentication failing with a 401 retry loop when
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1is set
Every Claude Code release. Bolted straight to the record.
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 is setANTHROPIC_BEDROCK_SERVICE_TIER environment variable to select a Bedrock service tier (default, flex, or priority), sent as the X-Amzn-Bedrock-Service-Tier header/resume search box now finds the session that created that PR (GitHub, GitHub Enterprise, GitLab, and Bitbucket)/mcp now shows claude.ai connectors hidden by a manually-added server with the same URL, with a hint to remove the duplicate/mcp message shown when an MCP server is still unauthorized after the browser sign-in flowapi_request/api_error log events are now emitted as numbers, not stringsclaude_code.at_mention log event for @-mention resolution/branch producing forks that fail with "tool_use ids were found without tool_result blocks" when the source session contained entries from rewound timelines/model not showing the Effort option for Bedrock application inference profile ARNs, and those ARNs not receiving output_config.effortinvalid_request_error: output_config: Extra inputs are not permitted on session-title generation and other structured-output queriescount_tokens endpoint returning 400 errors for users behind proxy gatewaysspinnerTipsOverride.excludeDefault not suppressing the time-based spinner tips!exit / !quit in bash mode terminating the CLI instead of running as a shell commandtmux -CC control pipes and pause the terminalsettings.json no longer invalidating the entire filealwaysLoad option to MCP server config — when true, all tools from that server skip tool-search deferral and are always availableclaude plugin prune to remove orphaned auto-installed plugin dependencies; plugin uninstall --prune cascades/skills so you can find a skill in long lists without scrollinghookSpecificOutput.updatedToolOutput (previously MCP-only)claude -p: CLAUDE_CODE_FORK_SUBAGENT=1 now works in non-interactive sessions--dangerously-skip-permissions no longer prompts for writes to .claude/skills/, .claude/agents/, and .claude/commands//terminal-setup now enables iTerm2's "Applications in terminal may access clipboard" setting so /copy works, including from tmuxlanguage settingmcp_authenticate now supports redirectUri for custom scheme completion and claude.ai connectorsstop_reason, gen_ai.response.finish_reasons, and user_system_prompt (gated behind OTEL_LOG_USER_PROMPTS) to LLM request spansaccessibility.voice.speechLanguage setting when no Claude Code language is configured/context now opens a native token usage dialog/usage leaking up to ~2GB of memory on machines with large transcript histories--resume crashing on startup in external builds--resume failing on large sessions when a transcript line was corrupted by an unclean shutdown — the corrupt line is now skippedthinking.type.enabled is not supported error when using Bedrock application inference profile ARNsprompt parameterNO_PROXY not being respected for all HTTP clients when set via managed-settings.json under the native build/usage returning "rate limited" after a stale OAuth token — now refreshes automaticallysettings.json invalidating the entire settings file/usage dialog content being clipped when no-flicker mode is off/focus showing "Unknown command" when the fullscreen renderer is off — now explains how to enable itfind in the Bash tool on large directory trees/config settings (theme, editor mode, verbose, etc.) now persist to ~/.claude/settings.json and participate in project/local/policy override precedenceprUrlTemplate setting to point the footer PR badge at a custom code-review URL instead of github.comCLAUDE_CODE_HIDE_CWD environment variable to hide the working directory in the startup logo--from-pr now accepts GitLab merge-request, Bitbucket pull-request, and GitHub Enterprise PR URLs--print mode now honors the agent's tools: and disallowedTools: frontmatter, matching interactive-mode behavior--agent <name> now honors the agent definition's permissionMode for built-in agentsPostToolUse and PostToolUseFailure hook inputs now include duration_ms (tool execution time, excluding permission prompts and PreToolUse hooks)owner/repo#N shorthand links in output now use your git remote's host instead of always pointing at github.comblockedMarketplaces now correctly enforces hostPattern and pathPattern entriestool_result and tool_decision events now include tool_use_id; tool_result also includes tool_input_size_byteseffort.level and thinking.enabledPostToolUse hooks that emit no response payload writing empty entries to the session transcriptENABLE_TOOL_SEARCH)@-file Tab completion replacing the entire prompt when used inside a slash command with an absolute pathp character appearing at the prompt on startup in macOS Terminal.app via Docker or SSH${ENV_VAR} placeholders in headers for HTTP/SSE/WebSocket MCP servers not being substituted before requests--client-secret not being sent during token exchange for servers requiring client_secret_post/skills Enter key closing the dialog instead of pre-filling /<skill-name> in the prompt/agents detail view mislabeling built-in tools unavailable to subagents as "Unrecognized"/export showing the current default model instead of the model the conversation actually used/usage progress bars overlapping with their "Resets …" labels${user_config.*} references an optional field left blank/plan and /plan open not acting on the existing plan when entering plan mode/reload-plugins and /doctor reporting load errors for disabled pluginsisolation: "worktree" reusing stale worktrees from prior sessions/statusTaskList returning tasks in arbitrary filesystem order instead of sorted by IDgh output contained PR titles mentioning "rate limit"read_file not correctly enforcing size cap on growing files/doctor warning about MCP server entries overridden by a higher-precedence scopev) and visual-line mode (V) with selection, operators, and visual feedback/cost and /stats into /usage — both remain as typing shortcuts that open the relevant tab/theme, or hand-edit JSON files in ~/.claude/themes/; plugins can also ship themes via a themes/ directorytype: "mcp_tool"DISABLE_UPDATES env var to completely block all update paths including manual claude update — stricter than DISABLE_AUTOUPDATERwslInheritsWindowsSettings policy key"$defaults" in autoMode.allow, autoMode.soft_deny, or autoMode.environment to add custom rules alongside the built-in list instead of replacing itclaude plugin tag to create release git tags for plugins with version validation--continue/--resume now find sessions that added the current directory via /add-dir/color now syncs the session accent color to claude.ai/code when Remote Control is connected/model picker now honors ANTHROPIC_DEFAULT_*_MODEL_NAME/_DESCRIPTION overrides when using a custom ANTHROPIC_BASE_URL gateway/doctor and the /plugin Errors tab/mcp menu hiding OAuth Authenticate/Re-authenticate actions for servers configured with headersHelper, and HTTP/SSE MCP servers with custom headers being stuck in "needs authentication" after a transient 401expires_in requiring re-authentication every hourinsufficient_scope 403 names a scope the current token already has~/.claude/.credentials.json/login having no effect in a session launched with CLAUDE_CODE_OAUTH_TOKEN — the env token is now cleared so disk credentials take effect/plugin badges--dangerously-skip-permissionsStop or SubagentStopprompt hooks re-firing on tool calls made by an agent-hook verifier subagent/fork writing the full parent conversation to disk per fork — now writes a pointer and hydrates on readmodel setting in ~/.claude/settings.json/plugin install on an already-installed plugin not re-resolving a dependency installed at the wrong versionSendMessage not restoring the explicit cwd they were spawned withCLAUDE_CODE_FORK_SUBAGENT=1mcpServers are now loaded for main-thread agent sessions via --agent/model: selections now persist across restarts even when the project pins a different model, and the startup header shows when the active model comes from a project or managed-settings pin/resume command now offers to summarize stale, large sessions before re-reading them, matching the existing --resume behaviorplugin install on an already-installed plugin now installs any missing dependencies instead of stopping at "already installed"claude plugin marketplace add now auto-resolves missing dependencies from configured marketplacesblockedMarketplaces and strictKnownMarketplaces are now enforced on plugin install, update, refresh, and autoupdate/compactcleanupPeriodDays retention sweep now also covers ~/.claude/tasks/, ~/.claude/shell-snapshots/, and ~/.claude/backups/user_prompt events now include command_name and command_source for slash commands; cost.usage, token.usage, api_request, and api_error now include an effort attribute when the model supports effort levels. Custom/MCP command names are redacted unless OTEL_LOG_TOOL_DETAILS=1 is setGlob and Grep tools are replaced by embedded bfs and ugrep available through the Bash tool — faster searches without a separate tool round-trip (Windows and npm-installed builds unchanged)where.exe executable lookups per process for faster subprocess launcheshigh (was medium)WebFetch hanging on very large HTML pages by truncating input before HTML-to-markdown conversionTypeError/login having no effect when launched with CLAUDE_CODE_OAUTH_TOKEN env var and that token expiresCtrl+_) doing nothing immediately after typing, and skipping a state on each undo stepNO_PROXY not being respected for remote API requests when running under Bunreload_plugins reconnecting all user MCP servers seriallyelicitation/create requests auto-cancelling in print/SDK mode when the server finishes connecting mid-turn/context percentages and autocompacting too early — Claude Code was computing against a 200K context window instead of Opus 4.7's native 1M/resume on large sessions is significantly faster (up to 67% on 40MB+ sessions) and handles sessions with many dead-fork entries more efficientlyresources/templates/list is now deferred to first @-mention/terminal-setup now configures the editor's scroll sensitivity/config search now matches option values (e.g. searching "vim" finds the Editor mode setting)/doctor can now be opened while Claude is responding, without waiting for the current turn to finish/reload-plugins and background plugin auto-update now auto-install missing plugin dependencies from marketplaces you've already addedgh commands hit GitHub's API rate limit, so agents can back off instead of retryinghooks: now fire when running as a main-thread agent via --agentrm/rmdir targeting /, $HOME, or other critical system directoriesnpx, bun run)/branch rejecting conversations with transcripts larger than 50MB/resume silently showing an empty conversation on large session files instead of reporting the load error/plugin Installed tab showing the same item twice when it appears under Needs attention or Favorites/update and /tui not working after entering a worktree mid-sessionsandbox.network.deniedDomains setting to block specific domains even when a broader allowedDomains wildcard would otherwise permit themCtrl+A and Ctrl+E now move to the start/end of the current logical line in multiline input, matching readline behaviorCtrl+Backspace now deletes the previous word/loop: pressing Esc now cancels pending wakeups, and wakeups display as "Claude resuming /loop wakeup" for clarity/extra-usage now works from Remote Control (mobile/web) clients@-file autocomplete suggestions/ultrareview: faster launch with parallelized checks, diffstat in the launch dialog, and animated launching statecd <current-directory> && git … no longer triggers a permission prompt when the cd is a no-op/private/{etc,var,tmp,home} paths are now treated as dangerous removal targets under Bash(rm:*) allow rulesenv/sudo/watch/ionice/setsid and similar exec wrappersBash(find:*) allow rules no longer auto-approve find -exec/-deleteCtrl+U to once again delete from the cursor to the start of the line/copy "Full response" not aligning markdown table columns for pasting into GitHub, Notion, or SlackdangerouslyDisableSandbox running commands outside the sandbox without a permission prompt/effort auto confirmation — now says "Effort level set to max" to match the status bar label/insights crashing with EBUSY on WindowsCLAUDE_CODE_EXTRA_BODY output_config.effort causing 400 errors on subagent calls to models that don't support effort and on Vertex AINO_COLOR is setToolSearch ranking so pasted MCP tool names surface the actual tool instead of description-matching siblingsplugin install succeeding when a dependency version conflicts with an already-installed plugin — now reports range-conflictthinking.type.enabled is not supported 400 error when using Opus 4.7 via a Bedrock Application Inference Profile ARNxhigh 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/effort now opens an interactive slider when called without arguments, with arrow-key navigation between levels and Enter to confirm/theme/less-permission-prompts skill — scans transcripts for common read-only Bash and MCP tool calls and proposes a prioritized allowlist for .claude/settings.json/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--enable-auto-modeCLAUDE_CODE_USE_POWERSHELL_TOOL. On Linux and macOS, enable with CLAUDE_CODE_USE_POWERSHELL_TOOL=1 (requires pwsh on PATH)ls *.ts) and commands starting with cd <project-dir> && no longer trigger a permission promptclaude <word> is invoked with a near-miss typo (e.g. claude udpate → "Did you mean claude update?")fix-auth-race-snug-otter.md) instead of purely random words/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/skills menu now supports sorting by estimated token count — press t to toggleCtrl+U now clears the entire input buffer (previously: delete to start of line); press Ctrl+Y to restoreCtrl+L now forces a full screen redraw in addition to clearing the prompt input[ (dump to scrollback) and v (open in editor) shortcuts--output-format stream-json now includes plugin_errors on the init event when plugins are demoted for unsatisfied dependenciesOTEL_LOG_RAW_API_BODIES environment variable to emit full API request and response bodies as OpenTelemetry log events for debugging@ 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/resume immediately resuming an arbitrary titled session instead of showing the session picker/context grid rendering with extra blank lines between rows/clear dropping the session name set by /rename, causing statusline output to lose session_nameplugin update; plugin install now recovers from interrupted prior installscommit skill and showing "Unknown skill: commit" for users without a custom /commit commandCLAUDE_ENV_FILE and SessionStart hook environment files now apply (previously a no-op)/tui command and tui setting — run /tui fullscreen to switch to flicker-free rendering in the same conversationCtrl+O to toggle between normal and verbose transcript only; focus view is now toggled separately with the new /focus commandautoScrollEnabled config to disable conversation auto-scroll in fullscreen modeCtrl+G external editor (enable via /config)/plugin Installed tab — items needing attention and favorites appear at the top, disabled items are hidden behind a fold, and f favorites the selected item/doctor to warn when an MCP server is defined in multiple config scopes with different endpoints--resume/--continue now resurrects unexpired scheduled tasks/autocompact, /context, /exit, and /reload-plugins now work from Remote Control (mobile/web) clientsTRACEPARENT/TRACESTATE from the environment for distributed trace linkingDISABLE_TELEMETRY). Opt out via /config or CLAUDE_CODE_ENABLE_AWAY_SUMMARY=0.plugin.json when the marketplace entry omits them; /plugin install now lists auto-installed dependenciesdisable-model-invocation: true failing when invoked via /<skill> mid-message--resume sometimes showing the first prompt instead of the /rename name for sessions still running or exited uncleanly/tui, provider setup wizards)PermissionRequest hooks returning updatedInput not being re-checked against permissions.deny rules; setMode:'bypassPermissions' updates now respect disableBypassPermissionsModePreToolUse hook additionalContext being dropped when the tool call failsCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC or CLAUDE_CODE_DISABLE_TERMINAL_TITLE is set/skills menu not scrolling when the list overflows the modal in fullscreen modeENABLE_PROMPT_CACHING_1H env var to opt into 1-hour prompt cache TTL on API key, Bedrock, Vertex, and Foundry (ENABLE_PROMPT_CACHING_1H_BEDROCK is deprecated but still honored), and FORCE_PROMPT_CACHING_5M to force 5-minute TTLCLAUDE_CODE_ENABLE_AWAY_SUMMARY if telemetry disabled./init, /review, and /security-review via the Skill tool/undo is now an alias for /rewind/model to warn before switching models mid-conversation, since the next response re-reads the full history uncached/resume picker to default to sessions from the current directory; press Ctrl+A to show all projectsCtrl+O)DISABLE_PROMPT_CACHING* environment variables/login code prompt (regression in 2.1.105)DISABLE_TELEMETRY falling back to 5-minute prompt cache TTL instead of 1 hourCLAUDE_ENV_FILE (e.g. ~/.zprofile) ends with a # comment lineclaude --resume <session-id> losing the session's custom name and color set via /rename--teleport/feedback retry: pressing Enter to resubmit after a failure now works without first editing the description--teleport and --resume <id> precondition errors (e.g. dirty git tree, session not found) exiting silently instead of showing the error message--resume truncating sessions when the transcript contained a self-referencing messagelanguage setting is configuredpath parameter to the EnterWorktree tool to switch into an existing worktree of the current repository{"decision":"block"}monitors manifest key that auto-arms at session start or on skill invoke/proactive is now an alias for /loop/doctor layout with status icons; press f to have Claude fix reported issues/config labels and descriptions for clarityWebFetch to strip <style> and <script> contents from fetched pages so CSS-heavy pages no longer exhaust the content budget before reaching actual textjq for JSON, computed Read chunk sizes for text)rich/loguru logging)package.json and lockfile not having dependencies installed automatically after install/update/resume, --worktree, or /branch/model picker on AWS Bedrock in non-US regions persisting invalid us.* model IDs to settings.json when inference profile discovery is still in-flight/help dropping the tab bar, Shortcuts heading, and footer at short terminal heightskeybindings.json being silently loaded instead of rejected with a clear errorCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC in one project's settings permanently disabling usage metrics for all projects on the machineacceptEdits permission mode when exiting plan mode would downgrade from a higher permission level/team-onboarding command to generate a teammate ramp-up guide from your local Claude Code usageCLAUDE_CODE_CERT_STORE=bundled to use only bundled CAs)/ultraplan and other remote-session features now auto-create a default cloud environment instead of requiring web setup firstclaude -p --resume <name> to accept session titles set via /rename or --namesettings.json no longer causes the entire file to be ignoredallowManagedHooksOnly is set/plugin and claude plugin update to show a warning when the marketplace could not be refreshed, instead of silently reporting a stale versionOTEL_LOG_USER_PROMPTS, OTEL_LOG_TOOL_DETAILS, and OTEL_LOG_TOOL_CONTENT; sensitive span attributes are no longer emitted unless opted inquery() to clean up subprocess and temp files when consumers break from for await or use await usingwhich fallback used by LSP binary detection--resume/--continue losing conversation context on large sessions when the loader anchored on a dead-end branch instead of the live conversation--resume chain recovery bridging into an unrelated subagent conversation when a subagent message landed near a main-chain write gap--resume when a persisted Edit/Write tool result was missing its file_pathAPI_TIMEOUT_MSpermissions.deny rules not overriding a PreToolUse hook's permissionDecision: "ask" — previously the hook could downgrade a deny into a prompt--setting-sources without user causing background cleanup to ignore cleanupPeriodDays and delete conversation history older than 30 daysANTHROPIC_AUTH_TOKEN, apiKeyHelper, or ANTHROPIC_CUSTOM_HEADERS set an Authorization headerclaude -w <name> failing with "already exists" after a previous session's worktree cleanup left a stale directorymktemp: No such file or directory after a fresh bootclaude mcp serve tool calls failing with "Tool execution failed" in MCP clients that validate outputSchemaRemoteTrigger tool's run action sending an empty body and being rejected by the server/resume picker issues: narrow default view hiding sessions from other projects, unreachable preview on Windows Terminal, incorrect cwd in worktrees, session-not-found errors not surfacing in stderr, terminal title not being set, and resume hint overlapping the prompt inputrg and self-heals mid-session/btw writing a copy of the entire conversation to disk on every use/context Free space and Messages breakdown disagreeing with the header percentagename: frontmatter, /plugin update failing with ENAMETOOLONG, Discover showing already-installed plugins, directory-source plugins loading from a stale version cache, and skills not honoring context: fork and agent frontmatter fields/mcp menu offering OAuth-specific actions for MCP servers configured with headersHelper; Reconnect is now offered instead to re-invoke the helper scriptctrl+], ctrl+\, and ctrl+^ keybindings not firing in terminals that send raw C0 control bytes (Terminal.app, default iTerm2, xterm)/login OAuth URL rendering with padding that prevented clean mouse selectionsettings.json env values are numbers instead of strings/add-dir --remember, /config) not refreshing the in-memory snapshot, preventing removed directories from being revoked mid-session~/.claude/keybindings.json) not loading on Bedrock, Vertex, and other third-party providersclaude --continue -p not correctly continuing sessions created by -p or the SDK/remote-control failing over SSH when only CLAUDE_CODE_ORGANIZATION_UUID is set/insights sometimes omitting the report file link from its responseCLAUDE_CODE_PERFORCE_MODE env var: when set, Edit/Write/NotebookEdit fail on read-only files with a p4 edit hint instead of silently overwriting themCLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set, and CLAUDE_CODE_SCRIPT_CAPS env var to limit per-session script invocations--exclude-dynamic-system-prompt-sections flag to print mode for improved cross-user prompt cachingworkspace.git_worktree to the status line JSON input, set whenever the current directory is inside a linked git worktreeTRACEPARENT env var to Bash tool subprocesses when OTEL tracing is enabled, so child-process spans correctly parent to Claude Code's trace treeclientInfo in the initialize requestLANG, TZ, NO_COLOR, etc.)/dev/tcp/... or /dev/udp/... not prompting instead of auto-allowingRetry-After — exponential backoff now applies as a minimumoauth.authServerMetadataUrl config override not being honored on token refresh after restart, affecting ADFS and similar IdPs--dangerously-skip-permissions being silently downgraded to accept-edits mode after approving a write to a protected path via Bashpermissions.additionalDirectories changes not applying mid-session — removed directories lose access immediately and added ones work without restartadditionalDirectories revoking access to the same directory passed via --add-dirBash(cmd:*) and Bash(git commit *) wildcard permission rules failing to match commands with extra spaces or tabsBash(...) deny rules being downgraded to a prompt for piped commands that mix cd with other segmentscut -d /, paste -d /, column -s /, awk '{print $1}' file, and filenames containing %toString) causing settings.json to be silently ignored--dangerously-skip-permissions--resume when the edited file was larger than 10KB/resume picker issues: --resume <name> opening uneditable, filter reload wiping search state, empty list swallowing arrow keys, cross-project staleness, and transient task-status text replacing conversation summaries/export not honoring absolute paths and ~, and silently rewriting user-supplied extensions to .txt/effort max being denied for unknown or future model IDsname is a YAML boolean keyword_meta["anthropic/maxResultSizeChars"] not bypassing the token-based persist layerDISABLE_AUTOUPDATER not fully suppressing the npm registry version check and symlink modification on npm-based installsgrep -f FILE / rg -f FILE not prompting when reading a pattern file outside the working directorysandbox.network.allowMachLookup not taking effect on macOS/resume filter hint labels and added project/worktree/branch names in the filter indicator/agents with a tabbed layout: a Running tab shows live subagents, and the Library tab adds Run agent and View running instance actions/reload-plugins to pick up plugin-provided skills without requiring a restartj/k in NORMAL mode now navigate history and select the footer pill at the input boundary--debug/claude-api skill to cover Managed Agents alongside Claude APICLAUDE_CODE_GIT_BASH_PATH is set or Git is installed at a default locationCLAUDE_CODE_MAX_CONTEXT_TOKENS to honor DISABLE_COMPACT when it is set./compact hints when DISABLE_COMPACT is set.Ctrl+O) in NO_FLICKER mode showing prompt, one-line tool summary with edit diffstats, and final responserefreshInterval status line setting to re-run the status line command every N secondsworkspace.git_worktree to the status line JSON input, set when the current directory is inside a linked git worktree● N running indicator in /agents next to agent types with live subagent instances.cedar, .cedarpolicy)--dangerously-skip-permissions being silently downgraded to accept-edits mode after approving a write to a protected pathtoString) causing settings.json to be silently ignoredpermissions.additionalDirectories changes in settings not applying mid-sessionsettings.permissions.additionalDirectories revoking access to the same directory passed via --add-diroauth.authServerMetadataUrl not being honored on token refresh after restart, fixing ADFS and similar IdPsRetry-After — exponential backoff now applies as a minimum/resume picker issues: --resume <name> opening uneditable, Ctrl+A reload wiping search, empty list swallowing navigation, task-status text replacing conversation summary, and cross-project staleness--resume when the edited file was larger than 10KB--resume cache misses and lost mid-turn input from attachment messages not being saved to the transcriptStop/SubagentStop hooks failing on long sessions, and hook evaluator API errors displaying "JSON validation failed" instead of the actual messagecwd: override leaking their working directory back to the parent session's Bash toolclaude plugin update reporting "already at the latest version" for git-based marketplace plugins when the remote had newer commitsname is a YAML boolean keywordNO_FLICKER mode inserting spaces at line breaksNO_FLICKER mode when running inside zellijNO_FLICKER mode when hovering over MCP tool resultsNO_FLICKER mode memory leak where API retries left stale streaming stateNO_FLICKER mode on Windows TerminalNO_FLICKER mode on terminals shorter than 24 rowsNO_FLICKER modeAWS_BEARER_TOKEN_BEDROCK or ANTHROPIC_BEDROCK_BASE_URL are set to empty strings (as GitHub Actions does for unset inputs)LANG=C rm foo, timeout 5 mkdir out)sandbox.network.allowMachLookup now takes effect on macOS@-mention completion to trigger after CJK sentence punctuation, so Japanese/Chinese input no longer requires a space before / or @TRACEPARENT env var when tracing is enabled/claude-api skill to cover Managed Agents alongside the Claude API403 "Authorization header is missing" when using AWS_BEARER_TOKEN_BEDROCK or CLAUDE_CODE_SKIP_BEDROCK_AUTH (regression in 2.1.94)CLAUDE_CODE_USE_MANTLE=1/effort)Slacked #channel header with a clickable channel link for Slack MCP send-message tool callskeep-coding-instructions frontmatter field support for plugin output styleshookSpecificOutput.sessionTitle to UserPromptSubmit hooks for setting the session title"skills": ["./"] now use the skill's frontmatter name for the invocation name instead of the directory basename, giving a stable name across install methodsclaude doctor diagnoses the fixCLAUDE_PLUGIN_ROOT was not set${CLAUDE_PLUGIN_ROOT} resolving to the marketplace source directory instead of the installed cache for local-marketplace plugins on startup❯ caret instead of under the textFORCE_HYPERLINK environment variable being ignored when set via settings.json envus. inference profile ID--resume to resume sessions from other worktrees of the same repo directly instead of printing a cd commandsettings.json files fail to parse, so users know their permission rules are not being appliedforceRemoteSettingsRefresh policy setting: when set, the CLI blocks startup until remote managed settings are freshly fetched, and exits if the fetch fails (fail-closed)/cost for subscription users/release-notes is now an interactive version pickermyhost-graceful-unicorn), overridable with --remote-control-session-name-prefixok:false, and restored preventContinuation:true semantics for non-Stop prompt-type hooksclaude-code → stable, claude-code@latest → latest)ctrl+e jumping to the end of the next line when already at end of line in multiline prompts&/$)/tag command/vim command (toggle vim mode via /config → Editor mode)apply-seccomp helper in both npm and native builds, restoring unix-socket blocking for sandboxed commands_meta["anthropic/maxResultSizeChars"] annotation (up to 500K), allowing larger results like DB schemas to pass through without truncationdisableSkillShellExecution setting to disable inline shell execution in skills, custom slash commands, and plugin commandsclaude-cli://open?q= deep links (encoded newlines %0A no longer rejected)bin/ and invoke them as bare commands from the Bash tool--resume that could lose conversation history when async transcript writes fail silentlycmd+delete not deleting to start of line on iTerm2, kitty, WezTerm, Ghostty, and Windows Terminalpermissions.defaultMode: "auto" in settings.json/feedback now explains why it's unavailable instead of disappearing from the slash menu/claude-api skill guidance for agent design patterns including tool surface decisions, context management, and caching strategystripAnsi on Bun by routing through Bun.stripANSIold_string anchors, reducing output tokens/powerup — interactive lessons teaching Claude Code features with animated demosCLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE env var to keep the existing marketplace cache when git pull fails, useful in offline environments.husky to protected directories (acceptEdits mode)--resume causing a full prompt-cache miss on the first request for users with deferred tools, MCP servers, or custom agents (regression since v2.1.69)Edit/Write failing with "File content has changed" when a PostToolUse format-on-save hook rewrites the file between consecutive editsPreToolUse hooks that emit JSON to stdout and exit with code 2 not correctly blocking the tool call/model, /config, and other selection screens& background job bypass, -ErrorAction Break debugger hang, archive-extraction TOCTOU, and parse-fail fallback deny-rule degradation/resume all-projects view to load project sessions in parallel, improving load times for users with many projects--resume picker to no longer show sessions created by claude -p or SDK invocationsGet-DnsClientCache and ipconfig /displaydns from auto-allow (DNS cache privacy)"defer" permission decision to PreToolUse hooks — headless sessions can pause at a tool call and resume with -p --resume to have the hook re-evaluateCLAUDE_CODE_NO_FLICKER=1 environment variable to opt into flicker-free alt-screen rendering with virtualized scrollbackPermissionDenied hook that fires after auto mode classifier denials — return {retry: true} to tell the model it can retry@ mention typeahead suggestionsMCP_CONNECTION_NONBLOCKING=true for -p mode to skip the MCP connection wait entirely, and bounded --mcp-config server connections at 5s instead of blocking on the slowest server/permissions → Recent tab where you can retry with rEdit(//path/**) and Read(//path/**) allow rules to check the resolved symlink target, not just the requested pathStructuredOutput schema cache bug causing ~50% failure rate when using multiple schemas~/.claude/history.jsonl/stats undercounting tokens by excluding subagent usage, and losing historical data beyond 30 days when the stats cache format changes-p --resume hangs when the deferred tool input exceeds 64KB or no deferred marker exists, and -p --continue not resuming deferred toolsclaude-cli:// deep links not opening on macOSfile_path as an absolute path for Write/Edit/Read tools, matching the documented behavior--resume crash when transcript contains a tool result from an older CLI version or interrupted writeif condition filtering not matching compound commands (ls && git push) or commands with env-var prefixes (FOO=bar git push)invalidates not clearing the currently-displayed notification immediatelygit push wrote progress to stderr on Windows PowerShell 5.1ls/tree/du instead of "Read N files"@-mention typeahead to rank source files above MCP resources with similar namesEdit to work on files viewed via Bash with sed -n or cat, without requiring a separate Read call firstcleanupPeriodDays: 0 in settings.json to be rejected with a validation error — it previously silently disabled transcript persistenceshowThinkingSummaries: true in settings.json to restoreTaskCreated hook event and its blocking behavior/env now applies to PowerShell tool commands (previously only affected Bash)/usage now hides redundant "Current week (Sonnet only)" bar for Pro and Enterprise plans!command into an empty prompt now enters bash mode, matching typed ! behavior/buddy is here for April 1st — hatch a small creature that watches you codeX-Claude-Code-Session-Id header to API requests so proxies can aggregate requests by session without parsing the body.jj and .sl to VCS directory exclusion lists so Grep and file autocomplete don't descend into Jujutsu or Sapling metadata--resume failing with "tool_use ids were found without tool_result blocks" on sessions created before v2.1.85~/.claude/CLAUDE.md) when conditional skills or rules are configured/feedback on very long sessions with large transcript files--bare mode dropping MCP tools in interactive sessions and silently discarding messages enqueued mid-turnc shortcut copying only ~20 characters of the OAuth login URL instead of the full URL/model in one of them/plugin uninstall dialog: pressing n now correctly uninstalls the plugin while preserving its data directoryultrathink hint lingering after deleting the keyword@ — raw string content no longer JSON-escaped/skills listing are now capped at 250 characters to reduce context usage/skills menu to sort alphabetically for easier scanningCLAUDE_CODE_MCP_SERVER_NAME and CLAUDE_CODE_MCP_SERVER_URL environment variables to MCP headersHelper scripts, allowing one helper to serve multiple serversif field for hooks using permission rule syntax (e.g., Bash(git *)) to filter when they run, reducing process spawning overhead/loop, CronCreate) fire[Image #N] placeholder when pasting imagesclaude-cli://open?q=…) now support up to 5,000 characters, with a "scroll to review" warning for long pre-filled promptsmanaged-settings.json) can no longer be installed or enabled, and are hidden from marketplace viewsAskUserQuestion by returning updatedInput alongside permissionDecision: "allow", enabling headless integrations that collect answers via their own UItool_parameters in OpenTelemetry tool_result events are now gated behind OTEL_LOG_TOOL_DETAILS=1/compact failing with "context exceeded" when the conversation has grown too large for the compact request itself to fit/plugin enable and /plugin disable failing when a plugin's install location differs from where it's declared in settings--worktree exiting with an error in non-git repositories before the WorktreeCreate hook could rundeniedMcpServers setting not blocking claude.ai MCP serversswitch_display in the computer-use tool returning "not available in this session" on multi-monitor setupsOTEL_LOGS_EXPORTER, OTEL_METRICS_EXPORTER, or OTEL_TRACES_EXPORTER is set to none403 insufficient_scope now correctly trigger the re-authorization flowtype:'sdk' MCP servers passed via --mcp-config are no longer dropped during startup