Skip to content

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 --json

openclaw sandbox list

列出所有沙箱运行时及其状态和配置。

bash
openclaw sandbox list
openclaw sandbox list --browser  # 仅列出浏览器容器
openclaw sandbox list --json     # JSON 输出

输出内容包括:

  • 运行时名称和状态
  • 后端类型(dockeropenshell 等)
  • 配置标签及是否与当前配置匹配
  • 存活时间(创建以来经过的时间)
  • 空闲时间(上次使用以来经过的时间)
  • 关联的 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.jsonagents.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 天后自动清理
        },
      },
    },
  },
}

参阅