diff --git a/src/claire/orchestrator/bootstrap.py b/src/claire/orchestrator/bootstrap.py index 58fd9fb..b11a52a 100644 --- a/src/claire/orchestrator/bootstrap.py +++ b/src/claire/orchestrator/bootstrap.py @@ -349,7 +349,10 @@ def _send_kick(*, rcl: Rclaude, cwd: str) -> None: def _register_remote_control(*, rcl: Rclaude, cwd: str, host_label: str) -> None: """Register the orchestrator session with claude.ai/code as - `claire@` so per-host Claires are distinguishable in the browser. + `claire-` so per-host Claires are distinguishable in the browser. + Hyphen (not `@`) because claude.ai/code's remote-control name field + silently strips `@` — observed when `claire@apricot` registered as + bare `claire` and produced duplicate entries. `/remote-control` is a Claude *slash command* — it only takes effect delivered as literal input, never from prose. The bootstrap kick is a @@ -364,7 +367,7 @@ def _register_remote_control(*, rcl: Rclaude, cwd: str, host_label: str) -> None remote spawns. """ rcl.send( - text=f"/remote-control claire@{host_label}", + text=f"/remote-control claire-{host_label}", match=_cwd_slug(cwd), yes=True, dry_run=False,