Claude docs changes for April 21st, 2026 [diff]

Executive Summary

  • Claude Haiku 3 (claude-3-haiku-20240307) was officially retired on April 20, 2026 — all API requests to this model now return an error; migrate to Claude Haiku 4.5
  • A new workspace_restricted_developer role was added to the Admin API for workspace members, along with response examples for invite, user, and workspace member delete endpoints
  • Terminal configuration documentation was completely rewritten with a symptom-based navigation structure, improving discoverability for common terminal issues
  • Claude Code Desktop now supports pre-configuring SSH connections for teams via the sshConfigs managed setting
  • Agent hooks (type: "agent") are now explicitly marked as experimental in both hooks reference and hooks guide

New Claude Code versions

2.1.116

New features

  • /resume on large sessions is significantly faster (up to 67% on 40MB+ sessions) and handles sessions with many dead-fork entries more efficiently
  • Faster MCP startup when multiple stdio servers are configured; resources/templates/list is now deferred to first @-mention
  • /terminal-setup now configures scroll sensitivity in VS Code, Cursor, and Windsurf for smoother fullscreen scrolling
  • Thinking spinner now shows progress inline ("still thinking", "thinking more", "almost done thinking"), replacing the separate hint row
  • /config search now matches option values (e.g. searching "vim" finds the Editor mode setting)
  • /doctor can now be opened while Claude is responding, without waiting for the current turn to finish
  • /reload-plugins and background plugin auto-update now auto-install missing plugin dependencies from marketplaces you've already added
  • Agent frontmatter hooks: now fire when running as a main-thread agent via --agent

Existing feature improvements

  • Bash tool now surfaces a hint when gh commands hit GitHub's API rate limit, so agents can back off instead of retrying
  • The Usage tab in Settings now shows your 5-hour and weekly usage immediately and no longer fails when the usage endpoint is rate-limited
  • Slash command menu now shows "No commands match" when your filter has zero results, instead of disappearing
  • Security: sandbox auto-allow no longer bypasses the dangerous-path safety check for rm/rmdir targeting /, $HOME, or other critical system directories

Major bug fixes

  • Fixed Devanagari and other Indic scripts rendering with broken column alignment in the terminal UI
  • Fixed Ctrl+- not triggering undo in terminals using the Kitty keyboard protocol (iTerm2, Ghostty, kitty, WezTerm, Windows Terminal)
  • Fixed Cmd+Left/Right not jumping to line start/end in terminals that use the Kitty keyboard protocol
  • Fixed Ctrl+Z hanging the terminal when Claude Code is launched via a wrapper process (e.g. npx, bun run)
  • Fixed scrollback duplication in inline mode where resizing the terminal or large output bursts would repeat earlier conversation history
  • Fixed modal search dialogs overflowing the screen at short terminal heights, hiding the search box and keyboard hints
  • Fixed scattered blank cells and disappearing composer chrome in the VS Code integrated terminal during scrolling
  • Fixed an intermittent API 400 error related to cache control TTL ordering
  • Fixed /branch rejecting conversations with transcripts larger than 50MB
  • Fixed /resume silently showing an empty conversation on large session files instead of reporting the load error
  • Fixed /plugin Installed tab showing the same item twice when it appears under Needs attention or Favorites
  • Fixed /update and /tui not working after entering a worktree mid-session

Claude Code changes

Changed documents

Agent SDK / TypeScript [Source]

  • Added new SDKTaskUpdatedMessage type to the SDK message union — emitted when a background task transitions state (e.g. runningcompleted), with a patch object containing optional status, description, end_time, total_paused_ms, error, and is_backgrounded fields. [line 791] [Source]

Explore the .claude directory [Source]

  • Added note that on Windows, ~/.claude resolves to %USERPROFILE%\.claude.
  • Added new "Choose the right file" table mapping common customization goals (context, permissions, hooks, env vars, etc.) to the correct file and reference. [line 117] [Source]
  • Added new "Troubleshoot configuration" section with a symptom/cause/fix table covering common issues: hooks not firing, settings ignored, skill file placement, MCP server problems, and more. [line 165] [Source]

Commands [Source]

  • /terminal-setup description updated: Cursor, Windsurf, and Zed now listed as terminals requiring setup (Alacritty removed from the inline description).
  • /ultrareview free runs for Pro and Max now expire on May 5, 2026 (previously described as "one-time" with no expiry). [line 84] [Source]

Common Workflows [Source]

  • Added new section "Work in notes and non-code folders" describing how Claude Code works in any directory including notes vaults and documentation folders. [line 422] [Source]

Desktop [Source]

  • Added new section "Pre-configure SSH connections for your team" showing how admins can distribute SSH connections via sshConfigs in managed settings. Includes a full JSON example and field descriptions. [line 483] [Source]
  • Added sshConfigs to the managed settings table. [line 527] [Source]

Environment Variables [Source]

  • CLAUDE_ENV_FILE description clarified: the file's contents are run as a script preamble in the same shell process (not just sourced), making exports visible to the subsequent command. [line 144] [Source]

Hooks Guide [Source]

  • The direnv integration example now adds a SessionStart hook alongside CwdChanged to load env vars for the initial directory, not just on directory changes. Commands changed from >> to > to overwrite rather than append. [line 299] [Source]
  • Added note that direnv allow must be run once per directory, and that devbox/nix can use the same pattern.
  • The if field description updated: it now fires when any subcommand of a compound Bash command matches (e.g. npm test && git push triggers Bash(git *)), and always fires when the command is too complex to parse. [line 645] [Source]
  • if field no longer works on PermissionDenied events — supported events are now PreToolUse, PostToolUse, PostToolUseFailure, and PermissionRequest only. [line 646] [Source]
  • Agent hooks (type: "agent") now explicitly marked as experimental with a warning to prefer command hooks for production workflows. [line 695] [Source]

Hooks Reference [Source]

  • The if field in common hook fields now clarifies it fires when any Bash subcommand matches (after stripping VAR=value assignments), and that it always runs when a command is too complex to parse. Also notes if accepts exactly one permission rule with no &&/||/list syntax. [line 277] [Source]
  • if field no longer applies to PermissionDenied events — removed from supported event list. [line 281] [Source]
  • Agent hooks marked as experimental in both the hook type list and the agent-based hooks section. [lines 268-270] [Source]

Interactive Mode [Source]

  • Added u (undo) to the Vim NORMAL mode key table. [line 151] [Source]
  • Shift+Enter terminal compatibility table updated: Warp and Apple Terminal added to "works natively"; VS Code, Cursor, Windsurf, Alacritty, and Zed listed as needing /terminal-setup. [line 58] [Source]

Settings [Source]

  • Added sshConfigs setting: allows pre-configuring SSH connections for the Desktop environment dropdown. Supports id, name, sshHost (required), and sshPort, sshIdentityFile, startDirectory (optional). Read from managed and user settings only. [line 201] [Source]

Terminal Config [Source]

  • Page completely rewritten with a symptom-based structure. Now opens with a list of common problems (Shift+Enter submits, Option key shortcuts do nothing, no notification sound, etc.) and links directly to the fix. Each section is self-contained. Notable new/reorganized sections include: multiline prompts with a terminal compatibility table, enabling Option key as Meta per terminal, setting up Notification hooks for sound alerts, and a consolidated tmux configuration block combining allow-passthrough and extended-keys settings.

Ultrareview [Source]

  • Pro and Max free ultrareview runs now have an expiry date: 3 free runs are available through May 5, 2026. After that date (or after the 3 runs are used), each review is billed as extra usage. [line 41] [Source]

VS Code [Source]

  • Extended thinking description updated: Claude's reasoning now appears as collapsed blocks in the conversation; Ctrl+O expands or collapses all thinking blocks in the session. [line 76] [Source]

API changes

Changed documents

Admin API Reference [Source]

  • Added InviteDeleteResponse object type ({ id, type: "invite_deleted" }) to the API reference. [line 106] [Source]
  • Added UserDeleteResponse object type ({ id, type: "user_deleted" }) to the API reference. [line 180] [Source]
  • Added new workspace_restricted_developer role to workspace member role enum and MemberDeleteResponse type to the workspaces section. [line 254] [Source]

Admin API - Create Invite [Source]

  • Added HTTP 200 response examples showing the full invite object structure. [line 101] [Source]

Admin API - Delete Invite [Source]

  • Added HTTP 200 response example showing the invite_deleted response object. [line 35] [Source]

Admin API - Create Workspace [Source]

  • Added HTTP 200 response examples showing the full workspace object structure including data_residency fields. [line 100] [Source]

Admin API - Workspace Members [Source]

  • Added workspace_restricted_developer as a valid workspace member role. [line 42] [Source]
  • Added MemberDeleteResponse type definition. [line 62] [Source]

Admin API - Create Workspace Member [Source]

  • Added workspace_restricted_developer as a valid role for creating workspace members. [line 20] [Source]
  • Added HTTP 200 response examples. [line 81] [Source]

Admin API - Update Workspace Member [Source]

Model Deprecations [Source]

  • Claude Haiku 3 (claude-3-haiku-20240307) status updated from "Deprecated" to "Retired" (retired April 20, 2026). Added retirement notice to the deprecation history entry. [line 73] [Source]

Models Migration Guide [Source]

  • Removed the Haiku 3 → Haiku 4.5 migration code example since Haiku 3 is now retired. [line 569] [Source]

Content Moderation Guide [Source]

  • Updated all cost examples and code samples to use Claude Haiku 4.5 instead of the now-retired Claude Haiku 3. New pricing reflects $1.00/$5.00 per MTok (input/output) vs the old $0.25/$1.25 rates. [line 76] [Source]

Legal Summarization Guide [Source]

  • Updated cost comparison to use Claude Haiku 4.5 pricing ($1.00/$5.00 per MTok) instead of retired Haiku 3 ($0.25/$1.25 per MTok). [line 80] [Source]

Prompt Caching [Source]

  • Removed Claude Haiku 3 from the minimum cacheable prompt length table. [line 254] [Source]

Claude on Amazon Bedrock [Source]

  • Removed Claude Haiku 3 (anthropic.claude-3-haiku-20240307-v1:0) from the Bedrock model availability table. [line 85] [Source]

Claude on Vertex AI [Source]

  • Removed Claude Haiku 3 (claude-3-haiku@20240307) from the Vertex AI model list. [line 68] [Source]

Rate Limits [Source]

  • Removed Claude Haiku 3 row from the rate limits table. [line 155] [Source]

Release Notes Overview [Source]

  • Added April 20, 2026 entry: Claude Haiku 3 (claude-3-haiku-20240307) has been retired; all requests now return an error. [line 9] [Source]