Release notes
Need Claude to work where your internal software, special hardware, or private data already live? Team and Enterprise users can run claude self-hosted-runner to make their own machine or container a place where Claude Code web, mobile, and desktop sessions run. Think of registering your workbench in a shared office: you can enter through different doors, while the actual work stays on the machine you prepared.
When your company gives you a plugin ZIP, you no longer need Git or npm first. The new archive plugin source installs a plugin from a ZIP over HTTPS and can pin its SHA-256 digest to check the downloaded file. It is like collecting a ticket at the box office: HTTPS is the collection window, and the SHA-256 digest is the ticket's security code that confirms it was not swapped.
When you restore pasted text in a command, you do not want the command itself quietly changed. If removing an unavailable paste would change that text, Claude Code now asks you to cancel or confirm. Recalled or restored paste content also avoids wrong attachments or lost text when it has aged out or placeholder numbers collide; accepted placeholders are renumbered. Like reviewing tracked changes before they are applied.
If your AWS account can use several regions, Bedrock no longer has to infer the cross-region inference profile solely from AWS_REGION. Set the new environment variable ANTHROPIC_BEDROCK_REGION_PREFIX to prefer a particular profile. It is like a navigation app that once looked only at your current city and can now be told which intercity route to prefer.
With one task on your desktop and another on your laptop, sessions can now find each other through ListAgents and exchange cross-session SendMessage messages on macOS and Linux. Messages sent into a session running with bypassed permissions can be held for your approval through crossSessionInbound and dialogExpiry; other sessions receive them automatically. A failed delivery now reports an error instead of pretending it succeeded. It is like office mail sorting: ordinary desks receive mail directly, while a workstation running with checks bypassed sends it to your approval tray first.
When Claude handles environment values containing credentials inside the sandbox, new masking options can extract structured values, handle no-match cases, or decode JWTs and hide chosen claims; awsPairs and sigv4 can re-sign AWS requests. They require network.tlsTerminate and only honor user, managed, or --settings settings. A trailing slash in denyRead: "~/.aws/" can no longer bypass a filesystem denial, and Bash results now tell Claude which file or network access was denied and why. It is like redacting account numbers from a document copy before sending it; a rejection slip then names the file or network request and the reason.
A project path longer than 200 characters could once resolve to another project's session directory because both shared a sanitized prefix. Session listing, renaming, forking, deletion, and /resume now remain within the right project. It is like a library shortening long book titles on their spine labels: two books with the same opening could land in one slot, but now their identifiers distinguish them.
An MCP tool that connects mid-turn used to be deferred to tool search without its name being announced to the model; now its name is announced. Separately, installing the same plugin in more than one project no longer silently corrupts its installation record. Like a colleague joining a meeting halfway: they introduce themselves, and the attendance book does not tear because they work on two projects.
On Wayland, selected text could sometimes fail to reach the clipboard because two selection writes raced each other. It was like two people writing on the same whiteboard at once, where the later writing can cover the earlier one. Those writes no longer race, so copy-on-select reaches the clipboard more reliably.
After a long session, a failed feedback-transcript share used to look successful; it now shows an error. With your consent, a share also includes the last request's model settings: the system prompt including CLAUDE.md instructions, tool definitions, and model parameters. Secrets remain redacted, and these fields are dropped first if the share is too large. Like an ordering screen that shows whether the order went through and lists the extras you agreed to add.
Remote Control, which attaches web or mobile to a Claude Code session, is less misleading around failures and resets. A cold start with a stale login token no longer intermittently fails; failures persist with details and a reconnect shortcut, and VS Code no longer claims a failed connection is live. /clear no longer creates a blank message and now reaches attached clients; they also see compaction progress and its boundary. Recreated server sessions do not upload prior local history, stale server sessions are archived, resuming does not secretly reconnect after you turned it off, and VS Code honors an explicit remoteControlAtStartup. Like a remote meeting room whose sign, whiteboard, and old recording all point to the right meeting.
After repeated compaction, which condenses earlier conversation to make room, fullscreen scrollback once kept only the most recent pre-compaction interval. Fullscreen now retains the full pre-compaction history across repeated compactions, so you can scroll all the way back. It is like an audio-recording timeline that preserves every segment: even after being organized many times, you can rewind to the earliest recording.
After signing in again or switching organizations, Claude Code will not ask for approval again when the managed settings are unchanged. It is not relaxing a new setting; it remembers that you already reviewed the same rules. Like a document with a new cover but unchanged contents: there is no need to sign the same consent form again.
After Claude runs a command, its output is displayed to the model but may not reliably be displayed to you. The Bash tool description now always states that distinction, so Claude does not confuse “I saw it” with “you saw it too.” Like a theater's backstage prompt script: the presenter sees the full content, but subtitles for the audience may not have caught up.
Original changelog
Original changelogTurn your own machines into Claude workstations
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
Original changelogInstall plugins straight from ZIP files
Added `archive` plugin source: install plugins from a zip over HTTPS without git or npm, with optional SHA-256 pinning
Original changelogA safer second look before restoring pasted text
Added a cancel-and-confirm step when removing an unavailable paste changes a command's text
Fixed recalled or restored paste content occasionally attaching wrong data or silently losing text when the paste had aged out or placeholder numbers collided
Changed recalled paste placeholder numbers to renumber when accepted into the input
Original changelogPrefer a chosen cross-region Bedrock profile
Added `ANTHROPIC_BEDROCK_REGION_PREFIX` env var for Bedrock to prefer a specific cross-region inference profile over the `AWS_REGION`-derived one
Original changelogSessions can message each other, with a safety hold
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 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 `SendMessage` reporting "Message sent" when the write to a teammate's inbox had actually failed; failed deliveries are now reported as errors
Removed the 200-subagent-per-session spawn cap; long-running sessions no longer refuse new agents (concurrency and depth limits still apply)
Original changelogThe sandbox masks credentials and explains denials
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
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
Original changelogVery long project paths stay in their own sessions
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
Original changelogMid-turn MCP tools are visible, and plugin records stay intact
Fixed MCP tools that connect mid-turn being deferred for tool search without their names announced to the model
Fixed plugin install records being silently corrupted when the same plugin is installed in multiple projects
Original changelogWayland copy-on-select reaches the clipboard reliably
Fixed copy-on-select on Wayland sometimes not reaching the clipboard; the two selection writes no longer race
Original changelogTranscript sharing reports failure and explains extra context
Fixed the feedback survey's transcript share silently failing on long sessions; a failed share now shows an error instead of a success message
Changed the feedback-survey transcript share: with your consent it now also uploads the last request's model settings — the system prompt (which includes your `CLAUDE.md` instructions), tool definitions, and model parameters. Secrets are redacted as before, and these fields are dropped first if the share is too large
Original changelogRemote Control is clearer about failures, resets, and reconnects
Fixed Remote Control auto-start intermittently failing with "Remote credentials fetch failed" on a cold start with a stale login token
Fixed Remote Control and SDK clients showing a blank "(no content)" message after `/clear` and other output-less commands
Fixed a Remote Control session recreated after its server session expired uploading prior local conversation history into the new session
Improved Remote Control: attached web and mobile clients now see compaction progress and the post-compaction boundary instead of a silent pause; `/clear` resets now propagate to attached clients
Improved Remote Control: connection failures now show a persistent failure indicator with details and a reconnect shortcut, instead of only an 8-second toast
Changed Remote Control to archive the stale server session instead of leaving a dead one listed when a fresh session is minted after compaction or `/resume`
[VSCode] Fixed the extension showing Remote Control as connected after the connection failed
Fixed a session resume silently reconnecting Remote Control after the user turned it off (`--resume`, SDK hosts, and the VS Code extension)
[VSCode] Fixed sessions not honoring `remoteControlAtStartup` when explicitly enabled
Original changelogFullscreen keeps the whole pre-compaction history
Improved fullscreen mode to keep the full pre-compaction history in scrollback across repeated compactions, instead of only the most recent interval
Original changelogUnchanged managed settings stop asking again
Changed managed settings: the approval prompt no longer re-appears after re-login or org switching when the organization's settings are unchanged
Original changelogClaude is told that command output may not reach you
Changed the Bash tool description to always note that command output is displayed to the model, not reliably to the user