← 全部文章
Ecosystem

安装官方市场前,先审计 Claude Code 插件

A developer workbench scene showing a Claude Code plugin marketplace card passing through a security scanner, with small

Anthropic 的官方 Claude Code 插件市场,已经不再是藏在配置目录里的传闻了。公开 GitHub 仓库 anthropics/claude-plugins-official 截至 2026 年 6 月 17 日已有超过 30,000 个 star,它的 README 描述了一个经过筛选的目录,里面既有 Anthropic 内部插件,也有第三方条目。同一份 README 里还有一句话,应该直接决定你的安全姿态:“安装、更新或使用插件前,请确保你信任这个插件”,因为 Anthropic 并不控制这些插件里的每一个 MCP 服务器、文件或其他打包依赖(GitHub)。

这不是法律免责套话。一个 Claude Code 插件可以打包斜杠命令、skills、agents、hooks、MCP 服务器、LSP 服务器、可执行文件和设置。用开发者能听懂的话说:它可以添加提示词上下文、启动本地进程、调用远程服务、在生命周期事件上运行 shell hooks,并向模型暴露新工具。

正确的心智模型不是“安装一个编辑器主题”。而是“添加一个能在我的源码树旁边执行代码的依赖”。

Claude Code 插件从市场目录到本地缓存再到启用组件的安装路径流程草图,带有 fou

市场是真的,但“官方”不等于“闭眼安全”

Anthropic 于 2025 年 10 月 9 日发布 Claude Code 插件,称它们是斜杠命令、agents、MCP 服务器和 hooks 的集合,可以通过 /plugin 安装(Claude blog)。当前 Claude Code 文档说,官方 Anthropic 市场 claude-plugins-official 会在 Claude Code 启动时自动可用,并且你可以这样安装插件:

/plugin install github@claude-plugins-official

如果插件缺失,文档会让你这样刷新市场:

/plugin marketplace update claude-plugins-official

或者这样添加它:

/plugin marketplace add anthropics/claude-plugins-official

这是官方的顺畅路径(Claude Code docs)。它很有用。但如果把它当成运维策略,就还不够。

官方仓库的 marketplace 文件指向的来源混合了本地插件目录,以及用 commit SHA 固定的外部来源。例如,条目可以在 .claude-plugin/marketplace.json 中引用 GitHub 仓库、子目录、refs 和 SHA(raw marketplace file)。固定版本有帮助,但并不会免除你检查固定代码到底做了什么的责任。插件仍然可能启动服务器、索要凭据、运行 hooks,或者依赖一个会在 marketplace manifest 之外改变行为的二进制文件。

社区也注意到了同一件事。在最近一个询问重要 Claude Code 插件的 r/ClaudeAI 讨论串里,有人建议先用 CLAUDE.md 和 hooks,然后只加项目特定的 MCP 服务器。另一个人警告不要往 Claude Code 里“乱扔随机连接器”,因为它们会消耗 token,还可能造成上下文污染(Reddit)。这就是现在真正的现实争论:插件很强,但每多一个能力,就多一块成本面。

先看 Manifest,再读仓库

你的第一个审计目标是插件源码。不要因为搜索摘要、博客里复制来的命令,或者随机 marketplace 聚合站就直接安装。先确认你能把来源追溯回一个仓库和 manifest。

在官方 marketplace 仓库里,检查:

  1. .claude-plugin/marketplace.json 里的 marketplace 条目
  2. source 类型、URL、path、ref 和 SHA
  3. 插件的 .claude-plugin/plugin.json,如果存在
  4. 任何 .mcp.json.lsp.jsonhooks/hooks.jsoncommands/skills/agents/bin/ 和脚本

Anthropic 的插件参考列出了核心组件路径。Hooks 位于 hooks/hooks.json,MCP 服务器可以位于 .mcp.json,可执行文件可以位于 bin/,插件 manifest 还可以指向自定义组件位置(Claude Code plugin reference)。也就是说,“我检查过 plugin.json”还不够。插件可以依赖默认发现路径。

一次快速人工审查大概是这样:

git clone https://github.com/OWNER/PLUGIN-REPO /tmp/plugin-audit
cd /tmp/plugin-audit

find . -maxdepth 3 \( \
  -name plugin.json -o \
  -name hooks.json -o \
  -name .mcp.json -o \
  -name .lsp.json -o \
  -path "*/bin/*" -o \
  -path "*/scripts/*" \
\) -print

rg -n "curl|wget|bash|sh -c|chmod|open |xdg-open|osascript|token|api_key|secret|eval|exec|spawn|subprocess"

这个 rg 命令很粗暴,但这里粗暴正合适。你要找的是安装时的意外行为、shell 执行、浏览器启动、远程下载、凭据处理,以及会修改你的仓库或 home 目录的脚本。

我的规则是:如果一个插件需要靠 shell 脚本完成核心工作,我会在安装前弄懂脚本里的每一条命令。如果它在运行时下载另一个构件,我会把这个运行时构件也视为插件的一部分。

MCP 服务器是最昂贵的“便利”

MCP 是插件便利性变成隐藏成本的地方。Anthropic 的 MCP 文档说,插件定义的 MCP 服务器会在插件启用时自动启动,插件 MCP 工具会和手动配置的 MCP 工具一起出现(Claude Code MCP docs)。文档还说,插件 MCP 服务器使用和手动配置服务器相同的环境变量;如果你的 shell 导出了云 token、数据库 URL 或内部服务凭据,这一点就很关键。

社区的抱怨很具体:MCP 工具 schema 可能在你调用工具之前就吃掉上下文。在一个 r/ClaudeCode 关于 token 开销的讨论串里,用户指出禁用插件、没有重型 MCP 服务器,可能是 token 消耗更低的原因;还有评论者把 MCP 工具 schema 称为“巨大的隐藏成本”(Reddit)。在另一个讨论串里,有评论者声称已连接的 MCP 服务器会把工具 schema 注册进上下文,并建议按会话裁剪服务器(Reddit)。

Reddit 上的具体 token 估算,除非你在自己的环境里复现,否则都应当视为传闻。但方向判断仍然没错:一个永远在线、带有许多冗长工具的服务器,不是免费的。

安装连接器类插件前,先用这张决策表:

需求更安全的默认选择什么时候用 MCP
执行 GitHub 操作通过 Bash 使用 gh CLIClaude 必须交互式浏览 issues、PRs 和元数据
查询数据库只读 CLI 或本地脚本Claude 需要带范围凭据的结构化工具调用
检查云资源使用带明确命令的厂商 CLIMCP 服务器权限很窄,并且有清晰审计日志
获取文档静态文档、仓库文件或网页链接资源很大、动态变化,并且会被频繁引用
执行策略PreToolUse hook决策需要 Claude 可见的上下文或工具元数据

CLI 工具通常更安全,因为它只在需要时被调用,并且只为当前回合产生输出。当 MCP 提供的是有范围限制的 OAuth、类型化工具和审计日志时,它也可以更安全。错误在于把 MCP 当成默认反射动作来安装。

紧凑对比图:从上下文成本、权限面、设置等四行比较 CLI 工具和 MCP 服务器

Hooks 值得单独做安全审查

Hooks 是让插件显得很神奇的功能。它们也是我审计最严格的功能。

Claude Code hooks 可以在 SessionStartUserPromptSubmitPreToolUsePostToolUsePreCompactSessionEnd 等事件上运行。插件参考说 hook 类型包括 command hooks、HTTP hooks、MCP tool hooks、prompt hooks 和 agent hooks(Claude Code plugin reference)。Hooks 指南解释说,PreToolUse hook 可以通过退出码 2 阻止操作,而 UserPromptSubmitUserPromptExpansionSessionStart 的 stdout 可以被加入 Claude 的上下文(Claude Code hooks guide)。

这权力很大。

好的 hook 会阻止危险行为,或者添加紧凑、确定性的上下文。坏的 hook 会把每个提示词都变成昂贵的 RAG 流水线,把提示词文本泄露到 HTTP endpoint,或者悄悄改变你的环境。

审计 hooks 时问四个问题:

  1. 是什么事件触发它?
  2. 什么 matcher 限制它?
  3. 它会接收什么数据?
  4. 它会向 stdout、stderr、磁盘、网络或上下文写入什么?

社区在这里的分歧很有价值。在一个 r/ClaudeCode hooks 讨论串里,一些开发者把 hooks 描述成强制规则、阻止危险 git 操作、提醒 Claude 写入 memory 的唯一可靠方式。另一些人则在 UserPromptSubmit 上构建复杂的 memory 和 RAG 流程(Reddit)。两者都可能合理。区别在于预算和爆炸半径。

对于团队安装,我会比上下文注入 hooks 更早允许策略 hooks。一个阻止 rm -rf 模式的 PreToolUse hook 很容易推理。一个每轮都抓取并注入 memory 的 UserPromptSubmit hook,则需要测量、上限和明确负责人。

小范围安装,测量,然后再推广

Claude Code 支持用户、项目、本地和托管插件范围。文档把用户范围描述为跨项目的个人设置,项目范围描述为通过 .claude/settings.json 共享,本地范围则是项目特定但不共享(Claude Code docs)。

把这些范围当作发布机制来用:

  1. 先本地安装。
  2. 跑一个真实任务。
  3. 检查 /plugin 详情和 /mcp
  4. 启用前后使用 /context/usage
  5. 禁用任何不值回成本的东西。
  6. 只有审查之后,才推广到项目范围。

文档现在说,在 Claude Code v2.1.143 及以后版本,插件详情面板可以显示上下文成本估算;v2.1.144 及以后版本可以显示最后更新日期;v2.1.145 及以后版本可以显示 “Will install” 清单(Claude Code docs)。按下安装前先用这份清单。如果一个插件自称是 formatter,却要安装一个 MCP 服务器、一个 hook 和一个后台监控器,停下来检查。

也要留意自动更新。Anthropic 说官方 marketplaces 默认启用自动更新,而第三方和本地 marketplaces 默认禁用。文档还介绍了 DISABLE_AUTOUPDATERFORCE_AUTOUPDATE_PLUGINS,用于控制更新行为(Claude Code docs)。自动更新对安全修复很方便,但它会改变你的运行时供应链。对受监管团队来说,与其让每台笔记本各自漂移,不如在经过审查的内部 marketplace 中固定 marketplace 版本。

审计仪表盘前后对比 mockup:已安装插件清单从大量 MCP 服务器和 hooks 缩减到

我安装前使用的清单

这是我会给任何使用 Claude Code 的团队开发者的简版清单。

来源:

  • 这个 marketplace 是 anthropics/claude-plugins-official、内部仓库,还是第三方仓库?
  • 插件来源是否固定到 SHA?
  • 主页是否匹配源码所有者?
  • 仓库近期是否有意外变更、生成式 blob 或安装脚本?

组件:

  • 它是否添加 MCP 服务器?
  • 它是否添加 hooks?
  • 它是否在 bin/ 中添加可执行文件?
  • 它是否添加可以调用工具的 agents?
  • 它是否添加需要本地二进制文件的 LSP 服务器?

权限:

  • 它请求什么凭据?
  • 敏感值是否通过插件 userConfig 作为敏感字段存储?
  • MCP 服务器拿到的是只读访问还是写访问?
  • hook 是否通过 HTTP 回传数据?
  • 是否有脚本继承了宽泛的环境变量?

成本:

  • /plugin 报告的上下文成本是多少?
  • 启用后 /context 有什么变化?
  • 插件是否每个会话都有价值,还是只在少见工作流中有用?
  • CLI 命令能否用更少的持久上下文产出同样结果?

运维:

  • 能否用 /plugin disable name@marketplace 干净禁用?
  • 能否干净卸载?
  • 它是否留下配置、凭据、守护进程、缓存或浏览器授权?
  • 谁负责更新?
  • 如果插件来源消失,会坏掉什么?

我的偏执答案是:安装的插件要比你想装的更少。优先选择小而无聊、只增加一个工作流的插件。一次性操作优先用 CLI。只有当服务器范围受限、可审计,并且确实需要交互时,才用 MCP。Hooks 用来做护栏,不要把它们变成你希望模型记住的所有偏好的垃圾场。

插件正在成为 Claude Code 的工作流包格式。这是好事。它意味着团队可以共享可重复设置,而不是靠部落式提示词传说。但这个包格式足够强大,值得做依赖审查、权限审查和成本审查。如果你不会在不阅读的情况下把一个工具 curl | bash 进你的仓库,那也不要只因为它出现在友好的 marketplace UI 里,就安装它的插件版本。

安静页脚:如果你想亲自试试 Claude Fable 5,可以通过 Claude Fable 5 on OneHop 使用它,这是一个 drop-in endpoint,价格比标价低约 30%。新账户可以先领 $10 免费额度,无需信用卡。

延伸阅读:Claude Fable 5 入门.