治理边界与当前限制
English | 中文
审批、沙箱和审计不是同一个安全按钮
治理首先要说清每层控制阻止什么、记录什么、不能阻止什么。把几个机制统称为“安全”会掩盖真正的上线条件。
工具策略、审批和执行限制在动作前收紧权限。
本地同世界约束与远程执行环境具有不同信任前提。
会话事件保存事实,但不替代身份、保留和合规制度。
六层治理模型
企业部署需要把身份、Agent 组装、工具决策、执行环境、凭据和会话证据连起来。每层只承担自己的职责;后面的审计不能补救前面的越权执行。
| 层 | 当前 Harness 提供什么 | 部署方仍需提供什么 |
|---|---|---|
| 身份与租户 | 会话、Agent、工具和 opaque id 的运行身份 | 企业 SSO、租户目录、角色和人员离职流程 |
| Agent 组装 | preset、profile、bundle 与作用域服务解析 | 谁能创建、修改、审核和发布组装 |
| 工具决策 | 参数 schema、guard、审批、超时与结果事件 | 领域授权、动作分级、审批人和例外政策 |
| 执行环境 | 文件效果策略、本地沙箱提供方与 E2B POC | 网络、进程、设备、容器和平台安全基线 |
| 凭据 | 引用与值分离、按操作解析、可描述但不返回值 | KMS/keyring、轮换、审计和应急吊销 |
| 会话证据 | 仅追加事件、持久化、投影与格式拒绝 | 保留期、访问控制、脱敏、导出和监管解释 |
审批:决定这次动作能不能做
审批服务围绕工具请求产生 approval/asked 与 approval/decided 审计对,并支持每会话 ask 或 never 策略。ask 只有在存在答复方并返回允许时执行;缺少答复、答复异常或策略为 never 都会拒绝。机制位于审批服务。
审批的边界很清楚:它处理“这次工具调用是否获得人或策略授权”,不负责约束工具函数内部可以访问什么,也不证明批准人具备业务系统中的最终权限。领域工具还要把调用方身份和业务授权传给真实系统。
文件策略与本地沙箱:限制文件效果
SandboxMode 表达 read-only、workspace-write 和 danger-full-access 等文件效果策略。本地后端与宿主共享文件系统和内核,Linux/macOS/Windows 提供方使用不同机制;请求无法按指定模式执行时应失败关闭,不允许偷偷裸跑。语义见沙箱服务和本地提供方。
这项 seam 不表达网络、进程、syscall、设备或凭据限制。Windows ACL 后端只约束写入并报告部分执行,调用方可读文件和网络连接不在同一机制内。把 read-only 理解成“整台机器只读且断网”是不正确的。
远程执行:替换整个执行世界
E2B 组合把文件系统和子进程提供方放进远程 Linux sandbox,为进程与文件提供与 Host 分离的执行环境。它不会迁移 Harness 进程、模型调用、会话状态、skill、协议状态或 SDK 缓冲;这些仍在 Host。当前实现明确标记为实验性 POC,详情见E2B 组合。
远程执行比本地文件策略更接近环境隔离,但仍需核查镜像、网络、secret 注入、沙箱回收、分区恢复和提供方日志。当前 E2B POC 不支持把 secret 放入 sandbox 默认环境变量,也不提供 Windows 或网络分区保真层。
动态代码:用于受信扩展,不是恶意代码安全边界
Code runtime、动态 workflow 与自修改 Cordis 工具使用 worker 或 node:vm 隔离事件循环、限制默认全局或塑造 API。它们的信任姿态与 Bash 接近;可逃逸脚本可能获得进程权限。代码运行时明确写作“containment, not a security boundary”,动态 Cordis 插件还能通过获准服务影响真实运行时。
因此,只有当模型与脚本处于受信边界内时才使用这些能力。运行第三方或对抗性代码需要独立进程、容器、microVM 或远程执行提供方,并限制凭据与网络。证据见worker-thread code runtime、workflow worker和动态 Cordis 工具。
会话日志:提供事实,不自动提供合规
会话日志保存模型可见消息、工具事实、策略变化和生命周期事件;持久化与投影使刷新、恢复和多界面回放读取同一序列。追加位置拒绝非无损 JSON,加载位置拒绝未知必需事件和不支持格式,避免静默误读。
日志并不自动回答“谁依法可以查看”“保存多久”“哪些字段必须脱敏”“怎样导出给审计员”。这些属于部署存储、企业身份、数据分类和监管制度。Harness 提供的是构建审计链的技术事实层。
当前限制清单
| 主题 | 当前事实 | 上线含义 |
|---|---|---|
| 本地 sandbox | 与宿主共享文件系统和内核,只表达文件效果 | 需要独立网络、进程和设备控制 |
| Windows ACL | 写限制为部分执行,Everyone 权限可能保留 | 高敏场景不能把它当完整 OS 隔离 |
| E2B | 实验性 POC,执行世界之外的状态留在 Host | 先验证生命周期、secret 和故障恢复 |
| 动态 workflow | 无 journal 或 resume,重启不能续跑 | 长任务要能重做或交给持久工作流系统 |
| worker/vm | API 塑形和事件循环隔离,不防恶意代码 | 不可信代码必须使用更强隔离 |
| ACP | 新会话、基线文本、已提交 assistant 文本 | 不能把它当完整 Web 会话协议 |
| subagent 审批 | 委派子会话固定为 never | 超出既有权限的工作必须返回父 Agent 处理 |
上线评审时应直接问的问题
谁决定某个 Agent 拥有哪些工具?
把 preset、profile 和 bundle 的作者、审核人、发布人分开,并记录每个环境实际装载的组合。只审查提示词不能覆盖插件权限。
一次批准到底允许什么?
审批文案应包括动作、对象、影响范围和一次性语义。业务系统仍要校验调用方身份与幂等键。
文件 sandbox 之外还能访问什么?
按平台核查网络、进程可见性、环境变量、设备和调用方本来可读的文件;这些不属于通用 SandboxMode 的策略词汇。
崩溃后哪些工作能恢复?
会话和 continuable subagent 有持久路径;动态 workflow 与普通后台 job 不应被假定为跨进程恢复。
日志里有没有不该长期保存的内容?
对用户材料、工具参数、结果和诊断做数据分类,再设置存储保留、访问和脱敏策略。可回放不等于可以无限期保存。
把能力集缩小、把高风险动作前置拦截、把事实完整记录
生产治理依赖三件事同时成立:Agent 只获得任务所需能力;不可逆动作在执行前被策略或人工控制;发生过的事实能由受控主体复查。任何一项缺失都不能靠另一项代替。
证据状态:除特别标注外,本页基于当前源码已确认。上线建议需要结合目标企业的身份、网络、数据分类和监管制度。