|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 2.1.101 |
| 4 | + |
| 5 | +- Added `/team-onboarding` command to generate a teammate ramp-up guide from your local Claude Code usage |
| 6 | +- 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) |
| 7 | +- `/ultraplan` and other remote-session features now auto-create a default cloud environment instead of requiring web setup first |
| 8 | +- Improved brief mode to retry once when Claude responds with plain text instead of a structured message |
| 9 | +- Improved focus mode: Claude now writes more self-contained summaries since it knows you only see its final message |
| 10 | +- 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 |
| 11 | +- Improved rate-limit retry messages to show which limit was hit and when it resets instead of an opaque seconds countdown |
| 12 | +- Improved refusal error messages to include the API-provided explanation when available |
| 13 | +- Improved `claude -p --resume <name>` to accept session titles set via `/rename` or `--name` |
| 14 | +- Improved settings resilience: an unrecognized hook event name in `settings.json` no longer causes the entire file to be ignored |
| 15 | +- Improved plugin hooks from plugins force-enabled by managed settings to run when `allowManagedHooksOnly` is set |
| 16 | +- Improved `/plugin` and `claude plugin update` to show a warning when the marketplace could not be refreshed, instead of silently reporting a stale version |
| 17 | +- 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 |
| 18 | +- 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 |
| 19 | +- Improved SDK `query()` to clean up subprocess and temp files when consumers `break` from `for await` or use `await using` |
| 20 | +- Fixed a command injection vulnerability in the POSIX `which` fallback used by LSP binary detection |
| 21 | +- Fixed a memory leak where long sessions retained dozens of historical copies of the message list in the virtual scroller |
| 22 | +- Fixed `--resume`/`--continue` losing conversation context on large sessions when the loader anchored on a dead-end branch instead of the live conversation |
| 23 | +- Fixed `--resume` chain recovery bridging into an unrelated subagent conversation when a subagent message landed near a main-chain write gap |
| 24 | +- Fixed a crash on `--resume` when a persisted Edit/Write tool result was missing its `file_path` |
| 25 | +- Fixed a hardcoded 5-minute request timeout that aborted slow backends (local LLMs, extended thinking, slow gateways) regardless of `API_TIMEOUT_MS` |
| 26 | +- Fixed `permissions.deny` rules not overriding a PreToolUse hook's `permissionDecision: "ask"` — previously the hook could downgrade a deny into a prompt |
| 27 | +- Fixed `--setting-sources` without `user` causing background cleanup to ignore `cleanupPeriodDays` and delete conversation history older than 30 days |
| 28 | +- Fixed Bedrock SigV4 authentication failing with 403 when `ANTHROPIC_AUTH_TOKEN`, `apiKeyHelper`, or `ANTHROPIC_CUSTOM_HEADERS` set an Authorization header |
| 29 | +- Fixed `claude -w <name>` failing with "already exists" after a previous session's worktree cleanup left a stale directory |
| 30 | +- Fixed subagents not inheriting MCP tools from dynamically-injected servers |
| 31 | +- Fixed sub-agents running in isolated worktrees being denied Read/Edit access to files inside their own worktree |
| 32 | +- Fixed sandboxed Bash commands failing with `mktemp: No such file or directory` after a fresh boot |
| 33 | +- Fixed `claude mcp serve` tool calls failing with "Tool execution failed" in MCP clients that validate `outputSchema` |
| 34 | +- Fixed `RemoteTrigger` tool's `run` action sending an empty body and being rejected by the server |
| 35 | +- 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 |
| 36 | +- 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 |
| 37 | +- Fixed `/btw` writing a copy of the entire conversation to disk on every use |
| 38 | +- Fixed `/context` Free space and Messages breakdown disagreeing with the header percentage |
| 39 | +- 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 |
| 40 | +- 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 |
| 41 | +- Fixed `ctrl+]`, `ctrl+\`, and `ctrl+^` keybindings not firing in terminals that send raw C0 control bytes (Terminal.app, default iTerm2, xterm) |
| 42 | +- Fixed `/login` OAuth URL rendering with padding that prevented clean mouse selection |
| 43 | +- 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 |
| 44 | +- Fixed crash when `settings.json` env values are numbers instead of strings |
| 45 | +- 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 |
| 46 | +- Fixed custom keybindings (`~/.claude/keybindings.json`) not loading on Bedrock, Vertex, and other third-party providers |
| 47 | +- Fixed `claude --continue -p` not correctly continuing sessions created by `-p` or the SDK |
| 48 | +- 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 |
| 49 | +- Fixed `/insights` sometimes omitting the report file link from its response |
| 50 | +- [VSCode] Fixed the file attachment below the chat input not clearing when the last editor tab is closed |
| 51 | + |
| 52 | +## 2.1.98 |
| 53 | + |
| 54 | +- 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 |
| 55 | +- 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 |
| 56 | +- Added Monitor tool for streaming events from background scripts |
| 57 | +- 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 |
| 58 | +- Added `--exclude-dynamic-system-prompt-sections` flag to print mode for improved cross-user prompt caching |
| 59 | +- Added `workspace.git_worktree` to the status line JSON input, set whenever the current directory is inside a linked git worktree |
| 60 | +- 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 |
| 61 | +- LSP: Claude Code now identifies itself to language servers via `clientInfo` in the initialize request |
| 62 | +- Fixed a Bash tool permission bypass where a backslash-escaped flag could be auto-allowed as read-only and lead to arbitrary code execution |
| 63 | +- Fixed compound Bash commands bypassing forced permission prompts for safety checks and explicit ask rules in auto and bypass-permissions modes |
| 64 | +- Fixed read-only commands with env-var prefixes not prompting unless the var is known-safe (`LANG`, `TZ`, `NO_COLOR`, etc.) |
| 65 | +- Fixed redirects to `/dev/tcp/...` or `/dev/udp/...` not prompting instead of auto-allowing |
| 66 | +- Fixed stalled streaming responses timing out instead of falling back to non-streaming mode |
| 67 | +- Fixed 429 retries burning all attempts in ~13s when the server returns a small `Retry-After` — exponential backoff now applies as a minimum |
| 68 | +- Fixed MCP OAuth `oauth.authServerMetadataUrl` config override not being honored on token refresh after restart, affecting ADFS and similar IdPs |
| 69 | +- Fixed capital letters being dropped to lowercase on xterm and VS Code integrated terminal when the kitty keyboard protocol is active |
| 70 | +- Fixed macOS text replacements deleting the trigger word instead of inserting the substitution |
| 71 | +- Fixed `--dangerously-skip-permissions` being silently downgraded to accept-edits mode after approving a write to a protected path via Bash |
| 72 | +- Fixed managed-settings allow rules remaining active after an admin removed them, until process restart |
| 73 | +- Fixed `permissions.additionalDirectories` changes not applying mid-session — removed directories lose access immediately and added ones work without restart |
| 74 | +- Fixed removing a directory from `additionalDirectories` revoking access to the same directory passed via `--add-dir` |
| 75 | +- Fixed `Bash(cmd:*)` and `Bash(git commit *)` wildcard permission rules failing to match commands with extra spaces or tabs |
| 76 | +- Fixed `Bash(...)` deny rules being downgraded to a prompt for piped commands that mix `cd` with other segments |
| 77 | +- Fixed false Bash permission prompts for `cut -d /`, `paste -d /`, `column -s /`, `awk '{print $1}' file`, and filenames containing `%` |
| 78 | +- Fixed permission rules with names matching JavaScript prototype properties (e.g. `toString`) causing `settings.json` to be silently ignored |
| 79 | +- Fixed agent team members not inheriting the leader's permission mode when using `--dangerously-skip-permissions` |
| 80 | +- Fixed a crash in fullscreen mode when hovering over MCP tool results |
| 81 | +- Fixed copying wrapped URLs in fullscreen mode inserting spaces at line breaks |
| 82 | +- Fixed file-edit diffs disappearing from the UI on `--resume` when the edited file was larger than 10KB |
| 83 | +- 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 |
| 84 | +- Fixed `/export` not honoring absolute paths and `~`, and silently rewriting user-supplied extensions to `.txt` |
| 85 | +- Fixed `/effort max` being denied for unknown or future model IDs |
| 86 | +- Fixed slash command picker breaking when a plugin's frontmatter `name` is a YAML boolean keyword |
| 87 | +- Fixed rate-limit upsell text being hidden after message remounts |
| 88 | +- Fixed MCP tools with `_meta["anthropic/maxResultSizeChars"]` not bypassing the token-based persist layer |
| 89 | +- 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 |
| 90 | +- Fixed `DISABLE_AUTOUPDATER` not fully suppressing the npm registry version check and symlink modification on npm-based installs |
| 91 | +- Fixed a memory leak where Remote Control permission handler entries were retained for the lifetime of the session |
| 92 | +- Fixed background subagents that fail with an error not reporting partial progress to the parent agent |
| 93 | +- Fixed prompt-type Stop/SubagentStop hooks failing on long sessions, and hook evaluator API errors showing "JSON validation failed" instead of the real message |
| 94 | +- Fixed feedback survey rendering when dismissed |
| 95 | +- Fixed Bash `grep -f FILE` / `rg -f FILE` not prompting when reading a pattern file outside the working directory |
| 96 | +- Fixed stale subagent worktree cleanup removing worktrees that contain untracked files |
| 97 | +- Fixed `sandbox.network.allowMachLookup` not taking effect on macOS |
| 98 | +- Improved `/resume` filter hint labels and added project/worktree/branch names in the filter indicator |
| 99 | +- Improved footer indicators (Focus, notifications) to stay on the mode-indicator row instead of wrapping at narrow terminal widths |
| 100 | +- Improved `/agents` with a tabbed layout: a Running tab shows live subagents, and the Library tab adds Run agent and View running instance actions |
| 101 | +- Improved `/reload-plugins` to pick up plugin-provided skills without requiring a restart |
| 102 | +- Improved Accept Edits mode to auto-approve filesystem commands prefixed with safe env vars or process wrappers |
| 103 | +- Improved Vim mode: `j`/`k` in NORMAL mode now navigate history and select the footer pill at the input boundary |
| 104 | +- Improved hook errors in the transcript to include the first line of stderr for self-diagnosis without `--debug` |
| 105 | +- Improved OTEL tracing: interaction spans now correctly wrap full turns under concurrent SDK calls, and headless turns end spans per-turn |
| 106 | +- Improved transcript entries to carry final token usage instead of streaming placeholders |
| 107 | +- Updated the `/claude-api` skill to cover Managed Agents alongside Claude API |
| 108 | +- [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 |
| 109 | +- Fixed `CLAUDE_CODE_MAX_CONTEXT_TOKENS` to honor `DISABLE_COMPACT` when it is set. |
| 110 | +- Dropped `/compact` hints when `DISABLE_COMPACT` is set. |
| 111 | + |
3 | 112 | ## 2.1.97 |
4 | 113 |
|
5 | 114 | - Added focus view toggle (`Ctrl+O`) in `NO_FLICKER` mode showing prompt, one-line tool summary with edit diffstats, and final response |
|
0 commit comments