AI 编码代理仓库预检工具 agent-zero-trust 开源
开发者发布开源工具 agent-zero-trust,在 Claude Code、Cursor 等 AI 代理读取代码仓…
随着 Claude Code、Cursor、Codex、Gemini CLI 等 AI 编程代理逐渐走进日常开发流程,一个新的攻击面也随之浮现:仓库本身可以成为「指令环境」。开发者 Ralfy 在 Hacker News 上以 Show HN 的形式发布了开源工具 agent-zero-trust(简称 azt),主张在代理进入仓库之前对其进行零信任式扫描,识别可能劫持模型行为的隐藏指令、自动化陷阱与凭据窃取路径。
问题背景:仓库即指令环境
对会逐文件读取并执行指令的 AI 代理而言,README、HTML 注释、MCP 配置、postinstall 脚本乃至 Claude Code hook,都可以成为诱导模型偏离用户意图的通道。这些攻击方式在公开资料中已有记录,其中 HTML 注释注入尤为隐蔽——它在渲染时不可见,但对模型而言只是普通文本。azt 的设计目标就是为这类「指令环境」提供一层确定性、离线、可复现的扫描护栏。
工具本身刻意保持极简:单文件、纯标准库实现,核心逻辑不调用任何大模型。作者的理由是「让一个 LLM 判断内容是否安全喂给另一个 LLM,本身就会被该内容注入」,因此扫描完全基于规则与模式匹配。
扫描覆盖范围
azt 在一次扫描中会同时检查「指令环境清单」与「威胁形态」两大类目标:
- 指令环境清单:覆盖 CLAUDE.md / AGENTS.md、.cursor/rules、Copilot instructions、skills 与 commands、Claude Code hooks、MCP server 配置、.envrc、VS Code folderOpen 任务、devcontainer、git hooks、package lifecycle 脚本、CI workflow 等所有可能影响代理行为的文件类型。MCP 配置尤为关键,因为它在会话启动时就会执行。
- 威胁形态:包括 instruction override、要求代理「不要告诉用户」的 concealment 指令、HTML 注释中的隐性命令、零宽字符 / bidi 隐藏文本;执行层面的 pipe-to-shell、编码后执行、反向 shell、DNS-TXT 取指令、破坏性命令;以及本地数据外传、环境变量与私钥读取、token 形状匹配等。
- 自动化陷阱:pull_request_target 配合 PR-head checkout、postinstall 中的网络调用、MCP 配置里 npx -y 自动安装、跨仓库软链接等。
扫描结果会以 HIGH / MEDIUM 风险等级输出,并附带 TRUST VERDICT 结论。命令行模式下可通过 --fail-on high(默认)或 --json 直接接入 CI。
与 CI 及 Claude Code 的集成
工具提供了 GitHub Action 封装,可在 PR 与 push 事件中对仓库执行扫描,命中 HIGH 级别即失败,阻止包含注入形态或恶意自动化的合入。action tag 与 PyPI 包版本需要分别固定,作者在文档中明确提醒了这一细节。
针对 Claude Code,azt 提供「gate 模式」:通过 azt install-hook 将 PreToolUse hook 写入 .claude/settings.json,并通过 azt scan --gate 维护一个有时限(默认 24 小时)的通行证。通行证有效期内,代理才能调用 Bash、Write、Edit、NotebookEdit 等会修改环境的工具。作者坦言这是「速度减速带」而非沙箱——它保证的是「扫描发生过」,而不是「代理被完全约束」。
自我披露的局限
azt 的文档以相当直接的方式列出了三件它「不声称能做到」的事:
- 干净扫描只代表「未发现已知形态的红旗」,永远不等于「安全」——自然语言层面的巧妙操纵无法靠模式匹配兜底。
- 项目在 corpus/misses/ 目录中保留通过扫描的「漏报样本」,并在 CI 中以「undetected」形式断言,防止覆盖率静默漂移。作者称这是其所知唯一公开自身漏报率的仓库预检工具,并欢迎绕过报告作为最高优先级贡献。
- v0.1.0 的 gate 模式曾被文件写入工具伪造绕过,团队在第一次实测中即发现并同日修复,相关过程被记录在 SECURITY.md 中,而非静默补丁。
此外,azt 明确不替代 secrets 扫描器(建议配合 gitleaks / trufflehog 使用),也不做代理侧已安装组件的清查——后者由 Snyk Agent Scan、mcp-scan 等工具覆盖。
整体而言,agent-zero-trust 是一个聚焦、克制且对自身边界有清晰认知的开源工具,适合作为 AI 编程代理工作流中一道轻量的前置防线,但并不应被视作完整的安全解决方案。
