命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
从列表中移除后台会话
claude rm <id>claude rm 7c5dcf5dclaude rm <id> 把一个 background session(后台会话)从列表中移除。官方 CLI reference 对它的定义是:"Remove a background session from the list"。
它属于管理后台会话的一组 CLI 子命令,这一组命令都用同一个短 ID:
| 命令 | 作用 |
|---|---|
claude agents | 打开 agent view,监控和派发并行的后台会话 |
claude attach <id> | 在当前终端 attach 到后台会话 |
claude logs <id> | 打印后台会话的近期输出 |
claude stop <id> | 停止后台会话(也接受 claude kill) |
claude respawn <id> | 重启后台会话,保留对话 |
claude rm <id> | 从列表中移除后台会话 |
后台会话通常由 claude --bg "<prompt>"(或 --background)启动。该 flag 会立即返回,并打印 session ID 和管理命令。
关键点:rm 只移除列表项,不删除对话 transcript。 transcript 仍保留在本机,可以通过 claude --resume 找回。
claude rm <id>
claude rm <id> --discard-unpushed <commit>@<worktree-id>
claude rm <id> --force-remove-worktree <worktree-id>
官方示例:
claude rm 7c5dcf5d
<id> 是会话的短 ID,即 ~/.claude/jobs/ 下的目录名。attach、logs、stop、rm 使用同一种 ID。
| 参数 | 含义 | 版本要求 |
|---|---|---|
<id> | 要移除的后台会话短 ID | 文档未单独标注 |
--discard-unpushed <commit>@<worktree-id> | 上次删除因 worktree 中有未推送的 commit 被拒绝时使用。会连同分支和 commit 一起丢弃该 worktree | v2.1.260 或更高 |
--force-remove-worktree <worktree-id> | 上次删除因 git 或 WorktreeRemove hook 无法移除 worktree 而被拒绝时使用。会强制删除 worktree 目录,分支仍留在仓库中 | v2.1.268 或更高 |
这两个 flag 的值不需要手写。官方文档说明,当二次 claude rm 能解决拒绝时,拒绝信息会打印出需要传入的确切 flag 和值,照抄即可。
官方文档没有收录会话内的 /rm 命令。要在交互界面里删除会话,用 agent view(claude agents)里的 Ctrl+X。两条路径对 worktree 的处理不同:
| 项目 | claude rm | agent view 中 Ctrl+X |
|---|---|---|
| 触发方式 | shell 命令 | 按一次 Ctrl+X 停止会话,2 秒内再按一次删除 |
| Claude 为该会话创建的 worktree 含未提交改动 | 保留 worktree | 移除 worktree,包括未提交的改动 |
| 分组 | 无 | 在分组标题行按 Ctrl+X 会在确认后删除该组所有会话 |
以下均来自官方 agent view 文档中"What deleting a session removes"一节。
| 约束 | 原因 / 行为 |
|---|---|
| worktree 被另一个运行中的会话使用或被锁定 | 无论 agent view 还是 claude rm 都不会移除该 worktree,再次删除也不会改变。Claude Code 保留 worktree 和会话,并写明被保留的目录和原因。在 agent view 中该会话行显示 not deleted。需要先关闭另一个会话再删除 |
| worktree 里有 Claude Code 无法确认已保存到别处的 commit | Claude Code 保留 worktree 和会话。你可以先 push 或合并到默认分支,再重新删除;也可以用 --discard-unpushed 丢弃 |
git 或 WorktreeRemove hook 移除 worktree 失败 | Claude Code 保留 worktree 和会话,并写明原因。你可以用 --force-remove-worktree 强制删除目录,也可以先解决阻塞原因,或自己删除目录后再执行 claude rm |
| 你自己创建、并在其中启动会话的 worktree | 两种路径都原样保留 |
worktree 目录不属于任何 git 仓库(仓库已删除,或由 WorktreeCreate hook 建在别处) | 目录里仍有文件时,claude rm 会保留会话和 worktree,并写明原因 |
rm 不会删除 transcript。 文档明确写道:transcript 保留在本机,仍可通过 claude --resume 访问。如果目的是清理磁盘上的对话数据,claude rm 达不到。会话文档指出,transcript 按保留期清理规则过期,要更早删除某个项目的 transcript 和相关状态,可以用 claude project purge。claude rm 被拒绝时,重试不是"再执行一遍就行"。 被拒绝后,要按拒绝信息里打印的 flag 和值传参。文档说明 Claude Code 只会丢弃拒绝信息里展示过的内容。如果 worktree 在此期间新增了 commit,会再次保留并显示更新后的状态。--force-remove-worktree 只在满足条件时才会被提示。 官方文档说,Claude Code 只有在能确认该目录是仓库 .claude/worktrees/ 下的 linked worktree、tracked 文件无未提交改动、没有嵌套仓库、也没有其他会话记录引用它时,才提供这个选项。claude rm 更激进。 前者会连未提交的改动一起移除 worktree,所以官方建议先提交想保留的内容。claude rm 不是对话内删除。 它管理的是后台会话列表。claude --resume 会话选择器里,后台会话以 bg 标记显示。docs.claude.com/en/docs/claude-code/cli-reference 会 301 重定向到此)修复登录过期或即将过期时运行该命令可能导致登出的问题。
修复了选项前缀时从 claude attach / logs / stop / respawn / rm 启动新会话时以命令名作为 prompt 的问题
新增子命令,删除会话
修复了无法删除已完成background sessions的问题
修复了移除的任务留在守护进程名单中的问题
修复 Windows 上使用 `claude rm` 后后台会话目录无法删除
改进后台会话清理以在 SIGKILL 前发送 SIGTERM,使清理处理程序得以运行