5 月 26 日,Anthropic 的官方开发者账号 @ClaudeDevs 发布了一条推文,收获了 7,500 多个点赞和 6,400 多个收藏——
"We've shipped a security-guidance plugin for Claude Code that helps identify and fix vulnerabilities as you're writing code."
短短一句话,配上一个 28 秒的演示视频。我的第一反应并非"哇,好酷",而是——终于有人认真着手解决这个问题了。
视频来源:x.com/ClaudeDevs/…
一. AI 编码的安全风险,绝非杞人忧天
先分享一件让我事后感到后怕的经历。不久前,我用 Claude Code 编写一个内部服务的接口,要求它添加一个查询逻辑。Claude 迅速完成了代码,我粗略扫了一眼,功能看起来没问题,就直接提交了。第二天进行代码审查时,同事指出——查询操作没有进行权限校验,这意味着任何登录用户都能获取到全量数据。
这并不是 Claude 本身的缺陷,而是在我要求"添加查询"时,完全没有提及权限相关的要求。AI 不会主动为你补充那些你没有明确说出的安全逻辑。
这正是 Vibe Coding 的核心矛盾所在:你越是信赖 AI 的编码能力,就越容易忽略它并不了解你的安全上下文。它编码速度飞快,但它并不清楚你的系统里哪些数据是敏感的、哪些接口必须进行身份验证、哪些输入内容需要进行过滤。而大多数人使用 AI 编写代码的方式就是——代码写完,看一眼,没问题,就通过了。
这个安全插件,正是为了给这"看一眼"的环节,增加一层机器自动审核的保障。
二. 三层防护体系:从正则匹配到智能 Agent,层层深入,精准识别
这个插件的设计非常考究。它并非简单地将代码抛给模型,说"帮我检查一下有没有问题",而是划分了三个层次,每个层次的检查深度和资源消耗各不相同。
Security Guidance Plugin 三层审查架构
第一层:模式匹配——正则扫描,零额外成本
每当 Claude 编辑文件时,插件会立即使用正则表达式对新写入的内容进行扫描。这个过程不调用任何模型,纯字符串匹配,零 API 开销。它主要关注那些"一眼就能看出危险"的常见模式:
eval(、new Function、os.system、child_process.exec——动态代码执行pickle——不安全的反序列化操作dangerouslySetInnerHTML、.innerHTML =、document.write——DOM 注入风险.github/workflows/目录下的文件修改——CI/CD 权限风险
这一层的优势在于检测速度极快,且无需额外成本。不足之处在于它只能识别已知的固定模式,遇到比较隐蔽的安全漏洞时就无能为力了。但仅仅是捕捉 eval( 和 pickle 这类明显的危险代码,就已经能有效拦截许多低级错误了。
第二层:差异审查——模型智能检测,每轮对话结束时运行
每一轮对话结束时(即你发送一条消息,Claude 执行并回复,这算一轮),插件会计算一个 git diff,并将本轮所有文件的变更内容,发送给一个独立的 Claude 实例进行安全审查。请注意,这是一个完全独立的实例。审查者并非编写代码的那个 Claude,而是另外启动一个 Claude,基于 diff 内容,并携带专门的安全审查提示词来评估你的改动。
这一层能够捕捉到正则表达式无法发现的问题:权限绕过、不安全的直接对象引用(IDOR)、注入漏洞、SSRF、薄弱的加密算法等等。审查过程在后台运行,不会阻塞 Claude 的正常回复。如果发现了问题,Claude 会在下一轮对话中自动尝试修复。每个会话最多连续触发 3 次修复,以避免陷入无限循环。
第三层:Agent 深度审查——提交阶段全面检查,每次提交都触发
当 Claude 通过 Bash 工具执行 git commit 或 git push 命令时,插件会启动一个更为深入的审查。这个审查采用 Agent 模式——它会读取周围的代码上下文,包括调用方、输入过滤逻辑、相关文件等,来判断某个看似危险的操作在你的项目实际环境中是否真的构成威胁。
这一层的设计至关重要。因为很多代码片段单独看是危险的,但在特定的项目上下文中却是安全的。例如,你的代码里有一个 eval,但它的输入已经经过了白名单过滤。如果只查看 diff 可能会产生误报,但 Agent 能够读取到过滤逻辑,从而判断这是安全的。这一层机制有效降低了误报率。代价是每次提交会消耗更多的 token(默认使用 Opus 4.7 模型),每小时最多触发 20 次。
三. 安装与使用,仅需三行命令
Security Guidance Plugin 安装流程
前提条件非常简单:Claude Code CLI 版本需 ≥ 2.1.144,Python 版本需 3.8+,并且你的工作目录必须是一个 git 仓库。
安装只需一行命令:
/plugin install security-guidance@claude-plugins-official
选择一个 scope(推荐使用 user scope,这样对所有项目都生效),然后执行:
/reload-plugins
大功告成。无需额外配置,也无需记忆单独的命令。插件安装后会自动运行,你正常使用 Claude Code 编写代码即可。
如果你需要在团队中或云端会话(Cloud Session)里启用,可以在项目的 .claude/settings.json 文件中添加以下配置:
{"enabledPlugins": {"security-guidance@claude-plugins-official": true}}
这样一来,克隆该仓库的同事也能自动使用该插件。管理员还可以在托管设置(managed settings)中实现组织级别的启用。
四. 支持自定义规则,这才是关键亮点
仅仅依靠内置的通用安全规则,肯定无法满足所有项目的个性化需求。每个项目都有其独特的安全上下文,AI 不可能凭空猜测到。这个插件提供了两个扩展点,让用户自定义规则:
为模型审查添加规则:claude-security-guidance.md
在项目根目录的 .claude/ 文件夹下,放置一个 Markdown 文件,用自然语言编写你的安全规则。例如:
# 安全规则- `/admin` 下的所有路由在读取数据库前,必须调用 `require_role("admin")` 进行角色验证- 不要在 INFO 及更高级别的日志中记录 `customer_id` 或 `account_number` 等敏感字段- Token 比较操作必须使用 `crypto.timingSafeEqual`,禁止使用 `===` 直接比较
这些规则会被注入到模型审查的提示词中,作为额外的上下文信息。插件发现违规行为后会报告给 Claude 并让其尝试修复,但不会硬性阻止代码写入——它扮演的是指南角色,而非强制执行者。
为正则扫描添加规则:security-patterns.yaml
patterns:- rule_name: internal_api_keysubstrings: ["sk_live_", "AKIA"]reminder: "检测到硬编码的 API 密钥前缀。请从密钥管理服务中加载凭证。"- rule_name: tenant_unfiltered_queryregex: "\.objects\.all\(\)"paths: ["**/src/tenants/**"]reminder: "多租户代码必须根据 org_id 进行数据过滤。"
支持正则表达式和子字符串匹配,还能使用 paths 和 exclude_paths 进行文件路径过滤。最多可以添加 50 条自定义规则。
这两个扩展点的设计思路很巧妙:claude-security-guidance.md 使用自然语言,适合编写策略性的规则;security-patterns.yaml 使用正则表达式,适合编写确定性的硬性规则。一个灵活,一个精准,两者互补。
五. PR 安全评论减少 30-40%,这意味着什么?
Anthropic 在推文中公布了一项数据:在内部推广使用该插件后,涉及该插件的 PR 中,与安全相关的评论数量减少了 30-40%。
Anthropic 内部基准测试:PR 安全评论减少 30-40%
这个数字需要仔细解读。首先,它指的是"与安全相关的 PR 评论"减少了,而不是说安全问题本身减少了 30-40%。这两者含义不同——安全评论减少,可能是因为问题在代码编写阶段就被修复了,也可能是因为安全审查在更早的阶段就进行了过滤。无论哪种情况,对代码审查者来说都是好消息,因为他们的精力可以集中在更复杂的问题上。
其次,这只是 Anthropic 内部的数据。他们自身的代码库和开发流程有其特殊性,不能直接推广到所有团队。但作为一个参考指标,30-40% 的降幅已经足以说明该插件并非徒有其表。
六. 它在整体安全防御体系中的定位
这个插件并非万能,Anthropic 自己也明确指出:"Treat the plugin as one layer of defense in depth, not a complete security solution."(请将此插件视为纵深防御体系中的一个环节,而非完整的安全解决方案。)
在一个完整的安全体系里,它处于最前沿的位置:
Security Guidance Plugin 在纵深防御体系中的位置
| 阶段 | 工具 | 覆盖范围 |
|---|---|---|
| 编码过程中 | Security Guidance Plugin | 常见漏洞,同一会话内即可修复 |
| 按需触发 | /security-review 命令 | 一次性全面安全审查 |
| PR 阶段 | 代码审查(多 Agent 协作) | 基于全代码库上下文的安全性与正确性审查 |
| CI 阶段 | SAST/DAST/依赖扫描 | 语言特定规则、供应链检查、安全策略执行 |
每一层防御都能捕捉到上一层遗漏的问题。该插件的核心价值在于减少进入后续阶段的问题数量,而不是替代它们。
七. 背后的技术:完全基于 Hooks 机制构建
这个插件最令人感兴趣的一个细节是——它完全使用 Claude Code 的 Hooks 机制构建,没有调用任何特殊的内部 API。
Security Guidance Plugin 注册的 Hook 事件
它注册了以下这些 Hook:
| Hook 事件 | 用途 |
|---|---|
SessionStart | 初始化 Python 虚拟环境 |
UserPromptSubmit | 捕获工作区基线状态,用于后续的 diff 计算 |
PostToolUse(Edit/Write/NotebookEdit) | 执行正则扫描 |
Stop | 每轮对话结束时的 diff 审查(在后台运行) |
PostToolUse(Bash,过滤 git commit/push 操作) | 提交时的深度审查(在后台运行) |
这意味着,你完全可以使用同样的 Hooks 机制来构建你自己的专用审查插件。Anthropic 已经将这个插件的源码开源在 GitHub 上,作为"从 Hook 调用模型并返回结果"的工作示例。
八. 成本考量、限制条件与综合评估
成本分析
第一层正则扫描不调用模型,零成本。第二层的 diff 审查和第三层的 commit 审查会消耗额外的 token,默认使用 Opus 4.7 模型。你可以通过设置环境变量来切换模型:
SECURITY_REVIEW_MODEL:用于控制 diff 审查所使用的模型SG_AGENTIC_MODEL:用于控制 commit 审查所使用的模型
如果觉得 Opus 模型成本太高,可以切换到 Sonnet 模型以节省费用。如果追求更高的漏洞检出率,可以开启 SG_DUAL_OR=on 选项,并行运行两次审查并合并结果,但这会使成本翻倍。
限制条件
- 插件不会阻止代码写入,仅报告发现的问题。安全审查结果属于建议性质,并非强制性要求
- 模型审查可能会遗漏某些漏洞,也可能产生误报
claude-security-guidance.md中的规则是指南而非护栏——即便写了"忽略 XX 漏洞类型",也不会真正抑制那一类发现的报告- 只有 Claude 触发的 commit 会接受审查,你自己在 shell 中手动执行的
git commit不会被审查 - 首次运行时会创建 Python 虚拟环境并安装 Claude Agent SDK,这需要 pip 和网络连接
综合评估
先说结论:这个插件值得安装,但不要将其视为安全审查的终点。
技术评估: 三层递进的架构是当前 AI 安全工具中最为合理的方案。正则扫描做快速筛选、模型做语义审查、Agent 做上下文判断——每一层都弥补了上一层的不足。尤其是第三层的 Agent 式审查能够读取周围代码来判断是否误报,这一设计比纯静态分析高明得多。
实践评估: 它最大的价值不在于能抓到多少漏洞,而在于将"安全审查"这件事从"写完再检查"转变为"边写边检查"。过去用 AI 编写代码,安全审查总是后置的——写完代码、提交 PR、等待审查者查看。现在,Claude 刚写完一段代码,马上就能收到安全反馈,并在同一个会话中完成修复。这种从"后置"到"即时"的转变,其重要性远超它能检测多少种漏洞。
坦诚补充: 我尚未在大型生产项目中用这个插件跑过完整的流程。以上的判断基于官方文档、开源代码和 Anthropic 的内部数据。实际效果可能因代码库特性、编程语言、模型版本的不同而有所差异。
九. 一些值得关注的细节
- 所有付费计划均可使用:并非 Team 或 Enterprise 版本专属,Pro 和 Individual 用户也能使用
- 支持按层关闭:可以通过设置环境变量单独关闭某一层,例如
ENABLE_PATTERN_RULES=0 - 完全卸载也很简单:执行
/plugin uninstall security-guidance@claude-plugins-official即可 - 日志文件位于
~/.claude/security/log.txt:排查问题时请优先查看此文件 - 如果需要硬性阻止代码写入:需要配合 Hook 的
PreToolUse事件来实现,插件本身不提供阻止功能
最后说两句
AI 编写代码这件事,其发展速度远远超过了安全工具的跟进速度。目前大家都在竞相提升模型的编码能力——Aider、Cursor、Claude Code、Codex 等工具层出不穷——但很少有人认真思考"写出来的代码到底安不安全"这个问题。
Anthropic 这次所做的,并非什么突破性的技术,而是一个非常务实的工程决策:在 AI 编写代码的流程中嵌入安全审查机制,让安全问题在产生的瞬间就被发现,而不是等到代码审查甚至上线之后才暴露。这并非什么"AI 替代安全工程师"的故事。它更像是一个场景——你的团队里多了一位成员,他不写代码,专门在你写代码的时候盯着你,提醒你:"嘿,这里有个 eval,你确定安全吗?"
说实话,这样的搭档,我真的需要。
参考资料
- ClaudeDevs 官方公告推文:x.com/ClaudeDevs/…
- Anthropic 内部数据推文:x.com/ClaudeDevs/…
- Security Guidance Plugin 官方文档:code.claude.com/docs/en/sec…
- 插件源代码仓库:github.com/anthropics/…
- Claude Code Hooks 指南:code.claude.com/docs/en/hoo…
- Claude Code 插件市场文档:code.claude.com/docs/en/dis…
- Claude Code 代码审查文档:code.claude.com/docs/en/cod…
