mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 14:25:51 +00:00
主要变更: - 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 修复
504 lines
43 KiB
Markdown
504 lines
43 KiB
Markdown
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 |