fix(probe): let T3 Code's Claude chats join Relay
Merged
KJ
8d ago+234+234+012345678901234567890123456789-16-16-01234567890123456789
T3 Code runs Claude as a stream-json process with no terminal and an sdk-ts entrypoint, so the core treated its chats as automation. They never joined the roster and gave no error. Seen on 15.0.6 on a test laptop, where a live T3 chat stayed off the roster while a Conductor chat joined.
is_t3_chat requires a stream-json pipe with no terminal and no -p, then walks the process tree to T3 Code's own executable like the Claude desktop check, through a shared hosted_by. It requires kind: interactive, and a Claude session a chat starts stays automation, even if that parent's registry file cannot be read.
- Tests:
relay::claudepasses, including new tests for the bundle paths, a chat, a nested session, a non-interactive run and an SDK run outside T3. Not yet tried on a live T3 session. - Startup note:
has_personstill returns false, so a T3 chat gets no join note at session start. Once on Relay, theOnRelaybranch ofhook_outputgives the preamble whateverinteractiveis, and each delivered message carries its own reply instructions. - Needs a probe release and a
PROBE_VERSIONbump to reach users. The desktop core needs the same change.
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Agent Relay sessions
claudesessionaa49aa99· opened viagh pr create· last active 2026-10-31