|
|
|
|
@@ -1,5 +1,126 @@
|
|
|
|
|
# Changelog
|
|
|
|
|
|
|
|
|
|
## 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
|
|
|
|
|
|
|
|
|
|
## 2.1.87
|
|
|
|
|
|
|
|
|
|
- Fixed messages in Cowork Dispatch not getting delivered
|
|
|
|
|
|
|
|
|
|
## 2.1.86
|
|
|
|
|
|
|
|
|
|
- Added `X-Claude-Code-Session-Id` header to API requests so proxies can aggregate requests by session without parsing the body
|
|
|
|
|
- Added `.jj` and `.sl` to VCS directory exclusion lists so Grep and file autocomplete don't descend into Jujutsu or Sapling metadata
|
|
|
|
|
- Fixed `--resume` failing with "tool_use ids were found without tool_result blocks" on sessions created before v2.1.85
|
|
|
|
|
- Fixed Write/Edit/Read failing on files outside the project root (e.g., `~/.claude/CLAUDE.md`) when conditional skills or rules are configured
|
|
|
|
|
- Fixed unnecessary config disk writes on every skill invocation that could cause performance issues and config corruption on Windows
|
|
|
|
|
- Fixed potential out-of-memory crash when using `/feedback` on very long sessions with large transcript files
|
|
|
|
|
- Fixed `--bare` mode dropping MCP tools in interactive sessions and silently discarding messages enqueued mid-turn
|
|
|
|
|
- Fixed the `c` shortcut copying only ~20 characters of the OAuth login URL instead of the full URL
|
|
|
|
|
- Fixed masked input (e.g., OAuth code paste) leaking the start of the token when wrapping across multiple lines on narrow terminals
|
|
|
|
|
- Fixed official marketplace plugin scripts failing with "Permission denied" on macOS/Linux since v2.1.83
|
|
|
|
|
- Fixed statusline showing another session's model when running multiple Claude Code instances and using `/model` in one of them
|
|
|
|
|
- Fixed scroll not following new messages after wheel scroll or click-to-select at the bottom of a long conversation
|
|
|
|
|
- Fixed `/plugin` uninstall dialog: pressing `n` now correctly uninstalls the plugin while preserving its data directory
|
|
|
|
|
- Fixed a regression where pressing Enter after clicking could leave the transcript blank until the response arrived
|
|
|
|
|
- Fixed `ultrathink` hint lingering after deleting the keyword
|
|
|
|
|
- Fixed memory growth in long sessions from markdown/highlight render caches retaining full content strings
|
|
|
|
|
- Reduced startup event-loop stalls when many claude.ai MCP connectors are configured (macOS keychain cache extended from 5s to 30s)
|
|
|
|
|
- Reduced token overhead when mentioning files with `@` — raw string content no longer JSON-escaped
|
|
|
|
|
- Improved prompt cache hit rate for Bedrock, Vertex, and Foundry users by removing dynamic content from tool descriptions
|
|
|
|
|
- Memory filenames in the "Saved N memories" notice now highlight on hover and open on click
|
|
|
|
|
- Skill descriptions in the `/skills` listing are now capped at 250 characters to reduce context usage
|
|
|
|
|
- Changed `/skills` menu to sort alphabetically for easier scanning
|
|
|
|
|
- Auto mode now shows "unavailable for your plan" when disabled by plan restrictions (was "temporarily unavailable")
|
|
|
|
|
- [VSCode] Fixed extension incorrectly showing "Not responding" during long-running operations
|
|
|
|
|
- [VSCode] Fixed extension defaulting Max plan users to Sonnet after the OAuth token refreshes (8 hours after login)
|
|
|
|
|
- Read tool now uses compact line-number format and deduplicates unchanged re-reads, reducing token usage
|
|
|
|
|
|
|
|
|
|
## 2.1.85
|
|
|
|
|
|
|
|
|
|
- Added `CLAUDE_CODE_MCP_SERVER_NAME` and `CLAUDE_CODE_MCP_SERVER_URL` environment variables to MCP `headersHelper` scripts, allowing one helper to serve multiple servers
|
|
|
|
|
- Added conditional `if` field for hooks using permission rule syntax (e.g., `Bash(git *)`) to filter when they run, reducing process spawning overhead
|
|
|
|
|
- Added timestamp markers in transcripts when scheduled tasks (`/loop`, `CronCreate`) fire
|
|
|
|
|
- Added trailing space after `[Image #N]` placeholder when pasting images
|
|
|
|
|
- Deep link queries (`claude-cli://open?q=…`) now support up to 5,000 characters, with a "scroll to review" warning for long pre-filled prompts
|
|
|
|
|
- MCP OAuth now follows RFC 9728 Protected Resource Metadata discovery to find the authorization server
|
|
|
|
|
- Plugins blocked by organization policy (`managed-settings.json`) can no longer be installed or enabled, and are hidden from marketplace views
|
|
|
|
|
- PreToolUse hooks can now satisfy `AskUserQuestion` by returning `updatedInput` alongside `permissionDecision: "allow"`, enabling headless integrations that collect answers via their own UI
|
|
|
|
|
- `tool_parameters` in OpenTelemetry tool_result events are now gated behind `OTEL_LOG_TOOL_DETAILS=1`
|
|
|
|
|
- Fixed `/compact` failing with "context exceeded" when the conversation has grown too large for the compact request itself to fit
|
|
|
|
|
- Fixed `/plugin enable` and `/plugin disable` failing when a plugin's install location differs from where it's declared in settings
|
|
|
|
|
- Fixed `--worktree` exiting with an error in non-git repositories before the `WorktreeCreate` hook could run
|
|
|
|
|
- Fixed `deniedMcpServers` setting not blocking claude.ai MCP servers
|
|
|
|
|
- Fixed `switch_display` in the computer-use tool returning "not available in this session" on multi-monitor setups
|
|
|
|
|
- Fixed crash when `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER`, or `OTEL_TRACES_EXPORTER` is set to `none`
|
|
|
|
|
- Fixed diff syntax highlighting not working in non-native builds
|
|
|
|
|
- Fixed MCP step-up authorization failing when a refresh token exists — servers requesting elevated scopes via `403 insufficient_scope` now correctly trigger the re-authorization flow
|
|
|
|
|
- Fixed memory leak in remote sessions when a streaming response is interrupted
|
|
|
|
|
- Fixed persistent ECONNRESET errors during edge connection churn by using a fresh TCP connection on retry
|
|
|
|
|
- Fixed prompts getting stuck in the queue after running certain slash commands, with up-arrow unable to retrieve them
|
|
|
|
|
- Fixed Python Agent SDK: `type:'sdk'` MCP servers passed via `--mcp-config` are no longer dropped during startup
|
|
|
|
|
- Fixed raw key sequences appearing in the prompt when running over SSH or in the VS Code integrated terminal
|
|
|
|
|
- Fixed Remote Control session status staying stuck on "Requires Action" after a permission is resolved
|
|
|
|
|
- Fixed shift+enter and meta+enter being intercepted by typeahead suggestions instead of inserting newlines
|
|
|
|
|
- Fixed stale content bleeding through when scrolling up during streaming
|
|
|
|
|
- Fixed terminal left in enhanced keyboard mode after exit in Ghostty, Kitty, WezTerm, and other terminals supporting the Kitty keyboard protocol — Ctrl+C and Ctrl+D now work correctly after quitting
|
|
|
|
|
- Improved @-mention file autocomplete performance on large repositories
|
|
|
|
|
- Improved PowerShell dangerous command detection
|
|
|
|
|
- Improved scroll performance with large transcripts by replacing WASM yoga-layout with a pure TypeScript implementation
|
|
|
|
|
- Reduced UI stutter when compaction triggers on large sessions
|
|
|
|
|
|
|
|
|
|
## 2.1.84
|
|
|
|
|
|
|
|
|
|
- Added PowerShell tool for Windows as an opt-in preview. Learn more at https://code.claude.com/docs/en/tools-reference#powershell-tool
|
|
|
|
|
|