[FEATURE] Cross-account session messaging between accounts one person owns
Preflight
I searched the existing enhancement requests. Two are close, and I believe this is the gap between them:
- #89993 (first-class multi-account support) covers switching, credential binding, usage visibility, and rate-limit failover. It does not cover sessions on different accounts addressing each other.
- #87954 (cross-session conversation channel) covers two different people's sessions talking, gated by per-message human approval. This request is narrower and has no third party in it: one person, several accounts they already own, no other human to consent.
- #92058 asks to scope cross-session messaging to a project. Compatible with this, and the scoping it proposes would apply here too.
If maintainers read this as a subset of either, closing it as a duplicate is reasonable. I filed it because the same-owner case has a different trust model than #87954 and is not mentioned in #89993.
Problem Statement
Claude Code sessions under one login can message each other in realtime. Sessions under a different login cannot, in either direction.
The session tooling enumerates an in-memory map of sessions the app itself spawned under that login. A session started under a different config root is never entered into that map. It is not filtered out, it is never registered, so it cannot be listed or messaged.
I hold five Max 20x subscriptions on five accounts, because 20x is the largest tier sold. My work is therefore split across five app instances. Two sessions can sit in the same repository, on the same machine, at the same moment, under the same human, and be unable to address each other.
This is the single most expensive consequence of running multiple accounts. The other costs (config drift, uneven load, no usage visibility) are already well described in #89993.
Proposed Solution
Let a user pair accounts they own, and have the existing session primitives resolve across the pairing.
- A user opts in per account, from both sides, and can revoke. Pairing is between accounts one person controls. Never open addressing between arbitrary accounts.
ListAgentslists sessions on paired accounts, labelled with which account owns each.SendMessageaddresses them. Delivery semantics stay exactly as they are today.
Four constraints matter, because crossing a login boundary changes the trust model even when the human is the same:
- Pairing is explicit and revocable. If any account could reach any other, an unrelated person's session becomes an injection source. That is a new attack surface rather than a widened one.
- Peer-originated work runs under the receiving session's permissions, never the sender's. The receiver's grants are the ceiling.
- Intersect permissions, do not union them. My five config roots do not carry identical grants today. Without this, a session denied an action could route around the denial by asking a paired peer that is allowed. Within one login that move buys nothing, because both sides hold the same permissions. Across logins it buys real privilege, and that is permission laundering with extra steps.
- Keep the existing "this came from another session, not your user" envelope, and make the audit trail span the pairing. Today logs split per account, so a cross-account handoff is reconstructible from neither side.
Alternative Solutions
What I do today. A file-based mailbox inside .git, because a file write is the only transport blind to which login a session authenticated against. It works and it is asynchronous, so a message lands on the recipient's next turn rather than now. It has no presence, no delivery signal, and no addressing beyond a directory key.
The alternative that would remove the need entirely: sell a Max tier above 20x. I run five accounts only because 20x is the ceiling. A 50x or 100x tier would put my sessions back on one login, where the channel already works correctly and needs none of the trust model above. I recognise subscription tiers are not this repository's decision, and I am recording it here because it is the cheaper path to the same outcome, and because it explains why this request exists at all. I would buy that tier today.
Priority
High. Significant impact on productivity.
Feature Category
Configuration and settings.
Use Case Example
- I run a coordinating session on account 1 and several worker sessions on accounts 2 through 5, across roughly 125 git worktrees of one repository.
- The coordinator finishes scoping a task and needs to hand it to a worker that has quota headroom.
- Today it cannot see or address that worker at all, because the worker is on another login. It writes to a file in
.gitand the worker picks it up on its next turn. - With paired accounts, the coordinator calls
ListAgents, sees the worker, and callsSendMessage. The handoff happens now instead of eventually. - This would remove the mailbox layer I maintain, and remove the class of bug where a message is written correctly and simply never read.
Environment
- Claude Code on Windows 11, Desktop app and CLI.
- Five config roots (
~/.claude-account-1through-5), five distinct account emails, five separate pools.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Cross-link: the reason five accounts exist at all is the 20x ceiling, filed separately as #92137. If that one is ever answered, this request becomes unnecessary for my case. They are independent asks and either would help, so I would not close this on account of that one.
Still open. This is deliberately narrow, and the two neighbours it sits between are why. #89993 covers first-class multi-account support: switching, credential binding, usage visibility, rate-limit failover. It does not cover sessions on different accounts addressing each other. #87954 covers two different people's sessions talking, gated by per-message human approval.
The same-owner case has a different trust model from #87954 and is not mentioned in #89993. One person, several accounts they already own, no third party to consent. That is the whole request.
The mechanism is the same one behind #82313 and #90188: the session tooling enumerates an in-memory map of sessions the app spawned under one login. A session started under a different config root is never entered into that map, so it is not filtered out, it is never registered, and it cannot be listed or messaged in either direction. #92058's project scoping would apply here too. If maintainers read this as a subset of #89993 or #87954, closing it as a duplicate is reasonable, but I would rather that be a decision than an inactivity timeout.
Still open. On #90188, another user has posted a third-party tool that merges sessions across accounts. People building outside tools to work around the account boundary is some evidence of demand for this and for #90188.
This request is still the narrow one: sessions under different logins that belong to one person being able to message each other. #89993 and #87954 remain the neighbours, and neither covers the same-owner case.