Appearance
Sandbox CLI
管理用于隔离 Agent 执行的沙箱运行时。
概述
OpenClaw 可以在隔离的沙箱运行时中运行 Agent 以保证安全。sandbox 命令帮助你在更新或配置变更后检查并重建这些运行时。
目前支持以下沙箱运行时:
- Docker 沙箱容器
- SSH 沙箱运行时(当
agents.defaults.sandbox.backend = "ssh"时) - OpenShell 沙箱运行时(当
agents.defaults.sandbox.backend = "openshell"时)
对于 ssh 和 OpenShell remote 模式,重建的意义比 Docker 更重要:
- 远程工作区在初始种子化后就是规范的
openclaw sandbox recreate会删除所选范围的规范远程工作区- 下次使用时会从当前本地工作区重新种子化
命令
openclaw sandbox explain
查看有效的沙箱模式/范围/工作区访问权限、沙箱工具策略以及提升门控(附带修复配置键路径)。
bash
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --jsonopenclaw sandbox list
列出所有沙箱运行时及其状态和配置。
bash
openclaw sandbox list
openclaw sandbox list --browser # 仅列出浏览器容器
openclaw sandbox list --json # JSON 输出输出内容包括:
- 运行时名称和状态
- 后端类型(
docker、openshell等) - 配置标签及是否与当前配置匹配
- 存活时间(创建以来经过的时间)
- 空闲时间(上次使用以来经过的时间)
- 关联的 Session/Agent
openclaw sandbox recreate
删除沙箱运行时,强制以更新后的配置重新创建。
bash
openclaw sandbox recreate --all # 重建所有容器
openclaw sandbox recreate --session main # 指定 Session
openclaw sandbox recreate --agent mybot # 指定 Agent
openclaw sandbox recreate --browser # 仅浏览器容器
openclaw sandbox recreate --all --force # 跳过确认选项:
--all:重建所有沙箱容器--session <key>:重建指定 Session 的容器--agent <id>:重建指定 Agent 的容器--browser:仅重建浏览器容器--force:跳过确认提示
注意: Agent 下次被使用时,运行时会自动重建。
使用场景
更新 Docker 镜像后
bash
# 拉取新镜像
docker pull openclaw-sandbox:latest
docker tag openclaw-sandbox:latest openclaw-sandbox:bookworm-slim
# 更新配置使用新镜像
# 编辑配置:agents.defaults.sandbox.docker.image(或 agents.list[].sandbox.docker.image)
# 重建容器
openclaw sandbox recreate --all修改沙箱配置后
bash
# 编辑配置:agents.defaults.sandbox.*(或 agents.list[].sandbox.*)
# 重建以应用新配置
openclaw sandbox recreate --all修改 SSH 目标或 SSH 认证材料后
bash
# 编辑配置:
# - agents.defaults.sandbox.backend
# - agents.defaults.sandbox.ssh.target
# - agents.defaults.sandbox.ssh.workspaceRoot
# - agents.defaults.sandbox.ssh.identityFile / certificateFile / knownHostsFile
# - agents.defaults.sandbox.ssh.identityData / certificateData / knownHostsData
openclaw sandbox recreate --all对于核心 ssh 后端,重建会删除 SSH 目标上的每范围远程工作区根目录,下次运行时从本地工作区重新种子化。
修改 OpenShell 来源、策略或模式后
bash
# 编辑配置:
# - agents.defaults.sandbox.backend
# - plugins.entries.openshell.config.from
# - plugins.entries.openshell.config.mode
# - plugins.entries.openshell.config.policy
openclaw sandbox recreate --all对于 OpenShell remote 模式,重建会删除该范围的规范远程工作区,下次运行时从本地工作区重新种子化。
修改 setupCommand 后
bash
openclaw sandbox recreate --all
# 或仅针对某个 Agent:
openclaw sandbox recreate --agent family仅针对特定 Agent
bash
# 只更新一个 Agent 的容器
openclaw sandbox recreate --agent alfred为什么需要这个命令
问题:更新沙箱配置时:
- 现有运行时继续以旧设置运行
- 运行时只在空闲 24 小时后才会被清理
- 频繁使用的 Agent 会无限期保留旧运行时
解决方案:使用 openclaw sandbox recreate 强制删除旧运行时,下次需要时会自动以当前设置重建。
Tips:养龙虾遇到沙箱问题时,优先用
openclaw sandbox recreate,比手动清理 Docker 容器靠谱得多,它会正确处理范围/Session 键的变更。
配置
沙箱设置位于 ~/.openclaw/openclaw.json 的 agents.defaults.sandbox 下(每个 Agent 的覆盖配置在 agents.list[].sandbox):
jsonc
{
"agents": {
"defaults": {
"sandbox": {
"mode": "all", // off, non-main, all
"backend": "docker", // docker, ssh, openshell
"scope": "agent", // session, agent, shared
"docker": {
"image": "openclaw-sandbox:bookworm-slim",
"containerPrefix": "openclaw-sbx-",
// ... 更多 Docker 选项
},
"prune": {
"idleHours": 24, // 空闲 24 小时后自动清理
"maxAgeDays": 7, // 7 天后自动清理
},
},
},
},
}参阅
- Sandbox 文档
- Agent 配置
- Doctor 命令 — 检查沙箱配置