12.2 权限系统与沙箱设计
本节首先对比 Claude Code 和 OpenClaw 的权限框架设计,再介绍通用的权限框架与沙箱隔离策略,最后讨论两者的协同机制,涵盖从权限定义到执行的完整防护链条。
12.2.1 权限框架对比
Claude Code 权限框架
Claude Code 当前 defaultMode 支持 default、acceptEdits、plan、auto、dontAsk 和 bypassPermissions。其中 default 主要自动允许读取并在编辑或执行时提示,acceptEdits 可自动批准文件编辑和部分工作区内文件系统操作,plan 用于只读研究和计划,auto 在项目或本地设置中会被忽略,bypassPermissions 会跳过权限层,官方建议仅在隔离环境中使用;组织也可通过 disableBypassPermissionsMode 禁用该模式。以下将其扩展为更细粒度的六级模型,便于理解权限决策的设计空间:
type PermissionMode =
| "manual_only" // 完全人工操作
| "approve_always" // 每步审批
| "approve_once" // 一次审批
| "ask_first" // 事前询问
| "auto_notification" // 自动+通知
| "auto_trusted" // 完全自动
// 应用于每个工具调用
interface ToolCall {
toolName: string;
args: ToolArgs;
permissionMode: PermissionMode; // 基于风险动态决定
confidenceScore: number; // 模型对决策的置信度
}风险评估与权限模式映射:
Claude Code 通过公开权限模式、allow/deny 规则和组织策略控制工具调用边界。以下代码是通用风险评估伪代码,用于说明 Harness 可怎样组织权限决策,不代表 Claude Code 的真实内部 SDK 或实现:
六模式的实际应用:
manual_only
极高风险操作(rm -rf /)
每步人工批准
完全控制
approve_always
高风险操作(delete, transfer)
每个操作人工批准
逐步控制
approve_once
中高风险(任务批量操作)
任务开始批准一次
计划控制
ask_first
中等风险(关键文件读取)
首次询问,记住选择
选择性控制
auto_notification
低风险(日常读取、列表)
自动执行+通知
事后可知
auto_trusted
极低风险(查询、计算)
完全自动,无通知
最小开销
OpenClaw 权限系统
OpenClaw 实际采用三级权限系统(deny/allowlist/full),配合三种审批选项(Allow once/Always allow/Deny)和三种提示模式(off/on-miss/always)。以下将其扩展为六个权限等级,展示完整的权限梯度设计:
图 12-4:六级权限信任模型
工作机制:
设计特点:
粒度:工具 + 规范化参数 / 资源 + 风险等级
状态维护:用户×工具×资源×风险的审批范围;敏感路径和高风险参数不进入长期缓存
适用场景:自驱型 Agent,需要用户交互反馈
6 级模型的完整支持:
Manual Only: 完全人工操作,每次都需要确认
Approve Always: 每个操作都需要人工批准
Approve Once: 任务开始时批准一次,执行过程中不再询问
Ask First: 首次询问,后续记住用户决择,24 小时有效
Auto with Notification: 自动执行并发送通知
Full Trust: 完全信任,无需额外验证
12.2.2 通用权限框架设计
综合 Claude Code 和 OpenClaw 的优点,设计一个通用框架:
1. 权限定义层
权限层的基础定义:
决策权归属:风险分级之上的类别化前置门
前述风险分数到权限模式的映射是一条连续梯度,回答的是该操作需要多少人工摩擦,却回答不了该操作是否应当由智能体代为决策。一次金额很小、历史上高频批准的转账,其 risk_score 可能趋近 0,若仅由风险分类器裁决就会被路由到 FULL_TRUST 而自动放行——这并非风险估计的误差,而是决策权属性问题:某些操作无论风险高低,都不应由智能体自主拍板。
参考三部门 2026 年 5 月印发的《智能体规范应用与创新发展实施意见》所厘清的三类决策边界,可在风险梯度之上叠加一条正交的决策权归属轴,其类别裁决优先于风险分数、且不可被风险分类器下调:
仅限用户本人决策(
USER_ONLY):转账、授权变更、不可逆删除等,须由用户本人执行或逐次确认,即便risk_score趋近 0 也不自动放行。需用户授权决策(
USER_AUTHORIZED):在用户明确授权的范围内可代为执行,但不得超出授权边界,越界即回落为用户本人决策。智能体自主决策(
AGENT_AUTONOMOUS):只读查询、信息汇总等可自主执行,用户对结果仍保留知情权与最终决策权。
该轴与风险分数互补而非替代:决策权归属先做类别化裁决,把 USER_ONLY 操作钉死在人工审批端;只有落入 AGENT_AUTONOMOUS 的操作,才继续沿风险分数梯度决定具体的摩擦程度。
2. 权限决策引擎
权限决策引擎的完整实现:
3. 异步权限决策
在并发 Agent 系统中,权限决策需支持异步操作。现代 Agent 系统几乎全部采用异步架构,PolicyEngine.evaluate 应提供 async 版本以支持并发工具调用、数据库查询等 I/O 操作。以下为异步版 PolicyEngine.evaluate 示例:
4. 子智能体权限继承
当智能体创建子智能体时,权限继承需特殊处理。Claude Code 的子智能体通常继承父会话的权限模式,并通过前台/后台执行、工具 allowlist 和用户确认边界控制风险,而不是使用独立的子智能体权限模式:
12.2.3 沙箱隔离策略
沙箱的目标是 限制突破:即使智能体执行恶意操作,破坏范围也受限。
1. 进程级隔离
机制:使用操作系统原语限制单个进程的资源访问。
优点:简单,无需额外软件。 缺点:无法限制文件系统访问,无法隔离网络。
2. 容器级隔离
机制:使用 Docker/Podman 将工具执行环境隔离在容器内。
优点:强隔离,镜像文件系统只读,临时目录不把宿主路径读写挂入容器,网络隔离完全。 缺点:每次创建容器开销大(500ms-1s),资源占用多。
3. 虚拟机级隔离
机制:使用轻量级 VM(如 Firecracker, gVisor)进行更强隔离。
适用场景:极高安全要求(金融、医疗)。
沙箱选择矩阵
进程
低
否
否
部分
开发调试
容器
中
是
是
是
生产环境
VM
高
是
是
是
高安全要求
12.2.4 权限与沙箱的协同
最佳实践是 权限决策 + 沙箱执行 的两层防护:
本节总结:权限与沙箱是防护的两个维度。权限控制 是否允许 执行,沙箱限制 执行的破坏范围。两者结合形成纵深防护。
最后更新于
