anthropics / anthropics/claude-code
[FEATURE] Prune stale offline Remote Control roster entries
- 主要语言
- Python
- 星标
- 145k
- 派生
- 23.1k
- PR 合并指标
- PR 指标待抓取
描述
## 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 ` 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.
2. A per-row delete: `claude remote-control rm `.
3. A management UI on claude.ai/code that lists RC roster entries with a
delete affordance.
4. 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
贡献指南
这个仓库没有索引到贡献指南
调研方向
Start by reproducing the ListAgents output for an account with multiple offline Remote Control sessions, then inspect the existing remote-control command surface and the session-ID work in #85160. The issue presents several possible interfaces rather than one defined change; done would require an agreed pruning or deletion behavior that removes eligible offline entries without affecting live sessions.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- backend, cli
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 活跃
- 描述清晰度
- 需要澄清
- 新手友好度
- 35/100