Gateway 与运维网关
默认本地后端:其受限制的默认值、GPU 和 Docker-out-of-Docker 约束以及沙盒浏览器容器。
Docker 后端
Docker 后端通过 docker CLI 在本地运行工具。它的选择和错误行为不变;它不会检查或回退到 Podman。
默认值:network: "none"(无外部网络访问)、readOnlyRoot: true、capDrop: ["ALL"]、镜像 openclaw-sandbox:bookworm-slim。
此显式配置使代理工作区保持只读,并保留默认的受限运行时状态:
json5{ agents: { defaults: { sandbox: { mode: "all", backend: "docker", scope: "session", workspaceAccess: "ro", docker: { image: "openclaw-sandbox:bookworm-slim", readOnlyRoot: true, tmpfs: ["/tmp", "/var/tmp", "/run"], network: "none", capDrop: ["ALL"], }, }, }, },}
OpenClaw 还会为 Docker 沙箱容器创建 init 进程,并启用 no-new-privileges。使用 workspaceAccess: "ro" 时,代理工作区会以只读方式挂载到 /agent;对代理工作区的写入操作会被拒绝,而配置的 tmpfs 路径仍保持可写。
文件工具需要主机支持的绑定安装。 tmpfs 或镜像卷可以隐藏工作空间绑定下的文件;文件工具将这些路径报告为仅容器路径,而不是读取隐藏的主机文件。使用 exec 访问该存储。当文件工具在容器中可见时,更深层次的显式绑定会恢复文件工具访问权限。当无法从容器的挂载表建立主机投影时,通过符号链接到达的挂载目标或具有不同后备存储的堆叠挂载也需要 exec。
对于最近使用的容器,对绑定源或访问模式的更改,或者对绑定下的 tmpfs 目标或只读模式的更改,需要范围内的重新创建。其他 tmpfs 选项(例如大小、模式和 uid)保持正常的配置更改行为:热容器保持运行并发出重新通知,而停止或过期的容器将被替换。显式重新创建以立即应用这些选项。
要公开主机 GPU,请将 agents.defaults.sandbox.docker.gpus(或每个代理覆盖)设置为 "all" 或 "device=GPU-uuid" 等值。这将传递到所选容器引擎的 Docker- 兼容 --gpus 标志,并需要兼容的主机 GPU 设置。对于此选项,Podman 需要 5.0 或更高版本。
沙箱浏览器
- 沙盒浏览器会自动启动,并在浏览器工具需要时等待 CDP 变得可访问。通过
agents.defaults.sandbox.browser.autoStart(默认true)和autoStartTimeoutMs(默认12秒)进行配置。
- 沙箱浏览器容器使用专用 Docker 网络(
openclaw-sandbox-browser),而不是全局的 bridge 网络。通过 agents.defaults.sandbox.browser.network 进行配置。
- 不支持沙箱浏览器网络模式
"none",因为浏览器控制需要主机发布 CDP 端口。请使用专用默认网络、bridge 或其他自定义 bridge 网络。openclaw doctor --fix 会禁用受影响的持久化 sidecar,并恢复专用网络,不会在不提示的情况下启用出站访问。
agents.defaults.sandbox.browser.cdpSourceRange 使用 CIDR 允许列表(例如 172.21.0.1/32)限制容器边缘 CDP 入口。
- noVNC观察者访问默认受密码保护; OpenClaw 发出一个短期令牌 URL,该令牌服务于本地引导页面,并使用 URL 片段(不是查询字符串或标头日志)中的密码打开 noVNC。
agents.defaults.sandbox.browser.allowHostControl(默认值为 false)允许沙箱会话显式指定主机浏览器作为目标。
- 可选的允许列表会限制
target: "custom":allowedControlUrls、allowedControlHosts、allowedControlPorts。