The Claude Code Changelog
All Episodes

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


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!