Claude Code 网络权限收紧:依赖安装结束即关闭访问

Claude Code 2.1.271 为沙箱自动模式加入按命令限定的网络权限。本文拆解 allowed_domains 与持久白名单的区别,并用 npm ci 展示如何只在依赖安装期间开放软件源、让后续测试重新回到无网络状态,同时说明托管策略、域名过滤与非沙箱回退仍会如何影响真实边界。

Tuesday, September 15, 2026Omid Saffari
Claude Code 网络权限收紧:依赖安装结束即关闭访问

一次依赖安装,不必再把整个 Claude Code 任务的网络边界一并放宽。2026 年 9 月 14 日,Claude Code 2.1.271 为沙箱自动模式加入了按命令限定的网络访问。Claude Code 网络权限由此可以只为安装命令临时放行:该命令结束后,获准连接的软件源主机随即重新关闭。

Claude Code 网络权限究竟改了什么

这里涉及 Claude Code 两层不同的安全机制;只有拆开来看,才能理解这次更新。

自动模式决定某次工具调用能否执行。 独立的分类器会根据你的请求审查该操作。此前的 Claude Code 自动模式指南 详细介绍了这套通用权限模型。

沙箱决定正在运行的 shell 命令可以接触什么。 它限制文件写入,并通过代理转发网络流量,由代理核验目标主机。

2.1.271 版让这两层机制结合得更紧密。在沙箱自动模式下,Bash、PowerShell 或 Monitor 调用现在可以携带 allowed_domains 列表。Claude Code 会同时审查命令及其需要访问的主机;这些主机仅对当前命令开放,其他主机仍会被沙箱拒绝。更新日志明确说明了这一作用范围

这个蛇形命名字段与 sandbox.network.allowedDomains 并不是一回事;后者位于 settings.json 中。

控制项有效期对后续命令的影响
每条命令的 allowed_domains一次经过审查的 Bash、PowerShell 或 Monitor 调用权限不会继承;后续命令需要单独提交主机供审查。
sandbox.network.allowedDomains该设置生效期间的每一条沙箱命令指定主机已经开放,后续命令同样可以访问。
已保存的 WebFetch(domain:...) 允许规则以后所有加载该规则的会话主机会成为常驻配置,而不是仅限单次任务的例外。
sandbox.network.deniedDomains每一条匹配的沙箱连接拒绝规则仍优先,包括命中范围更大的允许通配符时。

在这个版本之前,批准一个新的沙箱主机可能顺带产生范围更大的授权。手动批准会持续到当前会话结束,保存后的批准还可能延续至后续会话。自动模式也可能缓存对某个主机和端口的判定。新字段改变的是运行时可达范围:即使分类器复用了判定结果,网络开口也只属于当前命令。

它只影响更新日志点名的组合:自动模式、沙箱,以及 Bash、PowerShell 或 Monitor。手动会话、非沙箱命令、内置文件工具,以及完全不访问网络的任务,都不会因此获得这项边界控制。

这笔账算的是授权范围,不是套餐降价

Claude Code 的席位价格没有因此改变。Anthropic 也没有为按命令限定域名单独公布费用、SKU 或性能数据。

真正值得计算的是需要为之负责的授权范围:

standing grant = approved host × every later command that can reuse it

command-scoped grant = approved host × the reviewed command

以需要访问 registry.npmjs.org 的依赖安装为例。过去,运维层面常面临两难:要么让无人值守任务停下来等待网络授权,要么预先放行软件源,并接受之后每一条沙箱命令都能访问它。如今,自动模式可以把该主机和安装命令一并审批,并在构建、测试、打包和审查继续之前将其关闭。

订阅账单虽然没变,但两项成本会随之变化。平台团队需要设计和清理的常驻例外更少;安全审查人员也可以评估“命令—主机”这一具体组合,不必默认该主机在任务剩余阶段始终可用。

审查流程仍有计算成本。对于 Anthropic 权限模式文档 提到的 Enterprise 和按用量计费的提供商账户,分类器检查会计入 token 用量,并增加一次往返。此次发布没有给出耗时基准,本文也没有做计时测试,因此不能凭空宣称能节省多少秒。

一座临时桥让安装命令连接软件源,并在测试命令开始前升起的建筑教学模型
通往软件源的桥只属于安装命令;后续测试步骤开始时,不会继承任何网络通路。

哪些人明天就能用上

独立创业者:让长时间构建任务继续跑

独立创业者可以让 Claude Code 为 SaaS 代码仓库恢复锁定的依赖,然后继续执行测试和代码审查,而无需把公共软件源持续开放给后面的步骤。这样既能让任务不中断,也不会因为一次必要下载,就为整个会话留下常驻的出站通道。

技术服务公司负责人:在客户代码库之间切换

技术服务公司可以把客户的软件包主机仅绑定到需要它的安装步骤,不必再保存一条项目级例外。这样既减少了权限清理,也降低了下一阶段命令把客户代码发往某个主机的可能性——毕竟该主机原本只为依赖工作开放。

平台或安全负责人:治理无人值守 Agent

平台团队可以继续执行组织级拒绝规则和托管域名限制,同时允许日常命令在该策略内申请更窄的访问范围。审查记录也更容易解释:这条命令为了这个操作需要访问这个主机;它并不能证明该主机对 Agent 后续执行的所有操作都安全。

构建工程师:把安装阶段与测试阶段分开

构建工程师可以把软件包恢复设为联网阶段,把测试套件设为离线阶段。如果受入侵的测试或意外脚本在安装结束后尝试连接软件源,它不会继承上一条命令打开的通路,除非已有其他常驻规则允许访问该主机。

如何为依赖安装限定网络边界

最容易看清这项变化的场景,是一个提交了 package-lock.json、且依赖都通过一个已知软件源解析的代码仓库。npm 文档将 npm ci 定义为适用于自动化环境的全新安装:它要求存在锁文件;锁文件与清单不一致时会失败;会移除已有的 node_modules;并且不会修改清单和锁文件。--ignore-scripts 选项则会在安装期间禁用软件包生命周期脚本。npm 文档列出了这些行为

  1. 确认 Claude Code 版本

    按照更新日志运行版本检查:

    Bash
    claude --version

    请使用 2.1.271,或包含该功能的更高版本。

  2. 在失败即关闭的沙箱中启动自动模式

    针对一次会话,将自动模式与必须成功启动、且无法在边界外重试受阻命令的沙箱组合使用:

    Bash
    claude --permission-mode auto --settings '{"sandbox":{"enabled":true,"failIfUnavailable":true,"allowUnsandboxedCommands":false}}'

    这里使用的是文档所述的 --permission-mode--settingsfailIfUnavailableallowUnsandboxedCommands 控制项。macOS 内置沙箱;Linux 和 WSL2 需要 bubblewrapsocat;原生 Windows 不受内置沙箱支持。沙箱指南介绍了设置方法与平台限制

  3. 为安装步骤写清最小任务范围

    把下面这段话作为任务发送;如果锁文件使用私有软件源,请替换其中的主机:

    严格按照 package-lock.json 中锁定的依赖执行 npm ci --ignore-scripts。这条命令只能访问 registry.npmjs.org。不要把该主机保存到项目或用户设置中。安装完成后,以单独的命令运行测试套件,且不得访问网络。如果安装还需要任何其他主机,请立即停止。

    你无需亲自填写 allowed_domains 字段。Claude Code 会构造 shell 工具调用,再由自动模式连同所请求的主机一起审查。

  4. 确认下一步从关闭状态开始

    打开 /sandbox,查看解析后的 Config 标签页,并确认 registry.npmjs.org 尚未出现在常驻 allowedDomains 或已保存的 WebFetch 规则中。然后再运行单独的测试命令。如果后续命令尝试联网,它应当需要自己经过审查的域名集合,否则就会被现有策略拒绝。

最容易出错的细节其实是锁文件。软件包锁可能指向私有软件源、Git 主机或直接的 tarball URL。只写出 registry.npmjs.org,并不会让这些依赖自动出现在该主机上。应检查实际解析出的主机,保持列表精确;一旦锁文件请求意外主机,就让命令停止。

按命令开放网络仍解决不了什么

按命令限定的网络访问缩短了主机可达的时间,却不能证明主机可信、检查每一条加密请求,或确保下载的代码安全。

Anthropic 的内置代理按主机名过滤,默认不会检查 TLS 内容。在获准执行的命令内,进程可以访问该主机上的任何允许路径。命令生成的子进程共享同一沙箱边界,所以 npm ci --ignore-scripts 是一个合适的教学示例:它会从安装步骤中排除软件包生命周期脚本,但不会审计下载的软件包。

托管策略仍位于这项功能之上。strictAllowlist 可以拒绝配置列表之外的任何内容,allowManagedDomainsOnly 可以把允许访问的主机限定为托管设置中的条目。显式拒绝规则也会继续拦截;按命令域名无法穿透这些控制。

非沙箱重试是另一个必须正视的边界条件。Claude Code 通常为沙箱无法运行的命令保留了一条逃生通道。把 allowUnsandboxedCommands 设为 false 很重要,因为它能阻止失败的安装在不知不觉间把问题从“这条命令可以访问哪个主机?”变成“这条命令能否在沙箱外运行?”

本周一该怎么行动

如果你正在自动模式下使用 Claude Code 执行依赖更新、夜间维护或无人值守构建任务,并且目前把软件包源放在宽泛的沙箱允许列表中,那么本周就值得行动。借助这项功能,可以着手验证这些常驻条目能否移除。

如果组织通过托管网络策略,有意为每条命令预先批准软件源;或者外层容器或 CI 运行器已经实施了更严格的进程级出站限制,可以先观望。新字段或许仍能提供纵深防御,但它不会取代现有边界。

如果没有同时使用自动模式和沙箱,或者工作根本不会通过 Bash、PowerShell 或 Monitor 访问网络,这项变化与你无关。

周一要做的事情很小:确认 Claude Code 为 2.1.271 或更高版本,选择一次锁定依赖的安装任务,在失败即关闭的沙箱中以自动模式启动,只指定预期的软件源主机,然后证明紧随其后的测试命令无法复用该网络通路。只有这项检查在自己的环境中通过后,才移除常驻的软件源例外。

如果你希望下一项平台更新也能直接转化为可执行的工作流,欢迎订阅邮件通讯

最近更新
2026年9月15日
分类
Explained

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

Vercel AI SDK 订阅计费拆解:Claude Code 与 Codex 到底由谁买单

Vercel AI SDK 订阅计费拆解:Claude Code 与 Codex 到底由谁买单

Vercel AI SDK 可调用宿主机已登录的 Claude Code、Codex 等订阅额度。拆解 auto、direct 与 ai-gateway 的凭证优先级,说明模型费用会落到套餐、供应商 API 还是 AI Gateway,并算清单独支付的 Vercel Sandbox 成本,帮助个人与团队选对计费路径。2026年9月15日Explained
Cloudflare Browser Run 实测:无头浏览器如何锁定域名并开放只读审阅

Cloudflare Browser Run 实测:无头浏览器如何锁定域名并开放只读审阅

Cloudflare Browser Run 新增会话域名白名单和只读 Live View。本文拆解两道边界的适用范围、配置步骤、常见失效点与 Browser Sessions 计费变化,并给出面向客户交付的验证流程和成本公式,帮助你判断这套无头浏览器控制是否值得用于真实客户项目。2026年9月14日Explained
AI电话机器人价格怎么算?GPT-Live-1 通话成本拆解

AI电话机器人价格怎么算?GPT-Live-1 通话成本拆解

GPT-Live-1 的语音会话按每分钟 $0.05 计费,但这不是一通电话的全部成本。本文拆解语音时长、后端模型与工具、运营商传输三笔账,并用 90 秒预约电话算清每次成功解决任务的真实支出,同时说明 SIP 接入、插话处理与人工转接为何会改变最终预算,帮助团队设计可衡量的入站电话试点。2026年9月14日Explained
ChatGPT Windows Appshots:少复制上下文,多检查结果

ChatGPT Windows Appshots:少复制上下文,多检查结果

ChatGPT Windows 桌面版新增 Appshots,可用双 Alt 键把前台窗口的截图和应用可提供的文本带入对话。本文拆解 Appshot 的数据边界、发送目标与隐私风险,并结合客户邮件、报错窗口和设置页面等工作场景,说明如何衡量它是否真的减少上下文复制、准备和返工时间,以及哪些情况下应该暂缓使用。2026年9月14日Explained
Vercel CDN 直送 FastAPI 静态文件:Function 用量怎么降

Vercel CDN 直送 FastAPI 静态文件:Function 用量怎么降

Vercel CDN 现在可直接分发符合条件的 FastAPI 前端与静态文件,避免触发 Function 调用和相关计算用量。本文拆解路由顺序、中间件与依赖项形成的安全边界,说明 Pro、Hobby 账单中哪些指标会下降、哪些 CDN 成本仍然存在,并给出上线后的部署核验清单。2026年9月13日Explained
OpenAI API 密钥轮换:别等过期才救火

OpenAI API 密钥轮换:别等过期才救火

OpenAI 已支持为项目 API 密钥设置到期日,并可在组织或项目层级限制最长有效期。本文拆解一套可执行的 OpenAI API 密钥轮换流程:明确负责人和维护预算,提前创建替代密钥,经密钥库部署并验证真实任务,最后再撤销旧密钥,避免定时 Agent、批处理任务与客户自动化因凭证失效而中断。2026年9月13日Explained
Vercel 连接器权限:共享凭据如何指定负责人

Vercel 连接器权限:共享凭据如何指定负责人

Vercel 为 Pro 和 Enterprise 团队推出连接器权限,让 Owner 将共享连接器交给指定的 Connector Manager 管理。本文梳理 Member 默认权限、提供商 scope、运行时令牌与业务审批的边界,并用可验证的交接流程说明如何缩小共享凭据的变更范围。2026年9月13日Explained
Cloudflare AI Search 接入 R2:AI 搜索不再要求文件扩展名

Cloudflare AI Search 接入 R2:AI 搜索不再要求文件扩展名

Cloudflare AI Search 现可依据 HTTP Content-Type 索引无扩展名的 R2 对象,无需改动稳定键。本文说明支持范围、4 MB 限制、R2 元数据修复成本、同步节奏与验证流程,并给出可直接落地的 Worker 上传示例,帮助团队判断该更新能否简化现有 AI 搜索管线。2026年9月12日Explained
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。