fix(probe): let T3 Code's Claude chats join Relay

Merged
KJ
8d ago
+234-16

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::claude passes, 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_person still returns false, so a T3 chat gets no join note at session start. Once on Relay, the OnRelay branch of hook_output gives the preamble whatever interactive is, and each delivered message carries its own reply instructions.
  • Needs a probe release and a PROBE_VERSION bump to reach users. The desktop core needs the same change.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Agent Relay sessions

  • claude session aa49aa99 · opened via gh pr create · last active 2026-10-31