命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
在后台启动会话并立即返回,打印会话 ID 和管理命令
--bg <prompt>claude --bg "investigate the flaky test"--bg(长形式 --background)把新会话作为 background agent 启动,并立即返回,终端里只打印会话的短 ID 和管理命令。会话本身由一个后台 supervisor 服务托管,所以关掉 agent view 或终端后它仍会继续运行。
-p 的值。启动后的输出形如:
backgrounded · 7c5dcf5d · flaky-test-fix
claude agents list sessions
claude attach 7c5dcf5d open in this terminal
claude logs 7c5dcf5d show recent output
claude stop 7c5dcf5d stop this session
如果托管后台会话的服务尚未运行,--bg 可能会先在上述输出之上打印 Starting background service…。
# 基本用法
claude --bg "investigate the flaky test"
# 指定 agent view 中显示的会话名
claude --bg --name "flaky-test-fix" "investigate the flaky test"
# 以指定 subagent 作为会话主 agent
claude --agent code-reviewer --bg "address review comments on PR 1234"
# 指定模型 / effort / 权限模式
claude --bg --model opus "refactor the authentication module"
claude --bg --effort high "deep investigation of performance bottleneck"
claude --bg --permission-mode plan "review and suggest changes to the API"
# 用完整 session ID 在后台继续已有会话
claude --resume <full-session-id> --bg "pick up where you left off"
# 把 shell 命令作为后台 job 运行,而不是 Claude 会话
claude --bg --exec 'pytest -x'
启动后的管理命令:
| 命令 | 作用 |
|---|---|
claude agents | 打开 agent view;--json 以 JSON 数组输出活动会话(--json --all 还包含已完成的后台会话),--cwd <path> 只显示该目录下启动的会话 |
claude attach <id> | 在当前终端 attach 到后台会话 |
claude logs <id> | 打印会话最近的输出 |
claude stop <id> | 停止会话(也可用 claude kill) |
claude respawn <id> | 重启会话(运行中或已停止),保留对话;--all 重启所有运行中的会话 |
claude rm <id> | 从列表中移除会话 |
| flag | 关系 |
|---|---|
-p / --print | 互斥。Claude Code 在创建任何会话之前就会拒绝该组合,报错 --bg and --print conflict |
--name | 可组合,设置 agent view 里的显示名,替代自动生成的名字 |
--agent | 可组合,以指定 subagent 作为会话主 agent;名称不匹配任何已定义的 subagent 时启动失败:打印 no agent named 警告并仍报告会话已后台化,但会话随即以 --agent '<name>' not found 错误退出 |
--exec | 可组合,把 shell 命令作为 PTY-backed 后台 job 运行,在 agent view 中显示为一行 |
--model / --effort | 可组合,用于指定该会话的 model / effort;claude agents --effort 接受的值与顶层 --effort 相同,包括 ultracode |
--permission-mode | 可组合,可选 plan、acceptEdits、auto、dontAsk、bypassPermissions |
--dangerously-skip-permissions / --allow-dangerously-skip-permissions | 可组合;--dangerously-skip-permissions 等价于 --permission-mode bypassPermissions,--allow-dangerously-skip-permissions 会带入后台会话 |
--resume | 可组合,继续已有对话需传完整 session ID;v2.1.257 及以后,Claude Code 要么在同一 ID 下继续该会话,要么以新 ID 启动一份副本,并打印 note: 行说明无法原地继续的原因 |
--fork-session | 与 --resume 配合,显式启动一份会话副本 |
--bg 与 --continue、不带 ID 的 --resume、带名称或文件路径的 --resume 组合时,Claude Code 总是启动一份副本。想有意复制、并且不要那条提示时,加 --fork-session。
启动时的这些配置 flag 会带入后台会话:--mcp-config、--strict-mcp-config、--settings、--add-dir、--plugin-dir、--fallback-model、--allow-dangerously-skip-permissions。会话中用 /add-dir 添加的目录同样带入。
--bg 本身没有对应的 settings.json 字段或环境变量,必须在命令行传入。以下是与后台会话相关的配置:
| 目的 | flag | env | settings.json |
|---|---|---|---|
| 启动后台会话 | --bg / --background | 无 | 无 |
| 整体关闭 background agents 与 agent view | 无 | CLAUDE_CODE_DISABLE_AGENT_VIEW=1 | "disableAgentView": true |
| 关闭后台会话的 worktree 隔离 | 无 | 无 | "worktree": { "bgIsolation": "none" } |
| 关闭进程重启时后台任务的 carry-over | 无 | CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1 | 无 |
管理员可以通过 managed settings 强制关闭 agent view。
| 约束 | 原因 / 说明 |
|---|---|
不能与 -p / --print 同用 | --print 从不启动 claude agents 可以 attach 的交互会话 |
bypassPermissions 需要先接受免责声明 | 必须先交互式运行一次 claude --dangerously-skip-permissions,否则 claude --bg --permission-mode bypassPermissions 会被拒绝 |
| 默认在隔离的 git worktree 中写文件 | 编辑文件之前,Claude 会把会话移入 .claude/worktrees/ 下的 worktree,让并行会话互不冲突 |
| 以下情况跳过 worktree | 会话已在 linked worktree 内、被编辑文件在 linked worktree 内、工作目录不是 git 仓库且没有配置 WorktreeCreate hook、写入位置在工作目录之外 |
| 空闲进程会被回收 | 会话结束或在等你回复、且约一小时无人 attach 时,supervisor 会停掉进程释放资源;对话保留在磁盘,下次 attach 或回复时接着运行。用 Ctrl+T pin 住可让进程一直运行 |
| 进程意外退出会被重启 | supervisor 在运行期间会重启意外退出的进程;权限模式、model、effort 在重启后保持不变 |
后台会话的状态文件位置:
| 路径 | 内容 |
|---|---|
~/.claude/daemon.log | supervisor 日志 |
~/.claude/daemon/roster.json | 运行中的后台会话列表 |
~/.claude/jobs/<id>/state.json | agent view 显示的单会话状态 |
~/.claude/jobs/<id>/tmp/ | 单会话临时目录(会话内有 CLAUDE_JOB_DIR 环境变量指向 ~/.claude/jobs/<id>) |
claude --bg "..." 是独立会话,各自写自己的 worktree,之后用 claude agents 统一查看。claude --agent code-reviewer --bg "..."。claude --bg --exec 'pytest -x' 以后台 job 运行测试,并在 agent view 里查看。claude agents --json 输出 JSON 数组,--json --all 包含已完成的会话。claude --resume <full-session-id> --bg "..."。--bg:--bg 不是 headless 模式,与 -p 互斥。需要把结果打印到 stdout 的脚本场景应使用 -p。env(例如 ANTHROPIC_MODEL 或 provider 变量)会作用于该目录下的每个后台会话。PATH,并保留该 shell 的云 provider 选择(如 CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX)、ANTHROPIC_DEFAULT_*_MODEL 别名以及导出的 CLAUDE_CODE_EXTRA_BODY。ANTHROPIC_BASE_URL 不一定生效:只有 supervisor 本身也是在导出了同一网关的 shell 中启动时,它(连同 ANTHROPIC_CUSTOM_HEADERS 和凭据)才会到达后台会话。官方建议把网关配置写进 settings 文件。claude rm 会一并清理:它把会话从列表移除,同时在安全时删除 Claude 为它创建的 worktree。对话 transcript 仍保留在本机,可通过 claude --resume 找回。存在未推送提交时需要 --discard-unpushed <commit>@<worktree-id>,强制删除 worktree 用 --force-remove-worktree <worktree-id>。--agent 名称写错会直接启动失败:会先打印 no agent named 警告并仍报告会话已后台化,但会话随即以 --agent '<name>' not found 错误退出。https://docs.claude.com/en/docs/claude-code/cli-reference 会 301 重定向到此)修复发给后台会话的 prompt 或回复以 --bg 开头时被当作参数、反复启动新会话的问题。
修复了在 Windows 上拒绝用不同大小写保存的信任记录的文件夹的问题
修复了后台会话在未通过工作区信任时仍然启动的问题
修复背景 session 无法运行 git、hooks 等 helper 程序
修复了当插件 LSP server 退出或关闭 stdin 时后台会话也退出的问题。
修复后台会话在空闲超时前被中断的问题
修复与 --model 组合在 Max plans 上仍要求使用积分的问题
修复了 Windows 上 PowerShell 5.1 被阻止时的 uv_spawn 错误
修复了 CLAUDE_CODE_EXTRA_BODY 环境变量被忽略的问题
修复了在 help 中未被列出的问题
修复 claude --bg -cn <name> 组合不能正确设置会话名称的问题。
修复使用 `--bg` 时后台守护进程冷启动偶尔因 socket 缺失而失败
新增启动参数用于启用后台命令执行,与 --exec 配合运行 shell 命令
修复了即使升级后仍在过期守护程序上运行的问题
修复启动后台会话时的持久化问题
修复后台服务即将空闲退出时连接失败的问题