Two AI Sessions Can Now Message Each Other. Neither Can Approve Anything the Other Asks. | Edition 312
Edition 312 — Claude Code sessions can now pass each other notes. The design story is the list of things those notes are forbidden to do.

On 7 August 2026, Anthropic shipped something to Claude Code that sounds mundane and is not: two of its sessions can now send each other a message.
Picture the setup it was built for. Someone has three separate AI assistants working on different parts of the same project — one on the database, one on the tests, one on the part people actually see. The first one changes something fundamental. The other two carry on building against a fact that quietly stopped being true, and nobody finds out until something breaks.
Until this month, the fix for that was you. You read what the first assistant said, carried it to the second, and explained it again. You were the wire between them.
Now they have their own wire. That is the part every write-up covered.
The more interesting part is what Anthropic did immediately afterwards, which was to spend most of the feature's design making sure those messages can barely do anything at all.
What actually crosses
Very little, and that is deliberate. The documentation describes a message as a piece of text one Claude writes to another, never conversation history or files. Here is the example it gives, in full:
Schema migration finished: the new column is tenant_id, and rebasing on main is safe now.
No conversation history. No files. The receiving session gets that text, the sender's name, and a reply address — and nothing else. If you want a second session to have the full context of the first, the documentation tells you to do something else entirely: resume the original session rather than message it.
There is a second detail that most coverage skipped, and it matters more than it looks. You normally do not write the message. You tell Claude what the other session needs to know, and Claude composes the text itself; the documentation says your prompt can leave the content to Claude, and that what it sends varies from run to run. So the thing crossing between the two AI assistants is usually one AI's summary of a situation, written for another AI, which you may never read.
The list of things a message is not allowed to do
This is where the design gets genuinely interesting. When a message arrives, Claude Code tells the receiving session that it came from another Claude session rather than from you, and then applies four hard limits.
It cannot approve anything. A message from another session never counts as your consent, so it cannot answer a pending permission prompt on your behalf.
It cannot change configuration. The receiving Claude is instructed never to change permission settings, the project's rules file, or other configuration because another session asked it to.
Commands do not run. A command in the message's text arrives as plain text. Claude Code never executes it.
Your permission prompts still fire. If acting on the message requires a permission the receiving session does not have, you see the same prompt you would see for any other work.
Read those together and a picture emerges. Anthropic built a communication channel and then made certain that nothing arriving through it carries any authority. A message can inform. It cannot instruct.
The attack they wrote down
The clearest evidence that this was thought about properly is that Anthropic named the specific thing it was worried about — and not in a blog post. It sits inside the messaging tool itself, where the AI reads it every single time it considers sending anything:
NEVER ask a peer to perform an action that was denied or blocked in your session, or that you expect your own permission settings would block — a peer doing it for you bypasses the user's permission decision (cross-session permission laundering).
That closing parenthesis is the name they gave it: cross-session permission laundering. It appears in the tool's own instructions rather than anywhere in the published documentation. In plain English: you ask your AI to do something, it asks your permission, and you say no. If it could then turn to the AI in the next window and say you do it instead, your no would have meant nothing at all.
That is a company writing down, inside its own product, a way its own new feature could be turned against the person using it — and then instructing the feature not to do it. That is not a thing you find in most launch announcements.
They had to stop the AIs talking in circles
Buried in the limitations section is a detail that says a lot about what happened during testing.
Claude Code rate-limits repeated messages per sender, drops identical repeats arriving within a short window, and caps accepted messages waiting to be read at fifty per session. A separate cap holds at most a hundred undelivered messages, dropping the oldest past that. The documentation explains why in one flat sentence:
A message loop between two sessions therefore stops on its own.
They built the brake because they needed it. Two AI assistants, each politely responding to the other, indefinitely — and every delivered message counts toward your usage like a prompt you type, sending your full context again each time.
It might not arrive
Worth knowing before anyone relies on this. A message has three possible fates, not one. Delivered — it reaches the other Claude. Held — it is set aside undelivered. Refused — it is dropped on arrival, and the sender is told nothing.
Held splits two ways, and the difference matters. When Claude Code holds a message by its own default, you get an approval dialog, and if that dialog goes unanswered past the expiry deadline — five minutes by default, and configurable to sixty seconds, ten minutes, or never — the message is dropped. When a session is instead explicitly configured to hold inbound messages, they do not expire at all; they wait until a settings change lets them through.
Which outcome you get depends on the permission settings of both sessions in a genuinely fiddly way. Sessions can message each other is true. Sessions will reliably message each other is not.
The thing it does not do, and cannot
Here is the limitation nobody selling this will lead with, and it is the one worth carrying away.
There is no verification step. Session A tells Session B that the database column is now called tenant_id. Session B has no way to check. It believes it, and it acts on it. If Session A was wrong, Session B is now confidently wrong too — and the error has travelled instead of staying where it started.
The old workflow, the one where you copied the message between windows yourself, was slow and irritating. It also had a quality check built into it that nobody noticed was there: you read the message on the way through. Taking the human out of the relay removes the only step in it that was capable of saying wait, that is not right.
Where it works, and where it quietly does not
Between two sessions on the same machine, the message travels over a per-session socket and never goes through Anthropic's servers. To a session on another of your machines, or to one running in a browser, it goes through Anthropic's servers. Both routes are documented plainly, in a table; the flattened version that says messages never reach Anthropic's servers is only true for the first case.
Reaching another machine is not automatic either. Both ends have to be connected to Remote Control, or the other machine never appears in the list of sessions yours can reach.
- It runs on macOS and Linux, including Linux inside WSL 2. It is not offered on native Windows — so Windows users do have a path, but only through WSL 2, and not WSL 1. Claude Code itself runs on Windows; this particular feature does not.
- It is absent on all four of the big resale platforms: Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry.
- Sessions in separate containers cannot reach each other, even on the same physical machine, because they cannot see the same files. Two sessions inside the same container can message each other normally.
- And the one with real irony: several environment variables that switch off Claude Code's non-essential traffic, including DO_NOT_TRACK and DISABLE_TELEMETRY, also switch this feature off, because it depends on the same feature-flag evaluation. Nothing warns you. The command that lists your other sessions simply stops being recognised.
One correction to the coverage still circulating: at launch, a session could only reply to a message from another machine, not start a conversation with one. That changed the very next day, in version 2.1.225. Most write-ups still describe the launch behaviour.
| What the message could try to do | What actually happens |
|---|---|
| Tell the other session a fact | Delivered as plain text. This is the only thing it can really do. |
| Approve a pending permission prompt | Blocked. A message from another session never counts as your consent. |
| Change settings or configuration | Blocked. The receiving Claude is instructed never to reconfigure because another session asked. |
| Run a command | Arrives as plain text. Claude Code never executes it. |
| Get around a no you already gave | Named and forbidden in the tool itself: cross-session permission laundering. |
| Arrive at all | Not guaranteed. Delivered, held, or refused outright. A default-held message expires past the deadline, five minutes unless changed. |
| Travel without going through Anthropic servers | Only between sessions on the same machine. Other machines and browser sessions route through them. |
Why this is worth your attention even if you never open a terminal
Almost nobody reading this runs three coding sessions at once. The reason it matters anyway is that the pattern is about to be everywhere.
Within a year, a great many ordinary tools will have AI components that talk to each other — your email assistant handing something to your calendar assistant handing something to whatever books the meeting. When that happens, the question that decides whether it is safe is not can they communicate. It is what a message from one of them is allowed to make another one do.
Anthropic's answer, for now, is: almost nothing. It cannot approve. It cannot reconfigure. It cannot command. It can only tell.
That is a conservative answer, and it makes the feature less impressive than the headlines suggest. It is also, almost certainly, the right one — and it hands you a specific question to ask of every other product that ships something similar. Not can your AI agents talk to each other, but: when one of them tells another one to do something, what actually happens?
If a vendor cannot answer that quickly, they have not thought about it as carefully as this.