For the complete documentation index, see llms.txt. This page is also available as Markdown.

12.2 权限系统与沙箱设计

本节首先对比 Claude Code 和 OpenClaw 的权限框架设计,再介绍通用的权限框架与沙箱隔离策略,最后讨论两者的协同机制,涵盖从权限定义到执行的完整防护链条。

12.2.1 权限框架对比

Claude Code 权限框架

Claude Code 当前 defaultMode 支持 defaultacceptEditsplanautodontAskbypassPermissions。其中 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 权限与沙箱的协同

最佳实践是 权限决策 + 沙箱执行 的两层防护:


本节总结:权限与沙箱是防护的两个维度。权限控制 是否允许 执行,沙箱限制 执行的破坏范围。两者结合形成纵深防护。

最后更新于