第 5 章 权限、沙箱与外部副作用治理
全面讲解AI Agent的权限控制体系,包括四层权限模型、沙箱配置、审批策略以及环境分级安全标准,帮助团队建立安全可控的AI开发与运行环境。
Agent 的能力越强,越不能用一个“全自动”开关解决治理问题。本章把文件、命令、网络、浏览器、业务系统与生产操作分层。
图 3:权限应随风险逐级收紧;自动化不是取消控制,而是把控制放到正确的位置。
5.1 权限由四层共同决定
| 层 | 控制什么 | 常见配置 |
|---|---|---|
| 工作区边界 | Agent 能看到和写入哪些目录、仓库、文件夹 | 打开的项目、writable roots、`–add-dir`、多文件夹项目 |
| 沙箱能力 | 进程能否写磁盘、运行命令、联网、访问系统资源 | read-only / workspace / danger-full-access;容器与 OS sandbox |
| 审批策略 | 哪些动作自动通过,哪些必须询问 | Ask for approval、Auto-review、Claude permission modes、白名单 |
| 业务系统权限 | 插件、MCP、机器人账号可以做什么 | OAuth scopes、服务账号、测试租户、审计日志 |
5.2 Codex 权限的实用理解
| 配置思路 | 含义 | 适合场景 |
|---|---|---|
| Ask for approval | 关键编辑或命令前询问,适合保持人工控制 | 新人、陌生仓库、高风险项目 |
| Approve for me / Auto-review | Agent 代表你审阅低风险动作,但仍受沙箱与策略限制 | 日常开发、可信项目、验证充分的循环 |
| Full access | 显著放宽本机与命令边界 | 只在隔离环境、临时容器或明确演练场景 |
| Custom / Profiles | 细分文件、网络、命令和可写根目录 | 团队标准化、CI、受控开发容器 |
-
CLI / 客户端可通过 `/permissions` 查看当前边界。
-
常见内置沙箱档位可理解为 read-only、workspace、danger-full-access;实际名称与参数以当前 `codex –help` 和组织策略为准。
-
审批与沙箱是两件事:不询问不代表没有沙箱;有沙箱也不代表外部业务账号安全。
5.3 Claude Code 权限的实用理解
| 模式 | 用途 | 建议 |
|---|---|---|
| plan | 只读分析、方案与代码审阅 | 复杂任务默认起手;先确认路径再执行 |
| default | 关键动作逐项确认 | 新人和高风险仓库 |
| acceptEdits | 文件编辑更顺滑,命令仍谨慎 | 本地日常开发 |
| auto | 在后台安全检查下提高自动批准程度 | 可信项目;确认套餐、模型与组织策略 |
| dontAsk / bypassPermissions | 减少或绕过交互确认 | 只在 CI、容器或一次性隔离环境;不要用于日常主机 |
版本变化提醒:Claude Code 的 Auto Mode、默认行为与可用计划在 2026 年多次调整。不要把培训截图或旧讲义当作永久事实;使用 /permissions、/config、/help 与 changelog 复核。
5.4 高风险动作的统一审批表
| 动作 | 默认策略 | 附加控制 |
|---|---|---|
| 读取代码与公开文档 | 可自动 | 限制目录;过滤密钥与客户数据 |
| 修改工作区文件 | 可自动或 Auto-review | Git checkpoint、Diff、测试、禁止越界目录 |
| 安装依赖 / 联网下载 | 需确认或白名单 | 锁定 registry、校验许可证与供应链风险 |
| 运行测试 / build / formatter | 通常可自动 | 资源上限、超时、禁止访问生产网络 |
| Git commit | 可自动生成,建议人工审阅 | commit 范围、消息规范、签名策略 |
| Git push / 创建 PR | 人工确认 | 目标仓库与分支校验、保护分支、CI 门禁 |
| 发消息 / 写文档 / 改工单 | 预览 + 二次确认 | 测试群、幂等键、审计、撤销路径 |
| 部署 / 数据库迁移 | 人工审批;生产默认禁止自动 | 环境隔离、变更单、备份、回滚与观察窗口 |
| 删除、权限、财务、密钥 | 禁止默认自动化 | 双人审批、专用账号、强审计 |
5.5 浏览器和电脑操作的额外风险
-
网页中的提示注入可能诱导 Agent 泄露上下文、点击外链或执行与任务无关的动作。
-
GUI 操作可能绕过 API 层的字段校验和 dry-run,因此敏感动作应在点击前停下。
-
多个登录账号并存时,必须明确浏览器 profile、租户、环境和当前身份。
-
不要把截图中的“成功提示”当作最终证据;还要核对后台数据、日志、目标对象和时间。
-
对客户系统使用 Computer Use 前,应取得书面授权并限定范围。
5.6 密钥、环境变量与日志
最低安全线:不把真实密钥写入 AGENTS.md、Skill、聊天记录、命令示例、测试快照或 PR。规则文件只写变量名、获取方式和禁止事项。
| 问题 | 正确做法 |
|---|---|
| Agent 需要访问第三方 API | 使用系统 keychain、密钥管理器、短期 token 或受控环境注入 |
| 命令输出可能含密钥 | 对日志做脱敏;关闭 shell tracing;不要把完整输出粘进 PR |
| Cloud / Routine 需要凭据 | 为任务建立专用服务账号与最小 scope,设置过期和撤销机制 |
| 多人共享 MCP | 由管理员管理连接和权限,不共享个人长期 token |
| 调试生产问题 | 优先只读、采样和脱敏副本;不得让 Agent 自由探索生产数据 |
5.7 推荐的环境分级
| 环境 | 允许自动化程度 | 示例 |
|---|---|---|
| 个人沙盒 | 高;仍保留外部副作用确认 | 临时仓库、Mock 数据、容器 |
| 团队开发 | 中高;规则、CI、白名单统一 | 开发分支、测试数据库、内部插件 |
| 预发布 | 中;变更与验证受控 | 回归、性能、部署演练 |
| 生产 | 低;只读诊断优先,写操作必须审批 | 日志查询、变更建议、人工执行 runbook |
| 高敏系统 | 极低或禁止 | 财务、身份权限、密钥、医疗与受监管数据 |