Files
claude-code/changelog.md
unraid 95fece4b51 feat: 整合功能恢复与技能学习闭环(含 ECC v2.1 parity + Opus 4.7 接入 + prompt 工程优化)
主要变更:
- Skill Learning 闭环系统 (9/9 AC)
- Opus 4.7 模型层接入 + adaptive thinking
- Prompt 工程优化 (64 审计测试)
- Agent Teams 简化门控 (默认启用)
- Windows Terminal 后端修复 (EncodedCommand/WT_SESSION)
- TF-IDF 技能搜索精准化 (字段加权/CJK 优化)
- Autonomy 系统 (/autonomy 命令)
- ACP 协议完整实现
- mock.module 泄漏修复 (CI 全绿)
- 152+ lint/type 修复
2026-04-22 16:07:42 +08:00

504 lines
43 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Version 2.1.89:
· Added "defer" permission decision to PreToolUse hooks — headless sessions can pause at a tool call and resume with -p
--resume to have the hook re-evaluate
· Added CLAUDE_CODE_NO_FLICKER=1 environment variable to opt into flicker-free alt-screen rendering with virtualized
scrollback
· Added PermissionDenied hook that fires after auto mode classifier denials — return {retry: true} to tell the model it can
retry
· Added named subagents to @ mention typeahead suggestions
· Added MCP_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
· Auto mode: denied commands now show a notification and appear in /permissions → Recent tab where you can retry with r
· Fixed Edit(//path/**) and Read(//path/**) allow rules to check the resolved symlink target, not just the requested path
· Fixed voice push-to-talk not activating for some modifier-combo bindings, and voice mode on Windows failing with
"WebSocket upgrade rejected with HTTP 101"
· Fixed Edit/Write tools doubling CRLF on Windows and stripping Markdown hard line breaks (two trailing spaces)
· Fixed StructuredOutput schema cache bug causing ~50% failure rate when using multiple schemas
· Fixed memory leak where large JSON inputs were retained as LRU cache keys in long-running sessions
· Fixed a crash when removing a message from very large session files (over 50MB)
· Fixed LSP server zombie state after crash — server now restarts on next request instead of failing until session restart
· Fixed prompt history entries containing CJK or emoji being silently dropped when they fall on a 4KB boundary in
~/.claude/history.jsonl
· Fixed /stats undercounting tokens by excluding subagent usage, and losing historical data beyond 30 days when the stats
cache format changes
· Fixed -p --resume hangs when the deferred tool input exceeds 64KB or no deferred marker exists, and -p --continue not
resuming deferred tools
· Fixed claude-cli:// deep links not opening on macOS
· Fixed MCP tool errors truncating to only the first content block when the server returns multi-element error content
· Fixed skill reminders and other system context being dropped when sending messages with images via the SDK
· Fixed PreToolUse/PostToolUse hooks to receive file_path as an absolute path for Write/Edit/Read tools, matching the
documented behavior
· Fixed autocompact thrash loop — now detects when context refills to the limit immediately after compacting three times in
a row and stops with an actionable error instead of burning API calls
· Fixed prompt cache misses in long sessions caused by tool schema bytes changing mid-session
· Fixed nested CLAUDE.md files being re-injected dozens of times in long sessions that read many files
· Fixed --resume crash when transcript contains a tool result from an older CLI version or interrupted write
· Fixed misleading "Rate limit reached" message when the API returned an entitlement error — now shows the actual error
with actionable hints
· Fixed hooks if condition filtering not matching compound commands (ls && git push) or commands with env-var prefixes
(FOO=bar git push)
· Fixed collapsed search/read group badges duplicating in terminal scrollback during heavy parallel tool use
· Fixed notification invalidates not clearing the currently-displayed notification immediately
· Fixed prompt briefly disappearing after submit when background messages arrived during processing
· Fixed Devanagari and other combining-mark text being truncated in assistant output
· Fixed rendering artifacts on main-screen terminals after layout shifts
· Fixed voice mode failing to request microphone permission on macOS Apple Silicon
· Fixed Shift+Enter submitting instead of inserting a newline on Windows Terminal Preview 1.25
· Fixed periodic UI jitter during streaming in iTerm2 when running inside tmux
· Fixed PowerShell tool incorrectly reporting failures when commands like git push wrote progress to stderr on Windows
PowerShell 5.1
· Fixed a potential out-of-memory crash when the Edit tool was used on very large files (>1 GiB)
· Improved collapsed tool summary to show "Listed N directories" for ls/tree/du instead of "Read N files"
· Improved Bash tool to warn when a formatter/linter command modifies files you have previously read, preventing stale-edit
errors
· Improved @-mention typeahead to rank source files above MCP resources with similar names
· Improved PowerShell tool prompt with version-appropriate syntax guidance (5.1 vs 7+)
· Changed Edit to work on files viewed via Bash with sed -n or cat, without requiring a separate Read call first
· Changed hook output over 50K characters to be saved to disk with a file path + preview instead of being injected directly
into context
· Changed cleanupPeriodDays: 0 in settings.json to be rejected with a validation error — it previously silently disabled
transcript persistence
· Changed thinking summaries to no longer be generated by default in interactive sessions — set showThinkingSummaries: true
in settings.json to restore
· Documented TaskCreated hook event and its blocking behavior
· Preserved task notifications when backgrounding a running command with Ctrl+B
· PowerShell tool on Windows: external-command arguments containing both a double-quote and whitespace now prompt instead
of auto-allowing (PS 5.1 argument-splitting hardening)
· /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
· Image paste no longer inserts a trailing space
· Pasting !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 code
Version 2.1.90:
· Added /powerup — interactive lessons teaching Claude Code features with animated demos
· Added CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE env var to keep the existing marketplace cache when git pull fails,
useful in offline environments
· Added .husky to protected directories (acceptEdits mode)
· Fixed an infinite loop where the rate-limit options dialog would repeatedly auto-open after hitting your usage limit,
eventually crashing the session
· Fixed --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)
· Fixed Edit/Write failing with "File content has changed" when a PostToolUse format-on-save hook rewrites the file between
consecutive edits
· Fixed PreToolUse hooks that emit JSON to stdout and exit with code 2 not correctly blocking the tool call
· Fixed collapsed search/read summary badge appearing multiple times in fullscreen scrollback when a CLAUDE.md file
auto-loads during a tool call
· Fixed auto mode not respecting explicit user boundaries ("don't push", "wait for X before Y") even when the action would
otherwise be allowed
· Fixed click-to-expand hover text being nearly invisible on light terminal themes
· Fixed UI crash when malformed tool input reached the permission dialog
· Fixed headers disappearing when scrolling /model, /config, and other selection screens
· Hardened PowerShell tool permission checks: fixed trailing & background job bypass, -ErrorAction Break debugger hang,
archive-extraction TOCTOU, and parse-fail fallback deny-rule degradation
· Improved performance: eliminated per-turn JSON.stringify of MCP tool schemas on cache-key lookup
· Improved performance: SSE transport now handles large streamed frames in linear time (was quadratic)
· Improved performance: SDK sessions with long conversations no longer slow down quadratically on transcript writes
· Improved /resume all-projects view to load project sessions in parallel, improving load times for users with many
projects
· Changed --resume picker to no longer show sessions created by claude -p or SDK invocations
· Removed Get-DnsClientCache and ipconfig /displaydns from auto-allow (DNS cache privacy)
Version 2.1.91:
· Added MCP tool result persistence override via _meta["anthropic/maxResultSizeChars"] annotation (up to 500K), allowing
larger results like DB schemas to pass through without truncation
· Added disableSkillShellExecution setting to disable inline shell execution in skills, custom slash commands, and plugin
commands
· Added support for multi-line prompts in claude-cli://open?q= deep links (encoded newlines %0A no longer rejected)
· Plugins can now ship executables under bin/ and invoke them as bare commands from the Bash tool
· Fixed transcript chain breaks on --resume that could lose conversation history when async transcript writes fail silently
· Fixed cmd+delete not deleting to start of line on iTerm2, kitty, WezTerm, Ghostty, and Windows Terminal
· Fixed plan mode in remote sessions losing track of the plan file after a container restart, which caused permission
prompts on plan edits and an empty plan-approval modal
· Fixed JSON schema validation for permissions.defaultMode: "auto" in settings.json
· Fixed Windows version cleanup not protecting the active version's rollback copy
· /feedback now explains why it's unavailable instead of disappearing from the slash menu
· Improved /claude-api skill guidance for agent design patterns including tool surface decisions, context management, and
caching strategy
· Improved performance: faster stripAnsi on Bun by routing through Bun.stripANSI
· Edit tool now uses shorter old_string anchors, reducing output tokens
Version 2.1.92:
· Added forceRemoteSettingsRefresh policy setting: when set, the CLI blocks startup until remote managed settings are
freshly fetched, and exits if the fetch fails (fail-closed)
· Added interactive Bedrock setup wizard accessible from the login screen when selecting "3rd-party platform" — guides you
through AWS authentication, region configuration, credential verification, and model pinning
· Added per-model and cache-hit breakdown to /cost for subscription users
· /release-notes is now an interactive version picker
· Remote Control session names now use your hostname as the default prefix (e.g. myhost-graceful-unicorn), overridable with
--remote-control-session-name-prefix
· Pro users now see a footer hint when returning to a session after the prompt cache has expired, showing roughly how many
tokens the next turn will send uncached
· Fixed subagent spawning permanently failing with "Could not determine pane count" after tmux windows are killed or
renumbered during a long-running session
· Fixed prompt-type Stop hooks incorrectly failing when the small fast model returns ok:false, and restored
preventContinuation:true semantics for non-Stop prompt-type hooks
· Fixed tool input validation failures when streaming emits array/object fields as JSON-encoded strings
· Fixed an API 400 error that could occur when extended thinking produced a whitespace-only text block alongside real
content
· Fixed accidental feedback survey submissions from auto-pilot keypresses and consecutive-prompt digit collisions
· Fixed misleading "esc to interrupt" hint appearing alongside "esc to clear" when a text selection exists in fullscreen
mode during processing
· Fixed Homebrew install update prompts to use the cask's release channel (claude-code → stable, claude-code@latest
latest)
· Fixed ctrl+e jumping to the end of the next line when already at end of line in multiline prompts
· Fixed an issue where the same message could appear at two positions when scrolling up in fullscreen mode (iTerm2,
Ghostty, and other terminals with DEC 2026 support)
· Fixed idle-return "/clear to save X tokens" hint showing cumulative session tokens instead of current context size
· Fixed plugin MCP servers stuck "connecting" on session start when they duplicate a claude.ai connector that is
unauthenticated
· Improved Write tool diff computation speed for large files (60% faster on files with tabs/&/$)
· Removed /tag command
· Removed /vim command (toggle vim mode via /config → Editor mode)
· Linux sandbox now ships the apply-seccomp helper in both npm and native builds, restoring unix-socket blocking for
sandboxed commands
Version 2.1.94:
· Added support for Amazon Bedrock powered by Mantle, set CLAUDE_CODE_USE_MANTLE=1
· Changed default effort level from medium to high for API-key, Bedrock/Vertex/Foundry, Team, and Enterprise users (control
this with /effort)
· Added compact Slacked #channel header with a clickable channel link for Slack MCP send-message tool calls
· Added keep-coding-instructions frontmatter field support for plugin output styles
· Added hookSpecificOutput.sessionTitle to UserPromptSubmit hooks for setting the session title
· Plugin skills declared via "skills": ["./"] now use the skill's frontmatter name for the invocation name instead of the
directory basename, giving a stable name across install methods
· Fixed agents appearing stuck after a 429 rate-limit response with a long Retry-After header — the error now surfaces
immediately instead of silently waiting
· Fixed Console login on macOS silently failing with "Not logged in" when the login keychain is locked or its password is
out of sync — the error is now surfaced and claude doctor diagnoses the fix
· Fixed plugin skill hooks defined in YAML frontmatter being silently ignored
· Fixed plugin hooks failing with "No such file or directory" when CLAUDE_PLUGIN_ROOT was not set
· Fixed ${CLAUDE_PLUGIN_ROOT} resolving to the marketplace source directory instead of the installed cache for
local-marketplace plugins on startup
· Fixed scrollback showing the same diff repeated and blank pages in long-running sessions
· Fixed multiline user prompts in the transcript indenting wrapped lines under the caret instead of under the text
· Fixed Shift+Space inserting the literal word "space" instead of a space character in search inputs
· Fixed hyperlinks opening two browser tabs when clicked inside tmux running in an xterm.js-based terminal (VS Code, Hyper,
Tabby)
· Fixed an alt-screen rendering bug where content height changes mid-scroll could leave compounding ghost lines
· Fixed FORCE_HYPERLINK environment variable being ignored when set via settings.json env
· Fixed native terminal cursor not tracking the selected tab in dialogs, so screen readers and magnifiers can follow tab
navigation
· Fixed Bedrock invocation of Sonnet 3.5 v2 by using the us. inference profile ID
· Fixed SDK/print mode not preserving the partial assistant response in conversation history when interrupted mid-stream
· Improved --resume to resume sessions from other worktrees of the same repo directly instead of printing a cd command
· Fixed CJK and other multibyte text being corrupted with U+FFFD in stream-json input/output when chunk boundaries split a
UTF-8 sequence
· [VSCode] Reduced cold-open subprocess work on starting a session
· [VSCode] Fixed dropdown menus selecting the wrong item when the mouse was over the list while typing or using arrow keys
· [VSCode] Added a warning banner when settings.json files fail to parse, so users know their permission rules are not
being applied
Version 2.1.96:
· Fixed Bedrock requests failing with 403 "Authorization header is missing" when using AWS_BEARER_TOKEN_BEDROCK or
CLAUDE_CODE_SKIP_BEDROCK_AUTH (regression in 2.1.94)
Version 2.1.97:
· Added focus view toggle (Ctrl+O) in NO_FLICKER mode showing prompt, one-line tool summary with edit diffstats, and final
response
· Added refreshInterval status line setting to re-run the status line command every N seconds
· Added workspace.git_worktree to the status line JSON input, set when the current directory is inside a linked git
worktree
· Added ● N running indicator in /agents next to agent types with live subagent instances
· Added syntax highlighting for Cedar policy files (.cedar, .cedarpolicy)
· Fixed --dangerously-skip-permissions being silently downgraded to accept-edits mode after approving a write to a
protected path
· Fixed and hardened Bash tool permissions, tightening checks around env-var prefixes and network redirects, and reducing
false prompts on common commands
· Fixed permission rules with names matching JavaScript prototype properties (e.g. toString) causing settings.json to be
silently ignored
· Fixed managed-settings allow rules remaining active after an admin removed them until process restart
· Fixed permissions.additionalDirectories changes in settings not applying mid-session
· Fixed removing a directory from settings.permissions.additionalDirectories revoking access to the same directory passed
via --add-dir
· Fixed MCP HTTP/SSE connections accumulating ~50 MB/hr of unreleased buffers when servers reconnect
· Fixed MCP OAuth oauth.authServerMetadataUrl not being honored on token refresh after restart, fixing ADFS and similar
IdPs
· Fixed 429 retries burning all attempts in ~13 seconds when the server returns a small Retry-After — exponential backoff
now applies as a minimum
· Fixed rate-limit upgrade options disappearing after context compaction
· Fixed several /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
· Fixed file-edit diffs disappearing on --resume when the edited file was larger than 10KB
· Fixed --resume cache misses and lost mid-turn input from attachment messages not being saved to the transcript
· Fixed messages typed while Claude is working not being persisted to the transcript
· Fixed prompt-type Stop/SubagentStop hooks failing on long sessions, and hook evaluator API errors displaying "JSON
validation failed" instead of the actual message
· Fixed subagents with worktree isolation or cwd: override leaking their working directory back to the parent session's
Bash tool
· Fixed compaction writing duplicate multi-MB subagent transcript files on prompt-too-long retries
· Fixed claude plugin update reporting "already at the latest version" for git-based marketplace plugins when the remote
had newer commits
· Fixed slash command picker breaking when a plugin's frontmatter name is a YAML boolean keyword
· Fixed copying wrapped URLs in NO_FLICKER mode inserting spaces at line breaks
· Fixed scroll rendering artifacts in NO_FLICKER mode when running inside zellij
· Fixed a crash in NO_FLICKER mode when hovering over MCP tool results
· Fixed a NO_FLICKER mode memory leak where API retries left stale streaming state
· Fixed slow mouse-wheel scrolling in NO_FLICKER mode on Windows Terminal
· Fixed custom status line not displaying in NO_FLICKER mode on terminals shorter than 24 rows
· Fixed Shift+Enter and Alt/Cmd+arrow shortcuts not working in Warp with NO_FLICKER mode
· Fixed Korean/Japanese/Unicode text becoming garbled when copied in no-flicker mode on Windows
· Fixed Bedrock SigV4 authentication failing when AWS_BEARER_TOKEN_BEDROCK or ANTHROPIC_BEDROCK_BASE_URL are set to empty
strings (as GitHub Actions does for unset inputs)
· Improved Accept Edits mode to auto-approve filesystem commands prefixed with safe env vars or process wrappers (e.g.
LANG=C rm foo, timeout 5 mkdir out)
· Improved auto mode and bypass-permissions mode to auto-approve sandbox network access prompts
· Improved sandbox: sandbox.network.allowMachLookup now takes effect on macOS
· Improved image handling: pasted and attached images are now compressed to the same token budget as images read via the
Read tool
· Improved slash command and @-mention completion to trigger after CJK sentence punctuation, so Japanese/Chinese input no
longer requires a space before / or @
· Improved Bridge sessions to show the local git repo, branch, and working directory on the claude.ai session card
· Improved footer layout: indicators (Focus, notifications) now stay on the mode-indicator row instead of wrapping below
· Improved context-low warning to show as a transient footer notification instead of a persistent row
· Improved markdown blockquotes to show a continuous left bar across wrapped lines
· Improved session transcript size by skipping empty hook entries and capping stored pre-edit file copies
· Improved transcript accuracy: per-block entries now carry the final token usage instead of the streaming placeholder
· Improved Bash tool OTEL tracing: subprocesses now inherit a W3C TRACEPARENT env var when tracing is enabled
· Updated /claude-api skill to cover Managed Agents alongside the Claude API
Version 2.1.98:
· Added interactive Google Vertex AI setup wizard accessible from the login screen when selecting "3rd-party platform",
guiding you through GCP authentication, project and region configuration, credential verification, and model pinning
· Added CLAUDE_CODE_PERFORCE_MODE env var: when set, Edit/Write/NotebookEdit fail on read-only files with a p4 edit hint
instead of silently overwriting them
· Added Monitor tool for streaming events from background scripts
· Added subprocess sandboxing with PID namespace isolation on Linux when CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set, and
CLAUDE_CODE_SCRIPT_CAPS env var to limit per-session script invocations
· Added --exclude-dynamic-system-prompt-sections flag to print mode for improved cross-user prompt caching
· Added workspace.git_worktree to the status line JSON input, set whenever the current directory is inside a linked git
worktree
· Added W3C TRACEPARENT env var to Bash tool subprocesses when OTEL tracing is enabled, so child-process spans correctly
parent to Claude Code's trace tree
· LSP: Claude Code now identifies itself to language servers via clientInfo in the initialize request
· Fixed a Bash tool permission bypass where a backslash-escaped flag could be auto-allowed as read-only and lead to
arbitrary code execution
· Fixed compound Bash commands bypassing forced permission prompts for safety checks and explicit ask rules in auto and
bypass-permissions modes
· Fixed read-only commands with env-var prefixes not prompting unless the var is known-safe (LANG, TZ, NO_COLOR, etc.)
· Fixed redirects to /dev/tcp/... or /dev/udp/... not prompting instead of auto-allowing
· Fixed stalled streaming responses timing out instead of falling back to non-streaming mode
· Fixed 429 retries burning all attempts in ~13s when the server returns a small Retry-After — exponential backoff now
applies as a minimum
· Fixed MCP OAuth oauth.authServerMetadataUrl config override not being honored on token refresh after restart, affecting
ADFS and similar IdPs
· Fixed capital letters being dropped to lowercase on xterm and VS Code integrated terminal when the kitty keyboard
protocol is active
· Fixed macOS text replacements deleting the trigger word instead of inserting the substitution
· Fixed --dangerously-skip-permissions being silently downgraded to accept-edits mode after approving a write to a
protected path via Bash
· Fixed managed-settings allow rules remaining active after an admin removed them, until process restart
· Fixed permissions.additionalDirectories changes not applying mid-session — removed directories lose access immediately
and added ones work without restart
· Fixed removing a directory from additionalDirectories revoking access to the same directory passed via --add-dir
· Fixed Bash(cmd:*) and Bash(git commit *) wildcard permission rules failing to match commands with extra spaces or tabs
· Fixed Bash(...) deny rules being downgraded to a prompt for piped commands that mix cd with other segments
· Fixed false Bash permission prompts for cut -d /, paste -d /, column -s /, awk '{print $1}' file, and filenames
containing %
· Fixed permission rules with names matching JavaScript prototype properties (e.g. toString) causing settings.json to be
silently ignored
· Fixed agent team members not inheriting the leader's permission mode when using --dangerously-skip-permissions
· Fixed a crash in fullscreen mode when hovering over MCP tool results
· Fixed copying wrapped URLs in fullscreen mode inserting spaces at line breaks
· Fixed file-edit diffs disappearing from the UI on --resume when the edited file was larger than 10KB
· Fixed several /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
· Fixed /export not honoring absolute paths and ~, and silently rewriting user-supplied extensions to .txt
· Fixed /effort max being denied for unknown or future model IDs
· Fixed slash command picker breaking when a plugin's frontmatter name is a YAML boolean keyword
· Fixed rate-limit upsell text being hidden after message remounts
· Fixed MCP tools with _meta["anthropic/maxResultSizeChars"] not bypassing the token-based persist layer
· Fixed voice mode leaking dozens of space characters into the input when re-holding the push-to-talk key while the
previous transcript is still processing
· Fixed DISABLE_AUTOUPDATER not fully suppressing the npm registry version check and symlink modification on npm-based
installs
· Fixed a memory leak where Remote Control permission handler entries were retained for the lifetime of the session
· Fixed background subagents that fail with an error not reporting partial progress to the parent agent
· Fixed prompt-type Stop/SubagentStop hooks failing on long sessions, and hook evaluator API errors showing "JSON
validation failed" instead of the real message
· Fixed feedback survey rendering when dismissed
· Fixed Bash grep -f FILE / rg -f FILE not prompting when reading a pattern file outside the working directory
· Fixed stale subagent worktree cleanup removing worktrees that contain untracked files
· Fixed sandbox.network.allowMachLookup not taking effect on macOS
· Improved /resume filter hint labels and added project/worktree/branch names in the filter indicator
· Improved footer indicators (Focus, notifications) to stay on the mode-indicator row instead of wrapping at narrow
terminal widths
· Improved /agents with a tabbed layout: a Running tab shows live subagents, and the Library tab adds Run agent and View
running instance actions
· Improved /reload-plugins to pick up plugin-provided skills without requiring a restart
· Improved Accept Edits mode to auto-approve filesystem commands prefixed with safe env vars or process wrappers
· Improved Vim mode: j/k in NORMAL mode now navigate history and select the footer pill at the input boundary
· Improved hook errors in the transcript to include the first line of stderr for self-diagnosis without --debug
· Improved OTEL tracing: interaction spans now correctly wrap full turns under concurrent SDK calls, and headless turns end
spans per-turn
· Improved transcript entries to carry final token usage instead of streaming placeholders
· Updated the /claude-api skill to cover Managed Agents alongside Claude API
· [VSCode] Fixed false-positive "requires git-bash" error on Windows when CLAUDE_CODE_GIT_BASH_PATH is set or Git is
installed at a default location
· Fixed CLAUDE_CODE_MAX_CONTEXT_TOKENS to honor DISABLE_COMPACT when it is set.
· Dropped /compact hints when DISABLE_COMPACT is set.
Version 2.1.101:
· Added /team-onboarding command to generate a teammate ramp-up guide from your local Claude Code usage
· Added OS CA certificate store trust by default, so enterprise TLS proxies work without extra setup (set
CLAUDE_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
first
· Improved brief mode to retry once when Claude responds with plain text instead of a structured message
· Improved focus mode: Claude now writes more self-contained summaries since it knows you only see its final message
· Improved tool-not-available errors to explain why and how to proceed when the model calls a tool that exists but isn't
available in the current context
· Improved rate-limit retry messages to show which limit was hit and when it resets instead of an opaque seconds countdown
· Improved refusal error messages to include the API-provided explanation when available
· Improved claude -p --resume <name> to accept session titles set via /rename or --name
· Improved settings resilience: an unrecognized hook event name in settings.json no longer causes the entire file to be
ignored
· Improved plugin hooks from plugins force-enabled by managed settings to run when allowManagedHooksOnly is set
· Improved /plugin and claude plugin update to show a warning when the marketplace could not be refreshed, instead of
silently reporting a stale version
· Improved plan mode to hide the "Refine with Ultraplan" option when the user's org or auth setup can't reach Claude Code
on the web
· Improved beta tracing to honor OTEL_LOG_USER_PROMPTS, OTEL_LOG_TOOL_DETAILS, and OTEL_LOG_TOOL_CONTENT; sensitive span
attributes are no longer emitted unless opted in
· Improved SDK query() to clean up subprocess and temp files when consumers break from for await or use await using
· Fixed a command injection vulnerability in the POSIX which fallback used by LSP binary detection
· Fixed a memory leak where long sessions retained dozens of historical copies of the message list in the virtual scroller
· Fixed --resume/--continue losing conversation context on large sessions when the loader anchored on a dead-end branch
instead of the live conversation
· Fixed --resume chain recovery bridging into an unrelated subagent conversation when a subagent message landed near a
main-chain write gap
· Fixed a crash on --resume when a persisted Edit/Write tool result was missing its file_path
· Fixed a hardcoded 5-minute request timeout that aborted slow backends (local LLMs, extended thinking, slow gateways)
regardless of API_TIMEOUT_MS
· Fixed permissions.deny rules not overriding a PreToolUse hook's permissionDecision: "ask" — previously the hook could
downgrade a deny into a prompt
· Fixed --setting-sources without user causing background cleanup to ignore cleanupPeriodDays and delete conversation
history older than 30 days
· Fixed Bedrock SigV4 authentication failing with 403 when ANTHROPIC_AUTH_TOKEN, apiKeyHelper, or ANTHROPIC_CUSTOM_HEADERS
set an Authorization header
· Fixed claude -w <name> failing with "already exists" after a previous session's worktree cleanup left a stale directory
· Fixed subagents not inheriting MCP tools from dynamically-injected servers
· Fixed sub-agents running in isolated worktrees being denied Read/Edit access to files inside their own worktree
· Fixed sandboxed Bash commands failing with mktemp: No such file or directory after a fresh boot
· Fixed claude mcp serve tool calls failing with "Tool execution failed" in MCP clients that validate outputSchema
· Fixed RemoteTrigger tool's run action sending an empty body and being rejected by the server
· Fixed several /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 input
· Fixed Grep tool ENOENT when the embedded ripgrep binary path becomes stale (VS Code extension auto-update, macOS App
Translocation); now falls back to system rg and self-heals mid-session
· Fixed /btw writing a copy of the entire conversation to disk on every use
· Fixed /context Free space and Messages breakdown disagreeing with the header percentage
· Fixed several plugin issues: slash commands resolving to the wrong plugin with duplicate name: 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
· Fixed the /mcp menu offering OAuth-specific actions for MCP servers configured with headersHelper; Reconnect is now
offered instead to re-invoke the helper script
· Fixed ctrl+], ctrl+\, and ctrl+^ keybindings not firing in terminals that send raw C0 control bytes (Terminal.app,
default iTerm2, xterm)
· Fixed /login OAuth URL rendering with padding that prevented clean mouse selection
· Fixed rendering issues: flicker in non-fullscreen mode when content above the visible area changed, terminal scrollback
being wiped during long sessions in non-fullscreen mode, and mouse-scroll escape sequences occasionally leaking into the
prompt as text
· Fixed crash when settings.json env values are numbers instead of strings
· Fixed in-app settings writes (e.g. /add-dir --remember, /config) not refreshing the in-memory snapshot, preventing
removed directories from being revoked mid-session
· Fixed custom keybindings (~/.claude/keybindings.json) not loading on Bedrock, Vertex, and other third-party providers
· Fixed claude --continue -p not correctly continuing sessions created by -p or the SDK
· Fixed several Remote Control issues: worktrees removed on session crash, connection failures not persisting in the
transcript, spurious "Disconnected" indicator in brief mode for local sessions, and /remote-control failing over SSH when
only CLAUDE_CODE_ORGANIZATION_UUID is set
· Fixed /insights sometimes omitting the report file link from its response
· [VSCode] Fixed the file attachment below the chat input not clearing when the last editor tab is closed
Version 2.1.105:
· Added path parameter to the EnterWorktree tool to switch into an existing worktree of the current repository
· Added PreCompact hook support: hooks can now block compaction by exiting with code 2 or returning {"decision":"block"}
· Added background monitor support for plugins via a top-level monitors manifest key that auto-arms at session start or on
skill invoke
· /proactive is now an alias for /loop
· Improved stalled API stream handling: streams now abort after 5 minutes of no data and retry non-streaming instead of
hanging indefinitely
· Improved network error messages: connection errors now show a retry message immediately instead of a silent spinner
· Improved file write display: long single-line writes (e.g. minified JSON) are now truncated in the UI instead of
paginating across many screens
· Improved /doctor layout with status icons; press f to have Claude fix reported issues
· Improved /config labels and descriptions for clarity
· Improved skill description handling: raised the listing cap from 250 to 1,536 characters and added a startup warning when
descriptions are truncated
· Improved WebFetch to strip <style> and <script> contents from fetched pages so CSS-heavy pages no longer exhaust the
content budget before reaching actual text
· Improved stale agent worktree cleanup to remove worktrees whose PR was squash-merged instead of keeping them indefinitely
· Improved MCP large-output truncation prompt to give format-specific recipes (e.g. jq for JSON, computed Read chunk sizes
for text)
· Fixed images attached to queued messages (sent while Claude is working) being dropped
· Fixed screen going blank when the prompt input wraps to a second line in long conversations
· Fixed leading whitespace getting copied when selecting multi-line assistant responses in fullscreen mode
· Fixed leading whitespace being trimmed from assistant messages, breaking ASCII art and indented diagrams
· Fixed garbled bash output when commands print clickable file links (e.g. Python rich/loguru logging)
· Fixed alt+enter not inserting a newline in terminals using ESC-prefix alt encoding, and Ctrl+J not inserting a newline
(regression in 2.1.100)
· Fixed duplicate "Creating worktree" text in EnterWorktree/ExitWorktree tool display
· Fixed queued user prompts disappearing from focus mode
· Fixed one-shot scheduled tasks re-firing repeatedly when the file watcher missed the post-fire cleanup
· Fixed inbound channel notifications being silently dropped after the first message for Team/Enterprise users
· Fixed marketplace plugins with package.json and lockfile not having dependencies installed automatically after
install/update
· Fixed marketplace auto-update leaving the official marketplace in a broken state when a plugin process holds files open
during the update
· Fixed "Resume this session with..." hint not printing on exit after /resume, --worktree, or /branch
· Fixed feedback survey shortcut keys firing when typed at the end of a longer prompt
· Fixed stdio MCP server emitting malformed (non-JSON) output hanging the session instead of failing fast with "Connection
closed"
· Fixed MCP tools missing on the first turn of headless/remote-trigger sessions when MCP servers connect asynchronously
· Fixed /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
· Fixed 429 rate-limit errors showing a raw JSON dump instead of a clean message for API-key, Bedrock, and Vertex users
· Fixed crash on resume when session contains malformed text blocks
· Fixed /help dropping the tab bar, Shortcuts heading, and footer at short terminal heights
· Fixed malformed keybinding entry values in keybindings.json being silently loaded instead of rejected with a clear error
· Fixed CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC in one project's settings permanently disabling usage metrics for all
projects on the machine
· Fixed washed-out 16-color palette when using Ghostty, Kitty, Alacritty, WezTerm, foot, rio, or Contour over SSH/mosh
· Fixed Bash tool suggesting acceptEdits permission mode when exiting plan mode would downgrade from a higher permission
level
Version 2.1.107:
· Show thinking hints sooner during long operations
Version 2.1.108:
· Added ENABLE_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 TTL
· Added recap feature to provide context when returning to a session, configurable in /config and manually invocable with
/recap; force with CLAUDE_CODE_ENABLE_AWAY_SUMMARY if telemetry disabled.
· The model can now discover and invoke built-in slash commands like /init, /review, and /security-review via the Skill
tool
· /undo is now an alias for /rewind
· Improved /model to warn before switching models mid-conversation, since the next response re-reads the full history
uncached
· Improved /resume picker to default to sessions from the current directory; press Ctrl+A to show all projects
· Improved error messages: server rate limits are now distinguished from plan usage limits; 5xx/529 errors show a link to
status.claude.com; unknown slash commands suggest the closest match
· Reduced memory footprint for file reads, edits, and syntax highlighting by loading language grammars on demand
· Added "verbose" indicator when viewing the detailed transcript (Ctrl+O)
· Added a warning at startup when prompt caching is disabled via DISABLE_PROMPT_CACHING* environment variables
· Fixed paste not working in the /login code prompt (regression in 2.1.105)
· Fixed subscribers who set DISABLE_TELEMETRY falling back to 5-minute prompt cache TTL instead of 1 hour
· Fixed Agent tool prompting for permission in auto mode when the safety classifier's transcript exceeded its context
window
· Fixed Bash tool producing no output when CLAUDE_ENV_FILE (e.g. ~/.zprofile) ends with a # comment line
· Fixed claude --resume <session-id> losing the session's custom name and color set via /rename
· Fixed session titles showing placeholder example text when the first message is a short greeting
· Fixed terminal escape codes appearing as garbage text in the prompt input after --teleport
· Fixed /feedback retry: pressing Enter to resubmit after a failure now works without first editing the description
· Fixed --teleport and --resume <id> precondition errors (e.g. dirty git tree, session not found) exiting silently instead
of showing the error message
· Fixed Remote Control session titles set in the web UI being overwritten by auto-generated titles after the third message
· Fixed --resume truncating sessions when the transcript contained a self-referencing message
· Fixed transcript write failures (e.g., disk full) being silently dropped instead of being logged
· Fixed diacritical marks (accents, umlauts, cedillas) being dropped from responses when the language setting is configured
· Fixed policy-managed plugins never auto-updating when running from a different project than where they were first
installed
Version 2.1.109:
· Improved the extended-thinking indicator with a rotating progress hint