Mingyu's Library主页
2026年9月15日

第 32 课:新功能速用 —— v2.1.271 / v2.1.272

日期:2026-09-15 · 主题:v2.1.271 的四个新开关怎么用 上一课(第 31 课)讲周配额收紧下怎么活;这一课回到工具本身——v2.1.271 在 9 月 14 日发布,距上一版只隔 2 天,但塞进了 101 项变更,其中四个是能立刻改变你日常配置的。 前置:第 9 课(权限与沙箱)、第 3 课(subagents)、第 17 课(插件与 Marketplace)、第 15 课(成本控制)。

来源:claude-code-changelog v2.1.271、官方 CHANGELOG #21271、v2.1.272


技巧 1(入门):--accept-command —— 别再用 -y 装插件了

问题:claude plugin install 时如果插件带安装命令,你要么逐条看、要么 -y 一把梭。-y 的问题在于它接受的是「运行时此刻决定要跑的命令」,而不是「你刚才审过的那条命令」——中间但凡有变动,你审的和跑的就不是一回事了。

v2.1.271 给 install 和 update 加了 --accept-command:你传入上一次 --json 跑出来的那条命令原文,只有完全一致才执行。

# 第一步:先用 --json 看清它到底要跑什么,不执行
claude plugin install my-org/my-plugin --json

# 输出里会带上待执行的安装命令,比如:
#   "command": "npm ci --ignore-scripts && node ./setup.mjs"

# 第二步:把那条命令原样贴回来作为「我确认的就是这条」
claude plugin install my-org/my-plugin \
  --accept-command 'npm ci --ignore-scripts && node ./setup.mjs'

# 更新同理
claude plugin update my-org/my-plugin --json
claude plugin update my-org/my-plugin --accept-command '<上一步输出的原文>'

什么时候用:CI 里装插件、装第三方 marketplace 里的插件、团队共享的 plugin 清单。什么时候还能用 -y:你自己写的、只在本机用的插件。

落地建议:把这两步写进你的 bootstrap 脚本,第一步输出存成 artifact,第二步的命令字符串进 git——这样「装了什么」是可 review、可 diff 的。


技巧 2(进阶):allowed_domains 下沉到单条命令 —— 出网权限从会话级变成命令级

这是本版最重要的改动。第 9 课讲 auto mode 沙箱时,网络控制的粒度是会话级:你为了让一条 pip install 联网,就得把 PyPI 对整个会话打开,之后会话里任何命令都能访问它。

v2.1.271 把 allowed_domains 加到了 Bash / PowerShell / Monitor 三个工具的每条命令上:审批这条命令时连带审批它需要的主机,且只为这条命令打开,其他主机一律拒绝。

概念上等价于:

旧:会话 ──开放──> {pypi.org, registry.npmjs.org, api.github.com}
                    ↑ 会话内任何命令都能访问这三个

新:命令A(pip install) ──开放──> {pypi.org, files.pythonhosted.org}
    命令B(npm ci)     ──开放──> {registry.npmjs.org}
    命令C(任意脚本)   ──开放──> {}   ← 默认什么都碰不到

你要改什么:如果你之前在 settings 里维护了一份很宽的会话级域名列表(为了让各种装包命令都能跑),现在可以把它收窄成只留最基础的几个,让具体命令在审批时自己声明需要什么。

// .claude/settings.json —— 旧写法:一份大而全的会话级列表
{
  "permissions": {
    "allowedDomains": [
      "pypi.org", "files.pythonhosted.org",
      "registry.npmjs.org", "api.github.com",
      "proxy.golang.org", "crates.io"
    ]
  }
}

改法思路:保留真正「全程都要」的(比如你的内网 artifact 仓库),把只有装包那一刻才要的从会话级列表里删掉,交给命令级审批。

⚠️ 注意:changelog 原文写的是「the hosts a command needs are reviewed with it and opened for it alone; other hosts are refused」,但没有给出 settings 里配置这份 per-command 列表的字段语法。目前更像是审批流程中自动带出、你在审批界面确认,而非手工在配置文件里逐条写。上线到团队配置前请先在本机实测一次,别照我这里的示意语法直接写配置。


技巧 3(进阶):omitClaudeMd —— 让 subagent 不吃项目的 CLAUDE.md

问题:第 3 课讲 subagent 分工时有个反复出现的摩擦——你派一个专职 subagent 去做很窄的事(比如「只做安全扫描,不许改代码」),但它启动时会把用户级、项目级、本地级的 CLAUDE.md 全部加载进来。那些规则是为主会话写的,对这个 subagent 既是噪音、又可能直接冲突(项目 CLAUDE.md 里写着「发现问题就顺手修掉」,而你要它只报告不动手)。

v2.1.271 给 agent frontmatter 加了 omitClaudeMd:

---
name: security-scanner
description: 只读安全扫描,发现问题只报告不修改
omitClaudeMd: true
tools: Read, Grep, Glob
---

你是一个只读的安全审查 agent。逐文件检查注入风险、凭据硬编码、
不安全的反序列化。输出一份 Markdown 报告,绝不修改任何文件。

--agents 的 JSON 形式也支持同一个字段:

claude -p "扫一遍 src/ 的注入风险" --agents '[
  {
    "name": "security-scanner",
    "description": "只读安全扫描",
    "omitClaudeMd": true,
    "tools": ["Read", "Grep", "Glob"],
    "prompt": "你是一个只读的安全审查 agent……"
  }
]'

关键细节(别理解错):omitClaudeMd: true 跳过的是用户、项目、本地三级 CLAUDE.md;受管策略文件(managed policy)仍然照常加载。也就是说它是「去掉个性化上下文」,不是「绕过公司规矩」——企业管理员设的那层你绕不过去。

适用场景: - 只读型 subagent(审查、扫描、调研),需要一张干净的白纸 - 插件带的通用 subagent——它不该被某个具体项目的约定污染 - 上下文/成本敏感的 subagent:CLAUDE.md 动辄几千 token,省掉就是省钱(接第 15 课)

不适用:做实际改动的 subagent。那些恰恰需要项目的代码风格、目录约定、提交规范。


技巧 4(进阶):组织策略缓存的三个修复 + modelPricing 倍率 —— 企业用户当天就该升

这一组是给在公司环境里用 Claude Code 的人的,四条都是「不升级就会继续踩」的类型:

  1. 切账号/组织/API key 后,组织策略缓存不再被复用。旧版会话中途换凭据,策略要等下一次整点检查才刷新——中间这段时间你跑在上一个组织的规则下。这在多租户顾问、外包场景里是实实在在的合规风险。
  2. 组织策略加载完成或中途变更时,工具与命令列表会跟着更新。旧版启动后策略才到位的话,列表是旧的。
  3. 企业 managed-mcp.json 读不了/解析不了时不再静默忽略:现在它依然保持独占控制(用户级、项目级、插件的 MCP server 都不加载),并在启动时告警。旧行为是「坏了就当没配」,结果是本该被锁死的环境反而放开了——这是个 fail-open 变 fail-closed 的重要修正。
  4. ANTHROPIC_UNIX_SOCKET 指向的第三方本地代理不再被当成异类:组织策略经它拉取时会像其他自定义网关一样处理,Remote Control 也一样。

另外 modelPricing 受管设置与 Claude apps 网关的 pricing 块现在支持 1 以上、最高 10 倍的倍率:

// managed settings —— 内部成本分摊加价
{
  "modelPricing": {
    "multiplier": 1.3    // 1 ~ 10;用于在内部账单上加价覆盖平台成本
  }
}

这解决的是第 27 课(可观测性)留下的尴尬:看板上的数字是模型原价,而财务要按「原价 + 平台运维摊销」跟各团队收费,两套数对不上。现在可以在一处配倍率,让看板直接出内部结算价。

升级与验证:

claude update            # 或 npm i -g @anthropic-ai/claude-code@latest
claude --version         # 确认 >= 2.1.271

# 验证组织策略确实是当前凭据对应的那份
claude /status

顺带一提:v2.1.272

只有 bug fix 与稳定性改进,官方描述为「reduced crashes and improved stability for common workflows」,没有公开新功能。所以这一课的内容全部来自 v2.1.271。


本课要点回顾

技巧 一句话 谁该用
--accept-command 装插件时接受「你审过的那条命令」,而不是 -y 所有人,尤其 CI
命令级 allowed_domains 出网白名单从会话级收到命令级,爆炸半径大幅缩小 用 auto mode + 沙箱的人
omitClaudeMd 让只读 subagent 不加载 CLAUDE.md(受管策略仍加载) 用 subagent 分工的人
策略缓存修复 + modelPricing 倍率 切凭据不再跑旧策略;managed-mcp 坏了变 fail-closed;支持内部加价 企业/团队用户

下一课候选:allowed_domains 这条其实牵出一个更大的话题——agent 的网络边界该怎么系统性地划。等它的配置语法在官方文档里明确后,可以单开一课讲「Claude Code 的网络遏制」。