核心目标是实现团队级互不干扰、资源可控、安全隔离的开发执行环境;关键配置为agents.defaults.sandbox.scope = "agent",确保每个agent(对应一个团队)独享容器实例,并配合专属工作区挂载、最小化镜像、禁网默认+白名单放行、销毁即清零等系统性隔离措施。
多团队独立容器沙箱的核心目标,是让每个团队拥有互不干扰、资源可控、安全隔离的开发执行环境。它不是简单起个容器,而是从生命周期、权限边界、网络策略到数据落盘,做系统性隔离设计。
按团队粒度分配独立沙箱容器
关键配置项是 agents.defaults.sandbox.scope = agent。该设置确保每个 Agent(通常对应一个团队或一位开发者)启动时,都创建全新的容器实例,而非共享或复用。这样,A团队运行的 Python 脚本无法看到 B团队容器内的进程、文件或内存状态。相比 session 或 shared 模式,agent 粒度隔离强度最高,适合多团队并行开发敏感业务逻辑的场景。
挂载专属工作区与只读系统层
容器初始化时,需显式挂载团队专属目录到 /workspace,例如:
- /mnt/team-alpha → /workspace(只读基础镜像 + 可写团队代码)
- 禁用其他路径挂载,避免意外访问宿主机全局配置或日志
- 基础镜像使用最小化 runtime(如 openclaw/runtime:alpine),不含 curl、wget、ssh 等外网工具
默认禁用网络,按需白名单放行
沙箱默认采用 none 网络模式,彻底阻断外网出向连接,防止密钥泄露或恶意 C2 通信。若某团队确需调用内部 API,应通过以下方式精准控制:
- 为该团队容器单独启用 host network 并绑定固定端口(仅限内网服务)
- 或在容器启动时注入 --add-host=api.internal:10.20.30.40,绕过 DNS 解析风险
- 禁止使用 --network=bridge 或 --net=container 等可能引入横向访问的模式
销毁即清零,杜绝残留风险
会话结束或超时后,必须主动触发容器销毁,而非保持 idle 状态。销毁动作包含:
- 删除整个容器实例(docker rm -f 或 Kubernetes Pod 终止)
- 自动清理所有挂载卷中临时写入的数据(包括 /workspace/.cache、/tmp、~/.ssh)
- 不保留任何 checkpoint、snapshot 或 volume snapshot
不复杂但容易忽略











