让 Claude Code 更安全也更自主:沙箱机制
来自 Anthropic Engineering · 期号 2025-10-20
摘要
Claude Code 的权限模型默认是只读的,每次修改或运行命令都需要用户批准。频繁点击「批准」会导致疲劳,反而降低安全性。 Anthropic 引入了沙箱机制,在操作系统层面设置两道边界:文件系统隔离(Claude 只能访问指定目录)和网络隔离(只能连接允许的服务器)。两者缺一不可——没有网络隔离,被注入的 agent 可以外泄 SSH 密钥;没有文件系统隔离,agent 可以逃逸沙箱。 基于此,Claude Code 新增了两个沙箱功能:沙箱 bash 工具(在定义好的范围内运行命令,无需逐条批准)和 Claude Code on the web(浏览器中的沙箱环境)。Anthropic 内部使用显示,沙箱将权限提示减少了 84%。 沙箱运行时基于 Linux bubblewrap 和 macOS seatbelt 等操作系统级原语构建,不仅约束 Claude Code 的直接操作,也约束命令产生的所有子进程。
深读
导读 Anthropic 为 Claude Code 引入了基于操作系统级原语的沙箱机制,在文件系统和网络两个维度设置隔离边界,将权限提示减少了 84%。这篇文章详细解释了沙箱的设计原理、两种新功能(沙箱 bash 工具和 Claude Code on the web)的实现方式,以及为什么文件系统隔离和网络隔离必须同时使用才能有效防御 prompt injection。 关键信息 - Claude Code 默认权限模型为只读,修改或运行命令需用户逐条批准;自动允许 echo 或 cat 等安全命令,其余操作仍需显式确认。 - 沙箱基于 Linux bubblewrap 和 macOS seatbelt 等操作系统级原语构建,约束范围覆盖 Claude Code 的直接操作以及命令产生的所有脚本、程序和子进程。 - 沙箱 bash 工具(beta 研究预览版)允许用户定义 agent 可访问的目录和网络主机,无需管理容器即可运行,已开源。 - 沙箱将权限提示减少了 84%,Anthropic 内部使用数据支撑这一结论。 - Claude Code on the web 在云端隔离沙箱中运行每个会话,敏感凭据(如 git 凭据或签名密钥)从不放入沙箱内部。 - 网络隔离通过 Unix 域套接字连接沙箱外的代理服务器实现,代理服务器可对出站流量执行任意规则。 逐节讲解 权限模型的局限与沙箱的引入 Claude Code 默认采用基于权限的只读模型,每次修改或运行命令都需要用户批准。频繁点击「批准」会导致「批准疲劳」——用户可能不再仔细检查批准的内容,反而降低安全性。为解决这一问题,Anthropic 引入了沙箱机制,在预定义的边界内让 Claude 更自由地工作,从而大幅减少权限提示并提升安全性。 沙箱的两道边界:文件系统隔离与网络隔离 沙箱建立在操作系统级特性之上,设置两道边界: - 文件系统隔离:确保 Claude 只能访问或修改指定目录。防止被 prompt injection 的 Claude 修改敏感系统文件。 - 网络隔离:确保 Claude 只能连接批准的服务器。防止被注入的 agent 泄露敏感信息或下载恶意软件。 文章强调,有效的沙箱必须同时具备文件系统和网络隔离。没有网络隔离,被攻陷的 agent 可以外泄 SSH 密钥;没有文件系统隔离,agent 可以轻易逃逸沙箱。两者结合才能提供更安全、更快速的 agent 体验。 沙箱 bash 工具 新引入的沙箱运行时(beta 研究预览版)允许用户定义 agent 可访问的目录和网络主机,无需启动和管理容器。在 Claude Code 中,该运行时用于沙箱化 bash 工具:Claude 在设定的限制内运行命令,无需逐条批准;若尝试访问沙箱外内容,用户会立即收到通知并可选择是否允许。 该沙箱基于…