Version tracker

Claude Code changelog & version tracker

Continuously monitored from upstream releases, docs and issues. Routine releases publish automatically and the current version below is limited to a small allowlist of fields; everything else is reviewed by a human before it appears here.

Current version
2.1.268
Verified 2026-09-10 · source ↗

Change timeline

  1. release

    2.1.267 adds maxEffortLevel cap and further prompt-cache stability fixes

    2.1.267 adds a maxEffortLevel setting (global or per-model) that caps effort across all providers including Bedrock/Vertex/Foundry, adds --system-prompt-snapshot off for prompt-iteration workflows, and ships a long list of prompt-cache-reuse fixes (model switching, MCP tool list churn, resumed sessions with reconnecting connectors) plus a fix for a marketplace path-traversal containment bypass on macOS/Linux.

    Source ↗
  2. releasenotice

    Fable 5.1 prompt-caching gap fixed

    Fixed a caching bug that re-sent context attached after tool results as uncached input on every tool-call turn on Fable 5.1. This may bear on earlier reports of Fable 5.1 exhausting usage limits abnormally fast.

    Source ↗
  3. release

    Claude Code 2.1.259 released, npm and GitHub aligned

    Version 2.1.259 shipped Sep 2, 2026, one day after 2.1.258's macOS-12 launch fix. It adds managedMcpServers for org-wide HTTP/SSE MCP provisioning, GitLab MR recognition in the tool summary, and --json output for claude plugin validate, alongside a large set of fixes.

    Source ↗
  4. release

    npm confirms 2.1.257 as latest; version jumped from 2.1.246 across ~11 releases in 6 days

    npm dist-tag and the GitHub releases page both confirm 2.1.257 as current, published 2026-09-01, resolving prior-cycle uncertainty about a version beyond the published record's 2.1.246.

    Source ↗
  5. release

    Claude Code 2.1.251 released (2026-08-28)

    Adds PreModelSwitch/PostModelSwitch hooks, live streaming of foreground subagent tool calls to Remote Control, spend-limit bar in /usage, per-session prompt-cache line in /cost, and new `claude attach/logs/stop/respawn/rm` subcommands. Fixes a symlink-swap path-traversal in file tools, plugin marketplace path-traversal rejection, sandbox read-deny bypass via symlinked search paths, prompt-cache miss after OAuth token refresh, TUI lag from accumulating per-second subagent progress ticks, /mcp reconnect on Remote Control showing wrong error, and stream-json client tool-call merging on resume.

    Source ↗
  6. release

    Claude Code 2.1.247 adds /claude-api cost-optimize and feedback drafting

    Adds SendFeedback tool for /feedback draft reports, spinnerTipsOverride extensions, a one-keystroke 'Yes, and switch to auto mode' option on Bash prompts, and /claude-api cost-optimize to profile spend and walk through caching/token hygiene/batch/effort/model levers. Fixes sub-agent 404s, hook/background overflow wedge on 'Prompt is too long', Bash sandbox deleting dotfile-managed ~/.claude/settings.json symlinks (nix/home-manager/stow), and unbounded memory growth from unwritable hook output files.

    Source ↗
  7. release

    Claude Code 2.1.245 fixes startup crash on glibc 2.44 distributions (Arch, CachyOS, Fedora Rawhide)

    Sole entry for the patch release. Startup crash on glibc 2.44 (Arch Linux, CachyOS, Fedora Rawhide) is fixed.

    Source ↗
  8. release

    Claude Code 2.1.237 fixes prompt caching behind LLM gateways/custom base URLs, adds Concise output style

    Prompt caching now works for sessions using an LLM gateway or custom base URL. Adds a built-in 'Concise' output style that leads with results and skips preamble/narration while doing the work just as thoroughly. Available under Output style in /config.

    Source ↗
  9. release

    Claude Code 2.1.236 adds ANTHROPIC_DEFAULT_MODEL, cross-session notify_when_idle, sandbox precedence fix

    ANTHROPIC_DEFAULT_MODEL env var sets the model new sessions start on, while a /model pick still overrides and persists. Adds notify_when_idle to SendMessage (one-shot, no polling) on macOS and Linux. macOS sandbox wildcard read-deny rules now take precedence inside allowed read regions and can't be bypassed by renaming. Fixes clipboard/housekeeping breaking after a session switched into a deleted directory (since 2.1.229) and fullscreen renderer failing permanently after a single failed start.

    Source ↗
  10. release

    v2.1.229

    ## What's changed - Documented `claude remote-control --continue` for resuming the most recent Remote Control session - Added server-supplied Claude Code hook support for self-hosted runner sessions, matching managed-environment behavior - Added SSE keepalive pings to gateway streaming responses during long thinking pauses, preventing idle-timeout disconnects on Vertex and Bedrock upstreams - Added plugin marketplace `command` sources: a local command (e.g. an IDE) prints the plugin directory, which is re-resolved each session and applied without a restart; `mode: "link"` uses it in place - `ListAgents` now marks disconnected Remote Control sessions as `offline` and labels your cloud sessions as `cloud` - Fixed long responses partly disappearing while streaming and being printed twice in the terminal - Fixed a crash to the error screen (including on `--resume` of the affected session) when a tool call had a non-string `glob`, `file_path`, or `command` value - Fixed a RangeError crash when a progress bar or markdown table rendered in a very narrow terminal window (could also crash `claude --continue`/`--resume` at startup) - Fixed a crash on Windows when a tool call or message referenced a file by an extended-length (`\\?\`) or UNC path - Fixed auto mode failing on every tool call for users who disable the attribution header via `CLAUDE_CODE_ATTRIBUTION_HEADER` (direct Anthropic API connections) - Fixed `/model` rejecting Sonnet/Opus 1M for claude.ai subscribers using a custom `ANTHROPIC_BASE_URL` gateway - Fixed MCP OAuth with strict authorization servers by using `127.0.0.1` instead of `localhost` in the redirect URI - Fixed Remote Control clients showing a stuck working spinner after a slash command typed in the laptop terminal - Fixed the Claude Code Review workflow generated by `/install-github-app` completing without posting its review on the pull request - Fixed multi-second UI stalls after editing a file with thousands of IDE diagnostics while the IDE extens

    Source ↗
  11. release

    v2.1.228

    ## What's changed - Fixed interactive sessions that could stop redrawing entirely, while the process kept running, after a rare internal layout error - Fixed `git` / Git Bash not being found on Windows when Claude Code is launched from a parent folder of the git installation - Fixed `/tui` reverting the session to an earlier model when `/model` had been changed since the last response - Fixed cross-session messaging sometimes starting without an inbox in the first session after install or upgrade - Fixed Remote Control `/resume` while connected leaking the resumed conversation's title or history into the connected session - Fixed `claude self-hosted-runner` sessions failing on every fresh runner when the `checkout` hook fails for a repository the session doesn't push to; that repository is now skipped with a warning - Fixed self-hosted runners ending sessions in the gap between a background task finishing and the follow-up turn starting - Fixed session cleanup deleting contents inside a project's memory folder - Fixed background plugin-cache cleanup deleting a plugin's cache when its only version is a symlinked development checkout - Fixed a settings-merge issue where a marketplace entry redefined in a higher-precedence settings tier could inherit another tier's custom headers; marketplace entries now merge as whole entries - Fixed the deferred-tools reminder occasionally being sent to the model twice after a skill invocation - Hardened skills synced from claude.ai: they no longer shadow local commands or MCP prompts, their descriptions are sanitized and labeled, and on your machine their bodies don't run `!` commands or expand `@` files - Improved cross-session messages: the sender and body now display inline instead of a collapsed line, and messages to Remote Control sessions on other machines show your Remote Control session name as the sender - Improved Vertex AI credential handling: expired or missing Google Cloud credentials now fail within seconds instead of

    Source ↗
  12. release

    v2.1.227

    ## What's changed - Fixed feature flags being evaluated without the user's subscription tier when a session started with an expired login token, which could wrongly prompt Max plan users to enable usage credits for Fable - Fixed every Bash command failing under `claude-code-action` with `allowed_non_write_users` on GitHub-hosted runners - Fixed `/tui` bringing back a conversation that had been rewound to before its first message - Improved slash-command menu: blue now marks only the selected row, matched characters are bolded instead of recolored, and emoji or accented names keep their glyphs - Improved performance: fewer event-loop stalls on file-not-found suggestions and at-mention size checks

    Source ↗
  13. release

    v2.1.226

    ## What's changed - Bug fixes and reliability improvements

    Source ↗
  14. release

    v2.1.225

    ## What's changed - Added gateway spend-limit support to Claude Code's usage warning; the limit-reached message now names the cap, its reset time, and the operator's message (requires the gateway on 2.1.225) - Added a workspace trust prompt to `claude agents` for untrusted directories, matching the behavior of `claude` - Fixed a transient 401 replacing a long-lived `CLAUDE_CODE_OAUTH_TOKEN` with a stored login's short-lived token, breaking headless sessions until restart - Fixed MCP OAuth servers on macOS intermittently failing with a burst of 401 errors, as if never authenticated, after a keychain read timed out - Fixed auto mode counting a safety-filter refusal of its own permission check toward the consecutive-block limit; the action is still denied, but the model is now told to move on rather than retry - Fixed cross-session messages staying parked without a notice or expiry in headless sessions and during startup - Fixed conversation history breaking on Remote Control session resume after very large conversations were compacted - Fixed hovering over a session in another project in the agents list changing the directory the next agent starts in - Fixed `claude self-hosted-runner` registering and then failing every session when `--base-dir` cannot be created or written; it now exits at startup with a clear error - Fixed Claude Code on the web sessions being misreported as stuck, re-sending a growing event backlog on every reconnect - Improved Remote Control: photos attached from the Claude app are now shown to Claude directly instead of being read from disk with a separate tool call - [VSCode] Fixed Focus view folding away the latest to-do list, a pending question's context, and settled answers; thinking-only folds show "Thought for Ns" and re-collapse when their turn completes - SendMessage can now start a conversation with your Remote Control sessions on other machines by name (`ListAgents` shows them as `name [ref]`), instead of only replying after they messa

    Source ↗
  15. release

    v2.1.224

    ## What's changed - Added self-hosted environments: `claude self-hosted-runner` turns your own machines or containers into a place Claude Code web, mobile, and desktop sessions can run, on Team and Enterprise plans - Added `archive` plugin source: install plugins from a zip over HTTPS without git or npm, with optional SHA-256 pinning - Added a cancel-and-confirm step when removing an unavailable paste changes a command's text - Added `ANTHROPIC_BEDROCK_REGION_PREFIX` env var for Bedrock to prefer a specific cross-region inference profile over the `AWS_REGION`-derived one - Added `crossSessionInbound` and `dialogExpiry` settings: cross-session messages sent to a session running with bypassed permissions are held for your approval, and messages to other sessions auto-deliver - Added sandbox credential-masking options: `extract` and `onExtractNoMatch` for structured env values, `decode: "jwt"` with `maskClaims` for JWT-aware masking, and `awsPairs`/`sigv4` for AWS SigV4 re-signing; these need `network.tlsTerminate` and are honored only from user, managed, or `--settings` settings - Added cross-session `SendMessage`: Claude Code sessions can now message each other, on any of your machines, with `ListAgents` to discover them (macOS and Linux) - Fixed long (>200 char) project paths resolving to another project's session directory under a shared sanitized prefix; session list, rename, fork, delete and `/resume` no longer cross projects - Fixed `SendMessage` reporting "Message sent" when the write to a teammate's inbox had actually failed; failed deliveries are now reported as errors - Fixed sandbox filesystem deny entries written with a trailing slash (e.g. `denyRead: "~/.aws/"`) being silently bypassable on Linux and macOS - Fixed sandbox violation details never appearing in Bash tool results; Claude now sees which file or network access was denied and why - Fixed MCP tools that connect mid-turn being deferred for tool search without their names announced to the model -

    Source ↗
  16. release

    v2.1.223

    ## What's changed - Added owner wildcard entries (`"owner/*"`) to the `strictKnownMarketplaces` and `blockedMarketplaces` managed settings for allowing or blocking all marketplace repos under a GitHub org - Added a warning when workflow agents, forked skills, slash commands, or resumed background agents' requested subagent model is restricted and the parent model runs instead - Added a `/teleport` hint in cloud sessions showing how to continue locally with `claude --teleport <session id>` - Fixed a Bash permission bypass where a crafted command could hide parts of itself from permission checks - Fixed permission prompts so commands padded with tabs or invisible Unicode can no longer hide part of the command from the approval dialog - Fixed workflow scripts being able to use dynamic `import()` to run code outside the workflow sandbox - Fixed a permission gap where an agent definition's `bypassPermissions` mode ignored the org bypass-permissions disable policy - Fixed resuming a session after a mid-session `/cd` coming back empty - Fixed gateway model discovery hiding Claude models registered under provider-prefixed IDs such as `vertex_ai/claude-*` or `bedrock/anthropic.claude-*` - Fixed `modelOverrides` keys that aren't Anthropic model IDs being treated as the session's canonical model ID; unknown keys are now ignored as documented - Fixed managed settings: server-delivered settings no longer disable the env block of a machine-local `managed-settings.json` or MDM profile; admin env now merges per key - Fixed sandboxed commands failing to start on Linux when `sandbox.filesystem.denyWrite` covers the working directory - Fixed forked background agents getting stuck "already resuming" for the rest of the session when rebuilding the fork's parent prompt failed during resume - Fixed a resumed session failing every turn, or leaving the interactive app on an unresponsive error screen, when its history held a malformed diagnostics attachment - Fixed a rare hang when parsing

    Source ↗
  17. release

    v2.1.222

    ## What's changed - Fixed worktree-isolated sessions and their subagents being able to run destructive git commands against the main checkout; isolation now applies to file edits and Bash in every session type - Fixed PreToolUse auto-allow hooks bypassing tool restrictions in background agent tasks (summaries, compaction, renames) - Fixed `/usage-credits` on Team and Enterprise showing "you've already sent a usage credit request" for members whose earlier request was dismissed, blocking them from sending a new one - Fixed the startup connectivity check hanging and then failing behind an HTTPS proxy; it now uses the same proxy-aware transport as API requests and times out with a clear message - Fixed "Connection closed mid-response" errors being reported on responses that had actually completed - Fixed `/usage` overattributing usage to MCP servers: a server's share now reflects only the requests that actually consumed its tool results, instead of every turn after any call to it - Fixed sessions not linking to pull requests created after the branch was pushed, including through the GitHub REST API - Fixed org-restricted `model: opus`-style subagent and teammate family aliases dropping to the parent model instead of stepping down to the newest org-allowed model in the family - Fixed stream idle timeout firing on custom `ANTHROPIC_BASE_URL` gateways despite server keep-alive pings arriving on the wire - Fixed claude.ai connectors being falsely marked as needing authorization when the session token is invalid — they now show a `/login` hint instead - Fixed tool errors not being displayed for tools no longer available locally, for example after an MCP server is removed - Fixed `SendMessage` rejecting a long summary — it now truncates instead, so sends no longer fail on a character limit - Fixed the spinner's effort label in a subagent's transcript view showing the session's effort level instead of the subagent's own `effort:` setting - Fixed rare crashes when a file watc

    Source ↗
  18. release

    v2.1.221

    ## What's changed - [VSCode] Added Focus view: a chat-menu toggle that hides tool activity behind an expandable per-turn summary with a live running-tool indicator, toggled with `Ctrl+Alt+F` or the "Claude Code: Toggle Focus view" command - Added `mode: "mask"` for sandbox credential files on Linux and WSL — sandboxed commands read a sentinel copy (the whole file, or just the spans captured by an `extract` regex) while the sandbox proxy substitutes the real value on egress; on macOS file masking falls back to `deny` - Added warnings to `claude plugin validate` when a marketplace or plugin name would be rejected by Claude Desktop's managed marketplace sync - Added a `prompt-audit` subcommand to the `claude-api` skill for auditing prompts and tool descriptions for patterns written for older models - Fixed a Bash tool permission-check bypass where zsh could execute hidden commands in `[[ ]]` regex conditionals; affected commands now prompt for permission - Fixed PowerShell permission checks mishandling paths containing quote characters on Windows; such paths now prompt for approval - Fixed the thinking toggle having no effect for the rest of a session that started with thinking off; disabling an MCP server mid-connect no longer silently reverts - Fixed MCP servers from `--mcp-config` not being connected before the first turn in print mode (`-p`), which made the model emit tool calls as literal text - Fixed @-mentioned files being silently dropped when pressing Esc to retract a prompt and resubmitting it - Fixed a crash when preparing API requests for SDK MCP tools named after built-in object properties such as `constructor` - Fixed WebSearch failing with a 400 error at effort `xhigh`/`max` when thinking is disabled - Fixed sandboxed large uploads failing with TLS errors through the sandbox proxy - Fixed Team and Enterprise spend-limit message incorrectly blaming the org's monthly limit instead of your individual spend limit - Fixed Bedrock authentication with AWS SSO

    Source ↗
  19. release

    v2.1.220

    ## What's changed - Bug fixes and reliability improvements

    Source ↗
  20. release

    v2.1.219

    ## What's changed - Added Claude Opus 5 (`claude-opus-5`), now the default Opus model — 1M context, fast mode at $10/$50 per Mtok - Added `sandbox.network.strictAllowlist` setting to deny non-allowlisted hosts for sandboxed commands without prompting - Added `DirectoryAdded` hook that fires after `/add-dir` or the SDK `register_repo_root` control request registers a new working directory mid-session - Added `mcp_server_errors` to the headless stream-json init event, listing `--mcp-config` entries skipped by config validation; terminal runs print a startup warning - Added the `workflowSizeGuideline` settings key so the advisory Dynamic workflow size guideline can be set from any settings file; the `/config` row is hidden while one does - Added nested subagent forwarding in stream-json: subagents spawned at depth-2+ now appear when `--forward-subagent-text` is set, keyed by their spawning Agent `tool_use` id - Fixed `claude -p` text output dropping the answer already produced when a turn dies on a mid-stream API error - Added HTTP status and error text to `claude mcp list` and `/mcp` when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace - Fixed a permission you approved while a self-hosted runner was restarting being dropped when the session resumed, so the approved action now runs - Fixed the Fable model row showing "Requires usage credits" for plans that include it, when a stale cache had baked the label in - Fixed a SIGTERM arriving while a self-hosted runner was starting up leaving a stale active row until the lease expired; it now deregisters cleanly - Added structured failure categories to self-hosted runner spawn and session failures, so hook errors, runner crashes and config errors can be told apart - Fixed the `/model` picker showing the merged Opus row as plain "Opus" instead of "Opus (1M context)" - Fixed copy-on-select inside GNU screen printing base64 into the terminal instead of copying the select

    Source ↗
  21. release

    v2.1.218

    ## What's changed - Changed `/code-review` to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target - Added screen-reader announcements of deleted text for word and line deletions (`Option+Delete`, `Ctrl+W`, `Cmd+Backspace`, `Ctrl+U`, `Ctrl+K`) in `--ax-screen-reader` mode - Fixed Windows paths with `\u`-prefixed segments (like `C:\Users\unicorn`) being corrupted into CJK characters in tool inputs, which made those files inaccessible - Fixed the left arrow key discarding the conversation with no undo: presses right after editing now ask to confirm, and Esc in the agent view returns to the conversation it backgrounded - Added HTTP status and error text to `claude mcp list` and `/mcp` when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace - Fixed multi-line paste collapsing into one line with `j` in place of newlines in terminals that encode pasted newlines as Ctrl+J - Fixed `/context` reporting stale pre-compact token usage after compacting from the message picker - Fixed `/ultrareview` failing on descriptive arguments like "review my auth changes" — they now run a review of your current branch with the text applied as a note to the findings - Fixed `/code-review ultra` silently running a local review in non-interactive sessions — it now launches the cloud review - Fixed gateway spend metering to price Bedrock application-inference-profile ARNs and other config-mapped upstream model IDs at the configured model's rates - Fixed mojibake when a long IDE selection was truncated mid-emoji, and a case where a tool executor error could be silently dropped - Fixed an engine teardown race that could start and abandon a phantom turn, and made input pushed after close consistently rejected - Fixed spurious "[Request interrupted by user]" messages after interrupted tool calls, and an unpaired `tool_use` block left in the transcript when a tool a

    Source ↗
  22. release

    v2.1.217

    ## What's changed - Added emoji shortcode autocomplete in the prompt input: type `:heart:` to insert ❤️, or `:hea` for suggestions — disable with the `emojiCompletionEnabled` setting - Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environment variable, instead of losing transcripts silently - Fixed a memory leak where truncated MCP tool outputs kept the full untruncated result in memory for the rest of the session - Fixed Windows auto-update failures that could leave `claude.exe` missing; failed updates now restore the preserved executable automatically - Fixed background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder - Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock and `/compact` failing once over the limit - Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions - Fixed screen reader mode's startup announcement being cut off by the first prompt render, and the thinking status row re-rendering every few seconds to update elapsed time and token counts - Fixed managed settings that set `OTEL_EXPORTER_OTLP_ENDPOINT` not governing all signals — lower-scope signal-specific overrides no longer redirect telemetry away from the managed endpoint - Fixed `--resume`/`--continue` and `/resume` failing with a TypeError when a transcript has a malformed attachment entry - Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared - Fixed background shells sometimes becoming impossible to stop after a session is sent to the background (`/background` or `←`) or when the session exits on a heavily loaded machine, most visible on Windows - Fixed a `CLAUDE.md` or `SKILL.md` paths frontmatter value with many brace groups OOM-killing or stalling the CLI at startup — brace expansion is now budget-bounded -

    Source ↗
  23. release

    v2.1.216

    ## What's changed - Added `sandbox.filesystem.disabled` setting to skip filesystem isolation while keeping network egress control - Fixed a slowdown in long sessions where message normalization cost grew quadratically with the number of turns, causing multi-second stalls and slow resumes - Fixed auto mode denying commands with "HTTP 401" classifier errors after the OAuth token expired or rotated mid-session - Fixed AskUserQuestion telling Claude to continue even when your answer asked it to wait or explain first — free-text answers now get neutral wording - Fixed Claude Code on the web re-asking the same question and dropping your answer after the session sat idle for a few minutes - Fixed @-mentions silently attaching nothing after file-modifying hooks, vim dot-repeat of `c`-operators and paste, statusline running twice on resume, and resume-picker hangs on failure - Fixed resumed background agent sessions reverting to the default agent: the agent's prompt and tool restrictions are now restored - Fixed worktree-isolated subagents redirecting git into the shared checkout via `git -C`, `--git-dir`, or `GIT_DIR`/`GIT_WORK_TREE` - Fixed worktree sessions landing in another project's leftover worktree when the working directory did not match the selected project - Fixed background sessions whose worktree has no git repository being undeletable - Fixed `claude daemon stop --any` potentially terminating an unrelated process via a stale legacy daemon lockfile - Fixed Esc-Esc at an idle prompt not opening the rewind picker in long-running sessions with background tasks - Fixed Bash command permission checking for compound statements with redirects inside `&&` lists or negations - Fixed pressing Ctrl+X twice in the agent list failing to delete a session, and deleted sessions reappearing when their background worker had died - Fixed background subagents getting cancelled when a high-priority message arrives during their startup window - Fixed mouse and focus garbage in the t

    Source ↗
  24. release

    v2.1.215

    ## What's changed - Claude no longer runs the `/verify` and `/code-review` skills on its own; invoke them with `/verify` or `/code-review` when you want them

    Source ↗
  25. release

    v2.1.214

    ## What's changed - Fixed single-segment `dir/**` allow rules like `Edit(src/**)` auto-approving writes to nested `dir/` directories anywhere in the tree instead of only `<cwd>/dir` - Fixed a permission-check bypass affecting commands run in Windows PowerShell 5.1 sessions - Fixed Bash permission checks to fail closed on file-descriptor redirect forms that bash parses differently than the permission analyzer - Fixed Bash permission checks misjudging very long commands — commands over 10,000 characters now always prompt instead of running automatically - Fixed Bash permission checks treating zsh variable subscripts and modifiers in `[[ ]]` comparisons as inert text — these commands now prompt for approval - Fixed Bash permission checks to no longer auto-approve certain `help` and `man` commands that could run unsafe options, command substitutions, or backslash paths - Fixed permission prompts on remote sessions that could proceed before the local confirmation dialog - Added the EndConversation tool: Claude can end sessions with highly abusive users or jailbreak attempts, as on claude.ai since 2025 — see https://www.anthropic.com/research/end-subset-conversations - Added a periodic progress heartbeat for long-running tool calls that previously went silent - Added an ISO `modified` timestamp to memory file frontmatter - Added `message.uuid`, `client_request_id`, and `tool_source` attributes to OpenTelemetry log events for message-level correlation and tool provenance - Added `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` to configure the 60 KB truncation limit on OpenTelemetry content attributes - Added reasoning effort to the `subagentStatusLine` payload, so custom agent rows can render model and effort - Added permission prompts for `docker` commands (including the Podman `docker` shim) carrying daemon-redirect flags (`--url`, `--connection`, `--identity`, and Podman's remote mode) that previously ran without one - Fixed a crash when a GrowthBook feature evaluates to null, a

    Source ↗
  26. release

    v2.1.212

    ## What's changed - `/fork` now copies your conversation into a new background session (its own row in `claude agents`) while you keep working; the in-session subagent it used to launch is now `/subtask` - Added `claude auto-mode reset` to restore the default auto-mode configuration, with a confirmation prompt (pass `--yes` to skip) - Added a session-wide limit on WebSearch tool calls (default 200, tunable via `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`) to stop runaway search loops - Added a per-session cap on subagent spawns (default 200, override with `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION`) to stop runaway delegation loops; `/clear` resets the budget - MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` - Typing `/resume` in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session - Fixed plan mode auto-running file-modifying Bash commands (e.g. `touch`, `rm`) without a permission prompt or SDK `canUseTool` callback - Fixed worktree creation following a repository-committed symlink at `.claude/worktrees`, which could create files outside the repository - Fixed a `continue:false` hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections - Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143 - Fixed `/background` and `claude --bg` failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7 - Fixed shell mode (`!`) not executing commands containing file paths while the path autocomplete popup was open - Fixed auto-mode denial notifications rendering broken characters when a long denial re

    Source ↗
  27. release

    v2.1.211

    ## What's changed - Added `--forward-subagent-text` flag and `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` environment variable to include subagent text and thinking in stream-json output - Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message - Fixed auto mode overriding a PreToolUse hook's `ask` decision for unsandboxed Bash — a hook `ask` now floors the decision at a prompt - Fixed parallel Claude Code sessions all logging out simultaneously after wake-from-sleep when many sessions share one credential store - Fixed plugin MCP servers not reconnecting after an idle web session woke, leaving MCP calls failing until the next message - Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured - Fixed subagents spawned with an explicit model override reverting to the parent's model when resumed or sent a follow-up message - Fixed nested `.claude/rules/*.md` files loading even when setting sources exclude project settings - Fixed file upload validation: filenames ending in a DOS device suffix (`.prn`) or trailing dot are now accepted, and files with multiple hard links are refused - Fixed file uploads to Claude in Chrome from remote and CLI sessions - Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel - Fixed a startup hang when the Claude in Chrome extension is enabled but Chrome is not running - Fixed a 300ms delay revealing async content (Settings tabs, Stats, diff views, and other loading states) - Fixed reopening a just-stopped background session from the agents view starting a blank conversation under the same session id - Fixed `/loop` hiding the session from `/resume` after a single use - Fixed screen reader users losing the audible terminal bell after `/terminal-setup` or onboardi

    Source ↗
  28. release

    v2.1.210

    ## What's changed - Added a live elapsed-time counter to the collapsed tool summary line so long-running tool calls visibly tick instead of looking stuck - Added a startup warning for `Write(path)`, `NotebookEdit(path)`, and `Glob(path)` permission rules — use `Edit(path)` or `Read(path)` instead - Fixed `isolation: 'worktree'` subagents being able to run git-mutating commands against the main repo checkout instead of their own isolated worktree - Fixed the `ultracode` keyword opt-in firing on non-human-originated input such as webhook payloads and relayed PR comments - Fixed a rendered text fragment leaking into crash telemetry when a UI component returned content outside a styled text element - Fixed paste markers leaking into external editors opened from Claude Code, which could appear as stray È/É characters around pasted text - Fixed `claude attach` sometimes failing with "job not found" or "agent is still starting" errors during session transitions — attach now waits for the daemon to settle, and terminal resizes during a slow attach are applied once it completes - Fixed a session crash when a tool's result renderer returned a numeric bigint value or plain text instead of a UI element - Fixed a hook callback timeout being misreported to the model as a user rejection, which made unattended sessions stop and wait - Fixed Claude assuming a `cd` took effect after its command was moved to the background; the tool result now states the working directory is unchanged - Fixed plugin-provided MCP servers being torn down when MCP servers are re-synced mid-session - Fixed plan approvals without edits being labeled "(edited by user)" and overwriting the plan file with a stale snapshot - Fixed `/doctor` skipping its auto-mode-default proposal on Bedrock, Vertex, and Foundry, where auto mode no longer needs an opt-in - Fixed Grep content mode claiming "No matches found" when paginating past the end of results - Fixed unmatched `$1`/`$2` positional placeholders in skills an

    Source ↗
  29. release

    v2.1.209

    ## What's changed - Fixed /model and other dialogs being blocked in `claude agents` background sessions (reverts an overly broad guard)

    Source ↗

Running Claude Code yourself

Compare it against the alternatives, or deploy it on a managed VPS in one click.