What changed
Claude Code 2.1.224 shipped on August 7, 2026. The release widens where sessions run and how they reach each other: claude self-hosted-runner turns your own machines or containers into a place cloud sessions can run, cross-session SendMessage lets separate Claude Code sessions message one another, and a new archive plugin source installs plugins from a zip without git or npm. Alongside those, sandbox credential masking gains structured and JWT-aware options, and fixes land for session directories colliding across projects and for sandbox deny entries that could be bypassed.
New features
-
claude self-hosted-runner— self-hosted environmentsClaude Code web, mobile, and desktop sessions only ran in Anthropic-provided environments, which didn’t fit work against repos or internal services reachable only from inside your own network.
claude self-hosted-runnernow turns your own machines or containers into a place those web, mobile, and desktop sessions can run. Available on Team and Enterprise plans. -
Cross-session
SendMessageandListAgentsSendMessageonly reached subagents spawned inside the same session, with no way to reach a separate Claude Code session running elsewhere. Claude Code sessions can now message each other, on any of your machines, withListAgentsto discover them. Available on macOS and Linux. -
crossSessionInboundanddialogExpirysettingsA cross-session message arriving at a session running with bypassed permissions could be acted on without you seeing it. Cross-session messages sent to a session running with bypassed permissions are now held for your approval, and messages to other sessions auto-deliver; the
crossSessionInboundanddialogExpirysettings control this. -
archiveplugin sourceInstalling a plugin required a git repo or an npm package. The new
archivesource installs plugins from a zip over HTTPS without git or npm, with optional SHA-256 pinning so you can verify the download is the file you expected. -
Sandbox credential-masking options
Sandbox credential masking covered whole env values, which didn’t fit values that carry other data alongside the secret or structured tokens like JWTs. New options:
extractandonExtractNoMatchfor structured env values,decode: "jwt"withmaskClaimsfor JWT-aware masking, andawsPairs/sigv4for AWS SigV4 re-signing. These neednetwork.tlsTerminateand are honored only from user, managed, or--settingssettings. -
ANTHROPIC_BEDROCK_REGION_PREFIXfor BedrockOn Bedrock, the cross-region inference profile was derived from
AWS_REGIONwith no way to point at a different one. The newANTHROPIC_BEDROCK_REGION_PREFIXenv var makes Bedrock prefer a specific cross-region inference profile over theAWS_REGION-derived one.
Key improvements
-
The 200-subagent-per-session spawn cap is removed
A session could spawn at most 200 subagents, so long-running sessions eventually refused new agents. That cap is gone; concurrency and depth limits still apply.
-
Fullscreen mode keeps full pre-compaction history
In fullscreen mode, repeated compactions left only the most recent interval in scrollback. Fullscreen mode now keeps the full pre-compaction history in scrollback across repeated compactions.
-
Remote Control shows compaction progress
Attached web and mobile clients saw a silent pause while the conversation compacted. They now see compaction progress and the post-compaction boundary, and
/clearresets propagate to attached clients. -
Remote Control connection failures persist on screen
A failed connection surfaced only as an 8-second toast, easy to miss. Connection failures now show a persistent failure indicator with details and a reconnect shortcut.
-
Remote Control archives stale server sessions
When a fresh session was minted after compaction or
/resume, the old server session stayed listed but dead. Remote Control now archives the stale server session instead. -
Managed settings approval prompt stops re-appearing
The managed-settings approval prompt came back after every re-login or org switch. It no longer re-appears when the organization’s settings are unchanged.
-
Feedback-survey transcript share now includes model settings
A shared transcript carried the conversation only, leaving out the settings needed to reproduce a problem. With your consent it now also uploads the last request’s model settings — the system prompt (which includes your
CLAUDE.mdinstructions), tool definitions, and model parameters. Secrets are redacted as before, and these fields are dropped first if the share is too large. -
Bash tool description
Command output goes to the model and isn’t reliably shown to the user, but the tool description didn’t always say so. The Bash tool description now always notes that command output is displayed to the model, not reliably to the user.
-
Handling of unavailable pastes
Recalling an earlier input whose paste had aged out could quietly change the command’s text before it ran. There is now a cancel-and-confirm step when removing an unavailable paste changes a command’s text, and recalled paste placeholder numbers renumber when accepted into the input.
Bug fixes
Sessions & projects
- Long (>200 char) project paths resolving to another project’s session directory under a shared sanitized prefix — fixed; session list, rename, fork, delete and
/resumeno longer cross projects. - Plugin install records being silently corrupted when the same plugin is installed in multiple projects — fixed.
- MCP tools that connect mid-turn being deferred for tool search without their names announced to the model — fixed.
Sandbox
- 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 — fixed; Claude now sees which file or network access was denied and why.
Messaging & input
SendMessagereporting “Message sent” when the write to a teammate’s inbox had actually failed — fixed; failed deliveries are now reported as errors.- Recalled or restored paste content occasionally attaching wrong data or silently losing text — fixed; this happened when the paste had aged out or placeholder numbers collided.
- Copy-on-select on Wayland sometimes not reaching the clipboard — fixed; the two selection writes no longer race.
- The feedback survey’s transcript share silently failing on long sessions — fixed; a failed share now shows an error instead of a success message.
Remote Control
- 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
/clearand other output-less commands — fixed. - A Remote Control session recreated after its server session expired uploading prior local conversation history into the new session — fixed.
- A session resume silently reconnecting Remote Control after the user turned it off — fixed, covering
--resume, SDK hosts, and the VS Code extension. - [VSCode] The extension showing Remote Control as connected after the connection failed — fixed.
- [VSCode] Sessions not honoring
remoteControlAtStartupwhen explicitly enabled — fixed.
Notes
- Self-hosted runners are a Team and Enterprise feature — other plans can’t use them.
- Cross-session
SendMessageis macOS and Linux — those are the platforms listed for this release. - Credential masking has prerequisites — the new options need
network.tlsTerminateand are honored only from user, managed, or--settingssettings; values set elsewhere are ignored. - The transcript share now covers more — sharing a transcript from the feedback survey uploads your system prompt, which includes your
CLAUDE.mdinstructions. It’s consent-gated and secrets are redacted, but worth knowing what goes with it. - This release carries a security fix — sandbox deny entries written with a trailing slash were silently bypassable on Linux and macOS. If your
denyRead/denyWriteentries are written that way, upgrade. - Removing the subagent cap doesn’t remove the others — concurrency and depth limits still apply.