Change8

v2.1.98

Claude Code
9 features38 fixes10 improvementsclihooksmcpsdkvertexvscode

Summary

This release introduces significant security and configuration enhancements, including an interactive Vertex AI setup wizard and new subprocess sandboxing features for Linux. Numerous bug fixes address critical issues related to Bash command permissions, streaming response fallbacks, and configuration overrides across various modes like fullscreen and resume.

New Features

  • Added interactive Google Vertex AI setup wizard accessible from the login screen for guided configuration of GCP authentication, project, region, credentials, and model pinning.
  • 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.
  • Added `CLAUDE_CODE_SCRIPT_CAPS` environment variable 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 when operating inside a linked git worktree.
  • Added W3C `TRACEPARENT` environment variable to Bash tool subprocesses when OTEL tracing is enabled for correct trace parenting.
  • Enabled LSP client identification to language servers via `clientInfo` in the initialize request.
  • Enabled Accept Edits mode to auto-approve filesystem commands prefixed with safe environment variables or process wrappers.

Bug Fixes

  • Fixed a Bash tool permission bypass where an escaped flag could be auto-allowed as read-only, potentially leading 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 environment variable prefixes not prompting unless the variable is known-safe (e.g., `LANG`, `TZ`).
  • 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 too quickly by ensuring exponential backoff applies as a minimum.
  • Fixed MCP OAuth `oauth.authServerMetadataUrl` configuration override not being honored on token refresh after restart.
  • Fixed capital letters being dropped to lowercase in xterm and VS Code integrated terminals 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 now lose access immediately.
  • 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 commands like `cut -d /` 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 including uneditable resumes, search state wiping, and transient status text.
  • 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 space characters into input when re-holding the push-to-talk key during transcript processing.
  • Fixed `DISABLE_AUTOUPDATER` not fully suppressing the npm registry version check and symlink modification.
  • Fixed a memory leak where Remote Control permission handler entries were retained for the entire 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.
  • 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.
  • Fixed `CLAUDE_CODE_MAX_CONTEXT_TOKENS` not honoring `DISABLE_COMPACT` when set.
  • Fixed VSCode reporting a false-positive "requires git-bash" error on Windows when the path is correctly configured.

Improvements

  • Improved `/resume` filter hint labels and added project/worktree/branch names to the filter indicator.
  • Improved footer indicators (Focus, notifications) to remain on the mode-indicator row instead of wrapping at narrow terminal widths.
  • Improved `/agents` view with a tabbed layout: Running tab for live subagents and Library tab with actions to run or view instances.
  • Improved `/reload-plugins` to pick up plugin-provided skills without requiring a full restart.
  • 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 needing `--debug`.
  • Improved OTEL tracing: interaction spans now correctly wrap full turns under concurrent SDK calls.
  • Improved transcript entries to carry final token usage instead of streaming placeholders.
  • Updated the `/claude-api` skill to cover Managed Agents alongside Claude API.
  • Dropped `/compact` hints when `DISABLE_COMPACT` is set.

Claude Code Documentation

Claude Code v2.1.98 - What's New - Change8