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

43 KiB
Raw Blame History

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