Claude Code Sessions Can Message Each Other
This episode explores how Claude Code sessions can message each other across terminals using ListAgents and SendMessage, making multi-repo workflows and handoffs far smoother. It also covers the security controls, new archive plugin installs, self-hosted runners, the lifted subagent cap, and a sandbox fix for deny-rule bypasses.
Show Notes
- Claude Code Updates by Anthropic - August 2026: https://releasebot.io/updates/anthropic/claude-code
- Claude Code v2.1.224 Major Updates - Self-Hosted ...: https://dev.classmethod.jp/en/articles/20260807-cc-updates-v2-1-224/
Chapter 1
Inter Session Messaging in Claude Code
Lachlan Reed
So I was down in the shed tweaking a script yesterday, and I hit that classic wall where my frontend terminal session needed a schema update from the backend session running in a completely different repo. Normally, you are stuck copy pasting git diffs or raw JSON back and forth like a total drongo.
James Turner
Oh, man. Or you just keep stuffing both contexts into one giant terminal session until your prompt hits the token context limit and completely melts.
Lachlan Reed
Spot on, mate! But in Claude Code version two point one point two two four, that whole workflow changes. Claude Code sessions can now message each other, on any of your machines, with ListAgents.
James Turner
Wait, seriously? ListAgents is a tool for discovering agents to which you can send messages, right? How does that actually talk under the hood on macOS and Linux?
Lachlan Reed
It uses Unix domain sockets sitting right in slash tmp slash cc socks slash. So each terminal window is essentially its own independent background agent with its own local state.
James Turner
Okay, walk me through the step by step workflow. How do I actually trigger a handoff between two open terminals?
Lachlan Reed
Easy as. First, you open your terminals and give them friendly names using slash rename session a and slash rename session b. Then, over in session a, you tell Claude to run ListAgents. That inspects all active sessions, showing you their session IDs, names, and whether they are idle or working.
James Turner
Ah, I see! So once session a sees session b's ID, it invokes SendMessage targeting session b to pass prompt context or a code review request right into its turn queue.
Lachlan Reed
Right on the money, James. It drops the task straight into session b's queue while session a keeps working on its own code base.
James Turner
But wait, if agents can just ping each other across terminal sockets, what stops a rogue agent or a malicious prompt injection from hijacking another session?
Lachlan Reed
That is where the security settings come in. If a receiving session is running under bypassed permissions, incoming messages do not just execute blindly. They get held by crossSessionInbound for explicit user approval, tied to a configurable dialogExpiry timeout. And in auto mode, messages pass through the permission classifier before touching the recipient socket.
James Turner
That is super smart. You get cross session autonomy without giving up user gatekeeping. Were there other updates tucked into version two point one point two two four as well?
Lachlan Reed
Oh, plenty of good stuff in the crate! We got the archive plugin source, which lets you do direct HTTPS zip installs with SHA two fifty six hash pinning for security. Plus, they rolled out claude self hosted runner for enterprise web and mobile execution on local hardware.
James Turner
Did they fix that subagent limit too?
Lachlan Reed
They sure did. The strict limit of spawning two hundred subagents per session is officially gone. And they patched a critical sandbox fix for trailing slashes in deny rules, like denyRead on tilde slash dot aws slash, so trailing slashes will not bypass security checks anymore.
James Turner
That is huge for multi agent infrastructure. Well, I know what I am setting up in my terminal afternoon.
Lachlan Reed
Go get 'em, mate. Good chatting with you!