Skip to main content

Claude Code v2.1.69: The Biggest Release Yet with 100+ Changes

Claude Code v2.1.69 is the largest update in the 2.1.x series. New /claude-api skill, InstructionsLoaded hook, ${CLAUDE_SKILL_DIR} variable, 10 new voice languages, agent worktree isolation, and massive memory/performance improvements.

March 4, 2026 10 min read By ClaudeWorld

Claude Code v2.1.69 is the largest single release in the entire 2.1.x series, shipping over 100 individual changes spanning new features, security hardening, bug fixes, and performance optimizations. This is not an incremental patch — it is a landmark update that touches nearly every layer of the product, from the hook system and skill architecture to memory management, MCP authentication, and the VS Code extension. Whether you build skills, manage enterprise deployments, or simply use Claude Code daily at the terminal, this release has something significant for you.

New Developer Features

The /claude-api Skill

The headline addition is a brand-new built-in skill invoked with /claude-api. It is purpose-built for developers who are constructing applications on top of the Claude API and Anthropic SDK. Rather than switching between documentation tabs and your editor, you can now ask Claude Code to scaffold API calls, handle streaming responses, manage tool use payloads, and debug SDK integration issues — all within the same session where you are writing the rest of your application code.

InstructionsLoaded Hook Event

A new lifecycle hook called InstructionsLoaded fires every time Claude Code loads a CLAUDE.md file or any rule file under .claude/rules/*.md. This opens the door to advanced automation: you can now programmatically validate, transform, or log instruction files the moment they are parsed. Combined with the new support for HTTP hooks (described below), this makes it straightforward to send instruction metadata to an external service for auditing or analytics.

${CLAUDE_SKILL_DIR} Variable

Skills can now reference their own directory at runtime using the ${CLAUDE_SKILL_DIR} variable. Previously, skills that needed to read sibling files or templates had to hard-code paths or rely on fragile relative path assumptions. With this variable, a skill’s SKILL.md can point to companion scripts, data files, or templates portably — no matter where the skill is installed.

Agent and Hook Identity

Hook events now include agent_id and agent_type fields, so hook handlers can distinguish which agent triggered a given event. This is essential for teams running multiple specialized agents (e.g., a code-review agent vs. a test-generation agent) that share the same hook infrastructure but require different handling logic.

HTTP Hooks

In addition to shell-command hooks, you can now define hooks that POST a JSON payload to a URL. This eliminates the need for a local wrapper script when your hook logic already lives in a web service, a serverless function, or an internal webhook receiver.

Declarative Worktree Isolation for Agents

Agent definitions now support isolation: worktree, which causes the agent to run inside its own Git worktree. This provides a clean working directory without affecting your main checkout — ideal for agents that perform exploratory refactors, run destructive test suites, or generate throwaway code that should never touch your primary branch.

Voice and Accessibility

Voice speech-to-text support doubles from 10 to 20 languages in this release. The ten new additions are:

LanguageLanguage
RussianGreek
PolishCzech
TurkishDanish
DutchSwedish
UkrainianNorwegian

This expansion makes Claude Code significantly more accessible to developers who prefer dictating prompts in their native language, and it lowers the barrier for international teams adopting voice-driven workflows.

Configuration and Plugin Management

Several new settings give administrators and power users finer control over Claude Code’s behavior:

SettingPurpose
sandbox.enableWeakerNetworkIsolationAllows Go-based CLI tools (gh, gcloud, terraform) that use custom proxy mechanisms to function inside the macOS sandbox
includeGitInstructionsToggle the built-in commit and PR workflow instructions on or off, useful if your team supplies its own Git conventions via CLAUDE.md
pluginTrustMessageCustom message shown in managed environments when a plugin requests trust approval
oauth.authServerMetadataUrlSpecify an OpenID Connect / OAuth discovery URL for MCP servers, simplifying federated auth setups
pathPattern in strictKnownMarketplacesFine-grained path matching for plugin marketplace trust boundaries

Additional quality-of-life additions:

  • /reload-plugins command — Apply plugin configuration changes without restarting your session.
  • Plugin source type git-subdir — Install plugins from a subdirectory within a Git repository, not just the repo root.
  • Manual URL paste fallback for MCP OAuth — When the automatic browser flow fails, you can now paste the callback URL manually to complete authentication.
  • Effort level in the UI — The logo and spinner now display your current effort setting (e.g., “with low effort”), so you always know how hard Claude is thinking.

Security Fixes

This release closes four security issues that are worth understanding in detail:

Nested skill discovery in gitignored directories. Previously, Claude Code’s recursive skill scanner could descend into directories like node_modules even when they were listed in .gitignore. A malicious or misconfigured package could therefore inject a SKILL.md that would be loaded silently. The scanner now respects .gitignore rules during skill discovery.

Trust dialog enabling all MCP servers. On a fresh first run, the trust dialog could silently enable every server defined in .mcp.json without explicit per-server consent. This has been corrected so that each server requires individual approval.

Symlink bypass for parent directory writes. A carefully constructed symlinked parent directory could allow a sandboxed write operation to escape the working directory boundary. The sandbox now resolves symlinks before evaluating path permissions.

Hook command execution without workspace trust. The statusLine and fileSuggestion hook commands could execute even when the workspace had not been granted trust. These commands are now gated behind the same trust check as all other hook types.

Major Bug Fixes

With over 50 individual bug fixes in this release, the following represent the most impactful corrections:

Memory and Stability

  • Agent Teams memory leak. Completed teammates were never garbage-collected, causing unbounded memory growth in long-running sessions that spawn many agents. Finished agents are now cleaned up promptly.
  • Multi-GB memory spike on commit. When staging a commit in a repository with large untracked binary files, Claude Code could consume multiple gigabytes of memory reading those files into the diff buffer. The diff logic now skips untracked binaries.
  • React Compiler memoCache leak. The memoization cache used by the React Compiler integration was not releasing entries, leading to gradual memory inflation during extended sessions.
  • REPL render scope leak. Render scopes created during REPL evaluation were not being disposed, accumulating over time.
  • Hook event accumulation. Emitted hook events were retained indefinitely in an internal list. They are now released after delivery.

Platform-Specific

  • macOS keychain corruption. Running multiple OAuth-authenticated MCP servers could corrupt the macOS keychain entries, requiring manual cleanup. Token storage now uses isolated keychain items per server.
  • Ghost dotfiles on Linux. After sandboxed Bash commands completed on Linux, phantom dotfiles (e.g., .bash_history) could appear in the working directory. The sandbox cleanup routine now removes these artifacts.
  • Literal nul file on Windows. Certain operations created a file literally named nul instead of writing to the Windows NUL device. The path handling now correctly identifies the Windows null device.
  • Concurrent config writes on Windows. Simultaneous writes to configuration files could produce corrupt JSON. File writes now use atomic rename-on-close.

MCP and Authentication

  • OAuth token refresh race condition. When multiple MCP requests triggered a token refresh simultaneously, the competing refresh attempts could invalidate each other’s tokens. Refresh operations are now serialized per server.

Agent and Skill

  • Teammates spawning nested teammates. Under certain conditions, an agent teammate could inadvertently spawn its own nested teammates, creating runaway agent proliferation. Teammate agents are now prevented from spawning further teammates.
  • Skill descriptions with colons. Skill SKILL.md files whose description field contained a colon character failed to parse. The YAML parser now handles colons in description values correctly.

Performance Improvements

Performance work in v2.1.69 is unusually broad, targeting memory footprint, rendering speed, and network efficiency.

ImprovementImpact
Deferred Yoga WASM loading~16 MB reduction in baseline memory
Isolated spinner animation loopSpinner runs on a dedicated 50ms timer instead of re-rendering the entire UI
React Compiler integrationAutomated memoization reduces unnecessary re-renders across the UI
Compaction preserves images for prompt cacheFewer cache misses when compacted conversations include image content
MCP binary content saved to diskDecoded binary payloads are written to temporary files instead of held in memory
Reduced prompt input re-renders~74% fewer re-render cycles in the prompt input component
Startup memory reduction~426 KB saved during initialization
Remote Control poll rate reductionPolling frequency reduced by approximately 300x, significantly lowering CPU and network overhead for idle remote sessions

Together, these changes make long-running Claude Code sessions noticeably more responsive and lighter on system resources, especially on machines where multiple agents or teammates are active.

VS Code Extension

The VS Code integration receives several high-visibility improvements in this release:

  • Spark icon session list. A new spark icon in the activity bar provides quick access to your session history, making it easier to switch between conversations without opening a full panel.
  • Full markdown plan view with comments. Plans generated by Claude are now rendered as full markdown with inline comment support, giving you a richer review experience directly inside the editor.
  • Native MCP server management (/mcp). A dedicated dialog for managing MCP server connections replaces the previous manual configuration workflow. You can add, remove, and authenticate servers without editing JSON files.
  • Compaction display as collapsible card. When a conversation is compacted, the compaction summary is shown as a collapsible card rather than a wall of text, keeping the chat view clean.
  • RTL text rendering fix. Right-to-left languages (Arabic, Hebrew, etc.) now render correctly in the chat panel, fixing a long-standing display issue for developers working in those languages.

How to Update

To update to Claude Code v2.1.69:

  1. Check your current version with claude --version
  2. Update using npm install -g @anthropic-ai/claude-code@latest or your preferred package manager
  3. Restart any active Claude Code sessions to pick up all changes
  4. If you use MCP OAuth, re-authenticate your servers to benefit from the keychain and token refresh fixes
  5. Review your .claude/ directory for any skills loaded from gitignored paths — the security fix may change which skills are discovered

Given the scope of this release, it is worth spending a few minutes exploring the new /claude-api skill, testing the ${CLAUDE_SKILL_DIR} variable in your custom skills, and verifying that your hook configurations work as expected with the new InstructionsLoaded event.