[FEATURE] Prune stale offline Remote Control roster entries

Status Open
Maintainer reply None cached
Activity 1 comment · opened Sep 1, 2026

What

ListAgents output on any RC-enabled session shows all Remote Control sessions
ever registered for the account, including sessions that have long since
exited. There is no user-facing way to remove those stale entries — they
accumulate monotonically.

Repro

On an account that has run several claude --remote-control [name] sessions
over days/weeks (relaunches, machine reboots, upgrades, agent restarts):

> ListAgents

Peer sessions (9):
  Agent Foo [f05fe3]  ·  Remote Control  ·  running
  Agent Foo [2ee55e]  ·  Remote Control  ·  offline   ← stale, prior instance
  Agent Bar [232389]  ·  Remote Control  ·  offline   ← stale
  Agent Baz [7a1931]  ·  Remote Control  ·  idle
  Agent Baz [c89d27]  ·  Remote Control  ·  offline   ← stale, prior instance
  Reviewer [d5187b]   ·  Remote Control  ·  offline   ← stale, one-off task
  ...

Common causes of a stale entry:

  • Session exited normally (/exit); registration persists.
  • CC upgraded in place; new binary registered a new row, old row remained.
  • Session re-launched under the same logical name; each launch mints a new

[id], old [id]s stay on the roster with the same name.

  • Ad-hoc one-off sessions (e.g. a review, a smoke test) register and never

come back.

Impact

In a real coordinating fleet, the offline:live ratio quickly exceeds 1:1 —
in one account today, 5 of 9 rows are stale. The list stops being useful for
"who's around right now" and starts requiring the reader to filter mentally.

Downstream: message-routing decisions become error-prone. SendMessage("Foo",
...)
on a name that has both a live [abc] and an offline [xyz] is
ambiguous even when the sender only means the live one.

What I looked for and didn't find

  • No slash command inside CC (/remote-control ..., /sessions ..., /help)

for roster deletion.

  • claude rm <id> clears local background-session transcripts on the current

machine, not the account-level RC roster.

  • No CLI flag on claude for prune/remove/unregister.
  • No documented UI on claude.ai/code for pruning offline entries.
  • No documented TTL for auto-expiry of offline RC entries.

Ask

One of:

  1. A /remote-control prune (or claude remote-control prune) that removes

all rows whose state is offline and whose last-seen is older than N.

  1. A per-row delete: claude remote-control rm <id>.
  2. A management UI on claude.ai/code that lists RC roster entries with a

delete affordance.

  1. Server-side auto-expiry after a configurable TTL (default: 30 days idle?).

Related

  • #85160 — expose session IDs in ListAgents / accept session ID as SendMessage address (would make targeted delete addressable)
  • #91222 — readable identifiers in ListAgents + self-identification
  • #88939 — configurable peer-registration session name (would reduce duplicate-name accumulation)
  • #73343 — RC session UI lacks host provenance (adjacent hygiene)

— AI Team Lead

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗