Anthropic Agent隔离架构解读:比权限弹窗更可靠的是限制爆炸半径

Anthropic Agent隔离架构解读:比权限弹窗更可靠的是限制爆炸半径

摘要

Anthropic Engineering 在 2026 年 5 月发布的《How we contain Claude across products》中,系统复盘了 claude.ai、Claude Code 与 Claude Cowork 三类 Agent 产品的隔离架构。文章的核心判断很直接:Agent 越能干,它潜在的爆炸半径就越大;仅靠模型"听话"或用户频繁点权限弹窗,无法构成可靠安全边界。

对研发团队来说,这篇文章的价值不只是安全案例,而是给出了 Agent 产品工程化的一个分层方法:环境层先限制能做什么,模型层再引导应该做什么,外部内容层负责阻断工具返回和文件内容中的注入。本文结合该文和 Claude Code auto mode 文章,拆解其中对 AI Agent 平台研发最有参考价值的设计取舍。

背景:为什么权限弹窗不是长期答案

早期编码 Agent 常用的安全模型是 human-in-the-loop:读操作默认允许,写文件、执行命令、访问网络前询问用户。这个模型容易理解,也很适合开发者工具的早期形态。但 Anthropic 给出的数据说明了它的瓶颈:Claude Code 用户会批准大约 93% 的权限请求。请求越多,用户越容易进入审批疲劳,弹窗从安全机制变成流程噪音。

这不是用户不负责,而是交互模型本身有问题。一个强 Agent 会连续执行几十步任务,让用户逐条判断每个 bash 命令、网络请求和文件修改,现实中不可持续。更关键的是,一旦攻击通过用户本人进入,例如"帮我运行这段协作提示词",模型层很难把它识别为异常。Anthropic 文章提到,在一次内部红队测试中,恶意提示通过用户输入进入,要求读取本地凭据并外传,模型多次完成了该动作。这个案例说明,用户意图本身并不总是可信边界。

因此,安全问题要从"是否批准这一步"上移到"这一步即使被批准,最多能造成多大损害"。这就是 containment 的工程意义。

技术要点:三类风险与三层防御

Anthropic 将 Agent 风险分成三类:用户误用或恶意使用、模型误行为、外部攻击者通过文件、工具或网络内容注入。这个分类对研发团队很实用,因为它避免把所有问题都归因于"模型不够安全"。很多失败并不是模型单点问题,而是运行时给了模型过大的权限。

对应的防御也分三层。

第一层是环境。包括进程沙箱、虚拟机、文件系统边界、网络出口控制、凭据隔离。它回答的是:Agent 物理上能访问什么。Anthropic 明确强调,如果凭据从不进入 sandbox,即便用户、模型或攻击者触发了错误路径,也无法被 exfiltrate。

第二层是模型。包括系统提示、分类器、探针、训练改进等。它能降低错误概率,但无法提供确定性保证。Claude Code auto mode 就是典型例子:它用分类器自动处理部分命令审批,减少用户审批疲劳,但本质上仍然是概率防线,不能替代环境隔离。

第三层是外部内容。MCP server、插件、网页、GitHub README、项目配置文件都可能把不可信内容送进 Agent 上下文。传统供应链审计只能检查代码是否恶意,不能保证工具返回的文本不会诱导模型越权。因此,工具输出也必须被当成攻击面处理。

三种隔离模式:按产品能力匹配边界强度

claude.ai 的代码执行采用临时容器模式。代码运行在服务端隔离环境中,文件系统按会话临时存在,不访问用户本机。这个模式爆炸半径小,适合通用聊天和轻量代码执行,但能力上限也明显:没有持久 workspace,也不能直接操作用户本地项目。

Claude Code 面向开发者,本质上需要访问本地文件、shell 和网络,否则无法完成真实编码任务。它最初依赖用户审批,后来引入 OS 级 sandbox:macOS 使用 Seatbelt,Linux 使用 bubblewrap,默认允许读,允许在 workspace 内写,网络默认拒绝。Anthropic 称这带来了 84% 的权限提示减少,并开源了 runtime,使边界更可审计。这里的关键取舍是:开发者有能力理解部分 bash 风险,所以可以保留一定人工监督,但必须用 sandbox 降低每次判断失败的后果。

Claude Cowork 面向更通用的知识工作场景,用户未必能理解命令风险,因此采用更强的本地 VM 隔离。VM 有独立内核、文件系统和进程表,只挂载用户选择的 workspace 和必要目录;凭据留在宿主机 keychain,不进入 guest。后续 Anthropic 又把 agent loop 移出 VM,只把代码执行放在 VM 中,以提升可用性。这说明安全架构不是越封闭越好,还要处理启动失败、调试、可观测性等工程问题。

研发视角:真正危险的是"边界前"的代码

文章中最值得研发团队警惕的一个细节,是 Claude Code 曾收到过"trust dialog 之前"的漏洞报告。用户尚未信任项目目录时,本地项目配置就被读取或解析,攻击者可以把恶意 hook 放进仓库配置中,在用户确认之前触发执行。

这类问题在 Agent 产品中很常见:项目打开、配置加载、本地服务发现、插件初始化,看起来都是"启动流程",但从安全角度看,它们已经在处理不可信输入。正确设计应该是:在用户明确接受信任边界之前,不解析会执行代码的配置,不启动项目本地 hook,不把目录中的指令性文本送进模型上下文。

另一个关键点是 egress allowlist 不能只理解成"允许访问这些域名"。Anthropic 复盘了一个场景:允许访问 api.anthropic.com 看似合理,因为产品自身需要调用 API;但如果恶意文件诱导 Agent 使用攻击者的 API key 上传文件,目的域名仍然是允许域名,数据却流向攻击者账号。Anthropic 后续用 VM 内的防御代理校验请求 token 和 provenance。这给研发团队的启示是:出口控制要看能力和身份,而不只是域名。

实践建议:构建 Agent 产品的安全清单

第一,把用户类型纳入威胁模型。面向开发者的工具可以让用户理解部分命令风险;面向普通知识工作者的产品不能假设用户能判断 shell 命令。隔离强度要随用户能力变化,而不是随产品团队偏好变化。

第二,默认把 workspace 之外的文件视为不可达。凭据目录、SSH key、云厂商配置、浏览器数据、系统 keychain 都不应进入 Agent 执行环境。需要访问时,应通过短期、可撤销、范围受限的 token 暴露能力,而不是挂载真实凭据。

第三,网络出口要从"域名 allowlist"升级为"能力 allowlist"。允许访问某个域名,等价于允许该域名下所有 API 能力。对文件上传、服务端转发、外部 webhook、任意账号 token,应做更细粒度校验。

第四,工具输出进入模型上下文前要检查。MCP、连接器和网页检索不是纯数据通道,它们会把文本指令注入模型上下文。对高风险工具返回值,可以用小模型或规则层先做扫描,再决定是否传给主 Agent。

第五,持久记忆要有启动时扫描。CLAUDE.md、项目记忆、长期任务状态目录、定时 Agent 的缓存,都可能成为持久注入点。Agent 每次启动时,不应无条件信任上一轮遗留文本。

风险与限制

Containment 不是零风险方案。沙箱和 VM 会带来性能、可观测性、调试和企业合规问题。Anthropic 也提到,VM 隔离会让主机侧 EDR 难以看见 guest 内部活动,需要额外日志导出能力。隔离越强,产品体验和运维复杂度越高。

另外,本文只基于 Anthropic Engineering 公开文章做工程解读,没有使用其文中外链作为事实来源。不同企业的 Agent 产品还需要结合自身数据敏感度、部署环境、合规要求和用户能力重新建模。

参考来源

相关推荐
星禾元亨几秒前
生成式 AI 时代的架构演进与 GEO 优化:实体企业 AI 落地避坑指南
大数据·人工智能·架构·自动化·创业创新
差不多的周周1 分钟前
《HuMoCon:人类运动理解的概念发现》论文核心部分详解
人工智能·深度学习·计算机视觉·自然语言处理
IT·陈寒5 分钟前
Python的GIL问题又把我坑惨了
人工智能·大模型·api·创业·变现·简历优化
这个DBA有点耶15 分钟前
MySQL大表DDL锁表锁到崩溃?Online DDL的3个关键参数和实战避坑
数据库·mysql·架构
锋行天下26 分钟前
LangGraph 模拟简单的多模型编排
人工智能
依依东望96128 分钟前
还在用 Electron?6 种跨平台桌面方案横评:Rust + Vue 把安装包从 224MB 干到 4.7MB
架构
中年阿甘35 分钟前
对AI结对编程的反思
人工智能·结对编程
用户7217465882640 分钟前
64个音色、¥1/万字符、语音输出贵5倍:TTS/ASR/Omni四层链路的参数细节与两个真实报错
人工智能
人工智能AI技术44 分钟前
给LLM装上长期记忆!用Milvus向量数据库解决AI金鱼记忆问题
人工智能
Evand J1 小时前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波