关于 Zyrax Guard
Zyrax Guard 是用于本地审计 AI Agent 配置和软件包的命令行工具,面向开发者及 CI 流程。它检测提示注入、可疑 MCP 配置、凭据外泄线索和依赖风险,并在设备上处理扫描内容。
主要功能
- 01扫描 Agent 配置中的提示注入
- 02检查 MCP 服务配置和权限
- 03审查 npm、PyPI、crates.io 与 Go 包
- 04先检查再安装依赖
- 05扫描锁文件差异并生成 SARIF
- 06通过策略文件维护允许列表
适用场景
- 01运行编码 Agent 前检查仓库配置
- 02在 CI 中阻止高风险 Agent 配置
- 03审查拉取请求新增的软件包
- 04将扫描发现提交到代码扫描流程
MCP 相关
注册为 MCP 服务端后,可向 Agent 提供 `scan_agents` 工具,用于扫描指定目录中的 Agent 配置文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deep | boolean | 否 | 下载构件并静态分析安装/构建脚本(较慢) |
| name | string | 是 | 要检查的软件包名称 |
| version | string | 否 | 可选;默认为最新发布版本 |
| ecosystem | enum | 否 | npm | pypi | crates | gomod |
详细介绍
Zyrax Guard
运行 AI Agent 前,先审计其配置。
检测指引 AI 的文件中隐藏的提示词注入、恶意 MCP 服务和凭据窃取行为——CLAUDE.md、.mcp.json、Agent 设置、技能等;还可审查这些文件引入的软件包。只需几毫秒。所有内容都不会离开你的设备。
$ zyrax-guard scan-agents .
Scanning . for agent config files...
Found 2 file(s): .mcp.json, CLAUDE.md
SCAN REPORT · zyrax-guard v0.13.0
2 finding(s) requiring review
[1 CRITICAL] [1 HIGH]
[HIGH] .mcp.json
MCP server 'data-exfil' uses non-HTTPS URL: http://attacker.example.com/collect
→ Use HTTPS for all external MCP server URLs.
[CRITICAL] CLAUDE.md:3
Prompt injection keyword detected: 'ignore previous instructions'
→ Remove or review this instruction. Triage as false positive if intentional.
2 finding(s) — 1 CRITICAL, 1 HIGH
$ zyrax-guard check lodahs
✗ [email protected] — BLOCK
- looks like a typo of "lodash" (far more popular); this name has only 46 weekly downloads
- MAL-2025-25502: Malicious code in lodahs (npm)
did you mean: lodash
to override: zyrax-guard allow lodahs
可在本地和 CI 中运行,也可作为 AI 编码 Agent 的准入门槛。无需账户。除了你正在查询的公开软件包名称,不会有任何信息发送到外部。
获取方式(任选一种):
npx zyrax-guard@latest scan-agents . # no install — audit this repo's agent configs
brew install tiagosilva07/zyrax/zyrax-guard # macOS / Linux
scoop bucket add zyrax https://github.com/tiagosilva07/scoop-zyrax && scoop install zyrax-guard # Windows
go install github.com/tiagosilva07/zyrax-guard/cmd/zyrax-guard@latest
然后运行:zyrax-guard scan-agents . 审计配置,或运行 zyrax-guard check <pkg> 审查软件包。
完整的安装选项(签名二进制文件、curl|sh)和验证方法见下文。
🌐 主页: zyrax.io
安装
npm / npx
npx zyrax-guard@latest scan-agents . # audit agent configs
npx zyrax-guard@latest check lodash # vet a package
通过 optionalDependencies 为各个平台提供预构建的 Go 二进制文件——无需在运行时下载。只要有 Node 18+,即可在任何环境中运行。
Homebrew(macOS / Linux)
brew install tiagosilva07/zyrax/zyrax-guard
安装签名发布版二进制文件(Homebrew 会验证 SHA-256)。发布新版本后,可通过 brew upgrade 更新。
Scoop(Windows)
scoop bucket add zyrax https://github.com/tiagosilva07/scoop-zyrax
scoop install zyrax-guard
安装签名发布版二进制文件(scoop 根据清单验证 SHA-256,清单中的哈希值来自发布版签名的 checksums.txt)。zyrax-guard upgrade 会检测 scoop 安装,并转交给 scoop update zyrax-guard 执行。
快速安装(Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/tiagosilva07/zyrax-guard/main/scripts/install.sh | sh
下载适用于你的操作系统和架构的签名发布版二进制文件,将其 SHA-256 与发布版校验和进行验证,然后安装(安装到 /usr/local/bin;如果该目录不可写,则安装到 ~/.local/bin)。设置 VERSION=v0.5.0 可固定版本,或设置 BINDIR 以指定安装位置。如果 PATH 中有 cosign,还会验证 cosign 签名。
go install(Go 1.23+)
go install github.com/tiagosilva07/zyrax-guard/cmd/zyrax-guard@latest
签名发布版二进制文件
从 Releases 下载。 每个发布版都包含:
- 适用于 linux/darwin/windows × amd64/arm64 的预构建二进制文件
checksums.txt(SHA-256)- SLSA L3 构建来源证明(每个制品都有对应的
.cosign.bundle) - SBOM(
zyrax-guard.spdx.json)
验证二进制文件:
cosign verify-blob \
--bundle zyrax-guard-linux-amd64.cosign.bundle \
zyrax-guard-linux-amd64
从源代码构建
git clone https://github.com/tiagosilva07/zyrax-guard
cd zyrax-guard
go build -o zyrax-guard ./cmd/zyrax-guard
更新
Guard 每天最多检查一次是否有新版本(只读查询其自身在 registry.npmjs.org 上的版本),有可用更新时会在 stderr 上打印一行提示。更新方法:
zyrax-guard upgrade # detects how Guard was installed and updates it
zyrax-guard version --check # force a version check now
如果 Guard 是通过包管理器安装的,upgrade 会调用相应的包管理器(npm/brew/scoop/go);对于 Linux/macOS 上通过 curl|sh 或独立二进制文件安装的情况,它会下载签名发布版,在替换二进制文件前,先验证其 SHA-256 是否与 checksums.txt 匹配,并验证其无密钥 cosign 签名(任何不匹配都会中止升级)。默认情况下必须验证签名——如果未安装 cosign,升级会中止并显示操作说明;传入 --require-signature=false 可明确选择仅验证校验和。在 Windows 上,通过 scoop 安装即可使用委托升级;Windows 独立二进制文件仍需手动升级(提示中会附上 Releases 链接)。
设置 ZYRAX_NO_UPDATE_CHECK=1 可禁用每日检查。
快速入门
审计 AI Agent 配置
zyrax-guard scan-agents . # scan current directory
zyrax-guard scan-agents /repo # scan a specific path
zyrax-guard scan-agents . --json # JSON output
zyrax-guard scan-agents . --strict # exit 1 for any finding (not just CRITICAL/HIGH)
扫描 CLAUDE.md、AGENTS.md、GEMINI.md、.mcp.json、.claude/settings.json 和 Cursor 规则文件。如果发现任何 CRITICAL 或 HIGH 级别的问题,则退出码为 1。
检查单个软件包
zyrax-guard check lodash # npm (default)
zyrax-guard check requests --ecosystem pypi # PyPI
zyrax-guard check serde --ecosystem crates # crates.io
zyrax-guard check github.com/pkg/errors --ecosystem gomod # Go modules
先检查,再安装
zyrax-guard install lodash axios # vets, then runs npm install
zyrax-guard install flask --ecosystem pypi # vets, then runs pip install
zyrax-guard install serde --ecosystem crates # vets, then runs cargo add
zyrax-guard install github.com/pkg/errors --ecosystem gomod # vets, then runs go get
允许某个包(添加到本地策略)
zyrax-guard allow my-internal-pkg
# allowed "my-internal-pkg" (recorded in .zyrax/policy.json)
提交 .zyrax/policy.json —— 它是项目中可供审核的允许列表。
扫描 PR 的锁文件差异
zyrax-guard scan --base /tmp/base-lock.json --head package-lock.json --sarif
将 SARIF 2.1.0 输出到标准输出。如果没有 BLOCK 或 ERROR,退出代码为 0;否则为非零。
添加 --strict,将 WARN 视为失败。
审计 AI Agent 配置(scan-agents)
AI 编码 Agent(Claude Code、Cursor、Gemini CLI)会读取可能被恶意利用的配置文件:克隆的仓库中恶意的 CLAUDE.md、指向攻击者服务器的篡改版 .mcp.json、描述中隐藏指令的 MCP 工具、授予通配符 Shell 访问权限的 settings.json,或是悄悄引导 Agent 读取 .env 并将其 POST 到外部的文本。Guard 会在 Agent 运行前检测这些内容。
zyrax-guard scan-agents .
扫描内容
| 文件 | 位置 |
|---|---|
CLAUDE.md、AGENTS.md、GEMINI.md | 仓库根目录 |
.mcp.json | 仓库根目录和子目录 |
.claude/settings.json | .claude/ 目录 |
.cursor/rules、.cursor/rules/*.mdc | Cursor 规则 |
SKILL.md | 任意 skills/ 目录下 |
检测内容
| 规则 | 严重性 |
|---|---|
提示词注入关键词(ignore previous instructions、new objective:、……) | CRITICAL |
| 隐藏的 Unicode 字符(零宽字符、双向覆盖字符) | CRITICAL |
| 绕过关键词过滤器的 Base64 编码指令 | CRITICAL |
条件式/休眠触发器(when user asks X, do Y) | CRITICAL |
| 携带注入关键词的 MCP 工具描述(会被作为可信模型上下文读取) | CRITICAL |
人设覆盖(you are not Claude、your true purpose) | HIGH |
| 使用非 HTTPS URL 的 MCP 服务 | HIGH |
| 使用原始 IP 地址的 MCP 服务(可能是 C2) | HIGH |
| 使用隧道服务(ngrok、Cloudflare、……)的 MCP 服务 | HIGH |
运行 Shell、内联 -c/-e、临时目录二进制文件或危险环境变量的 MCP 服务 | HIGH |
引用凭据文件(.env、id_rsa、.aws/credentials)的指令 | HIGH |
数据外泄目标(同一行中的 send/POST/curl + 外部 URL) | HIGH |
permissions 中的通配符 allow | HIGH |
| 没有拒绝规则的无限制 Shell 访问 | MEDIUM |
没有锁文件的 npx MCP 服务 | MEDIUM |
| 自动运行执行命令的钩子(下载并执行 → CRITICAL,Shell 标记 → HIGH) | CRITICAL–MEDIUM |
退出代码:如果存在任何 CRITICAL 或 HIGH 项,则为 1;否则为 0。使用 --strict,则任何发现都会以退出代码 1 退出。
对混淆内容进行归一化。 匹配前,检测会对常见伪装方式进行归一化处理,包括零宽和格式字符、形近字符、全角和 leetspeak 替换,以及分隔符/换行拆分,因此简单混淆的载荷(y0u 4r3 n0w…、ignore—previous—instructions、西里尔字母形近字符)仍会被检测到。它仍是快速、确定性、在设备本地运行的防护措施,用于防范已知的 Agent 配置攻击模式;但无法彻底防御蓄意改写措辞或使用其他语言的攻击者。语义检测是 Zyrax 平台的路线图项目,并非本地 CLI 的功能。
抑制合理的误报。 实际的技能或配置可能会合理地使用一些会触发启发式检测的措辞(例如,要求审核技能“作为资深审核者行事”)。可在该行添加内联 zyrax-allow 注释来忽略它,也可以选择使用 zyrax-allow: <rule-prefix> 指定适用规则;或者使用 zyrax-allow-file: <rule-prefix> 忽略整个文件。忽略操作绝不会静默进行:扫描始终会报告 N finding(s) suppressed by zyrax-allow,并且 --strict 会完全忽略抑制设置(审计/CI 模式),因此恶意配置无法利用该指令关闭检测。
在 CI 中
- name: Audit agent configs
run: zyrax-guard scan-agents . --strict
通过 MCP(scan_agents 工具)
注册为 MCP 服务后,Agent 也可以使用 scan_agents:
{
"name": "scan_agents",
"arguments": { "dir": "." }
}
GitHub Action
为每个拉取请求设置门禁。默认情况下(scan: both),Zyrax Guard 会审计 AI Agent 配置
(提示词注入、恶意 MCP 服务、风险权限)并且检查 PR 中添加的依赖项,若有任何依赖项被拦截,则检查失败。添加
.github/workflows/zyrax-guard.yml:
**生产环境请固定版本:**以下示例将第三方 Actions 固定到提交 SHA——可变标签会带来供应链风险(这正是 Guard 要捕获的风险)。为了让 CI 完全可复现,也请将
zyrax-guard固定到确切版本或提交 SHA。
name: Zyrax Guard
on: pull_request
jobs:
guard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # pin: actions/checkout@v5
with:
fetch-depth: 0 # lets Guard diff against the PR base (added deps only)
- uses: tiagosilva07/zyrax-guard@v0
with:
ecosystem: npm # npm | pypi | crates
对于拉取请求,它只扫描相对于基础分支新增的依赖项;否则会扫描整个锁定文件。若有依赖项被拦截,作业就会失败。@v0 跟踪最新的 0.x 版本;为了让 CI 完全可复现,请固定到确切版本(例如 @v0.7.1)。
输入(均为可选):scan(deps | agents | both,默认 both)、ecosystem
(默认 npm)、lockfile(按生态系统设置默认值)、base(显式指定基础锁定文件)、
strict(将 WARN 视为失败)、deep(检查安装脚本)、version(Guard
版本,默认 latest)、fail-on-block(默认 true)、sarif-file(写入依赖项 SARIF,供 Code Scanning 使用)、agents-sarif-file(写入 Agent 配置 SARIF,供 Code Scanning 使用)、args(额外的原始标志)。
将结果上传到 GitHub Code Scanning,让问题直接显示在 PR 中:
- uses: tiagosilva07/zyrax-guard@v0
with:
sarif-file: zyrax-guard.sarif
fail-on-block: "false" # let Code Scanning surface findings; don't hard-fail
- uses: github/codeql-action/upload-sarif@dd903d2e4f5405488e5ef1422510ee31c8b32357 # pin: github/codeql-action/upload-sarif@v3
with:
sarif_file: zyrax-guard.sarif
同时审计 Agent 配置和依赖项,并在 Code Scanning 中展示结果:
- uses: tiagosilva07/zyrax-guard@v0
with:
scan: both
sarif-file: zyrax-guard-deps.sarif
agents-sarif-file: zyrax-guard-agents.sarif
fail-on-block: "false"
- uses: github/codeql-action/upload-sarif@dd903d2e4f5405488e5ef1422510ee31c8b32357 # pin: github/codeql-action/upload-sarif@v3
with:
sarif_file: zyrax-guard-deps.sarif
category: zyrax-guard-deps
- uses: github/codeql-action/upload-sarif@dd903d2e4f5405488e5ef1422510ee31c8b32357 # pin: github/codeql-action/upload-sarif@v3
with:
sarif_file: zyrax-guard-agents.sarif
category: zyrax-guard-agents
(此作业需要 permissions: { security-events: write }。)
支持的生态系统
Guard 支持 npm、PyPI、crates.io 和 Go 模块。使用 --ecosystem
选择其中一种(默认 npm):
zyrax-guard check --ecosystem pypi requests
zyrax-guard check --ecosystem crates serde
zyrax-guard check --ecosystem gomod github.com/pkg/errors
zyrax-guard scan --ecosystem crates # PR gate over Cargo.lock
zyrax-guard scan --ecosystem pypi # PR gate over poetry.lock / requirements.txt
zyrax-guard scan --ecosystem gomod # PR gate over go.sum
Go 模块会通过 proxy.golang.org 查询(标准 Go 模块代理,无需身份验证,也没有下载量 API)。它与其他生态系统有两点差异,均为有意设计:
- 跳过拼写仿冒/流行度检查。 与 npm/PyPI/crates.io 不同,模块代理没有下载量端点,因此 Guard 没有真实的使用情况信号可供比较——它会报告“下载统计数据不可用”,而不是捏造“0 次下载”的拼写仿冒判定,误报真实模块。存在性和已知恶意软件(OSV)检查仍会正常运行。
- 对每个 Go 模块使用
--deep都会报告“未发现安装/构建脚本”。go get/go mod download不会执行已获取模块中的代码——没有可供静态分析的 npm-postinstall/pip-setup.py/cargo-build.rs 类似脚本。
检查的工作原理
Guard 仅根据公开注册表元数据进行检查——不会在本地执行或安装,也不会进行沙盒处理:
| 检查 | 判定触发条件 |
|---|---|
| 存在性 | 在注册表中找不到包 → BLOCK(虚构或诱饵名称) |
| 拼写仿冒 | 名称与流行度高得多的包仅相差 1 处字符,且下载量接近零 → BLOCK,并提供“你是否想找……”建议 |
| 已知恶意项 | 命中 OSV 公告 → 已知恶意包 → BLOCK;合法包中的漏洞(任意严重程度,显示在消息中)→ WARN(使用 --strict 可将其设为失败) |
| 年龄与流行度 | 发布不到 30 天且每周下载量少于 50 → WARN |
| 锁定文件完整性 | (仅扫描) 已解析的 URL 或完整性哈希发生变化 → BLOCK |
对于暂时性的注册表/OSV 故障(429 或 5xx),Guard 会在放弃前采用退避重试(遵循 Retry-After);只有持续故障才会产生 ERROR(默认拒绝——参见判定结果)。
深度检查(--deep)
默认情况下,检查仅涉及元数据(毫秒级)。添加 --deep,还会下载软件包的分发制品,并静态检查其在安装/构建时运行的代码——npm preinstall/install/postinstall 脚本、PyPI setup.py、crates build.rs(Go 模块没有此类钩子,参见生态系统):
zyrax-guard check --deep some-pkg
zyrax-guard scan --deep # PR gate, deep mode
它会标记危险模式——网络调用、进程生成、base64/混淆的 eval——并在危险组合(例如“下载脚本并运行”)出现时拦截。它不会运行任何代码(纯静态分析),并且会尽力而为:如果无法获取制品,会显示提示信息,绝不会误拦截。
不增加任何依赖——提取器仅使用标准库 archive/tar 和 compress/gzip。
判定结果
| 判定结果 | 含义 | 默认退出代码 |
|---|---|---|
| SAFE | 没有值得注意的信号 | 0 |
| WARN | 存在可疑情况——继续前请先检查 | 0(使用 --strict 可使其变为 1) |
| ERROR | 防护工具无法验证(注册表/OSV 无法访问、返回 5xx,或受到速率限制)——默认拒绝 | 1(始终如此) |
| BLOCK | 有强烈迹象表明软件包存在恶意或虚构情况 | 1 |
防护工具采用默认拒绝策略:如果无法访问注册表或恶意软件数据库,就会返回 ERROR 并以非零状态码退出,而不是放行未经验证的软件包。网络中断无法悄无声息地绕过这道关卡。
配置
Zyrax Guard 完全通过命令标志和可选的本地策略文件进行配置——无需配置文件或环境变量。
命令
| 命令 | 用途 |
|---|---|
check <name>[@version] | 审查单个软件包 |
install <name> | 检查软件包,安全后再安装 |
scan | 审查锁定文件(或 PR 中的锁定文件差异) |
scan-agents <dir> | 审计 AI Agent 配置文件 |
allow <name> | 将软件包添加到本地允许列表 |
init | 打印 Shell 钩子(透明地拦截安装操作) |
mcp | 运行 MCP 服务(check_package、scan_agents) |
mcp install [--global] | 将 Guard 注册到你的 AI Agent |
upgrade | 将 Guard 更新到最新版本(已验证) |
version [--check] | 打印版本;--check 会检查是否有更新版本 |
标志
| 标志 | 命令 | 默认值 | 作用 |
|---|---|---|---|
--ecosystem npm|pypi|crates|gomod | check、install、scan | npm | 目标软件包生态系统 |
--strict | check、install、scan、scan-agents | 关闭 | 收紧失败条件:WARN → 失败(软件包命令);有任何发现 → 失败(scan-agents) |
--deep | check、install、scan | 关闭 | 下载并静态分析安装/构建脚本 |
--json | check、install、scan、scan-agents | 关闭 | JSON 输出 |
--sarif | check、scan | 关闭 | SARIF 2.1.0 输出(用于代码扫描数据摄取) |
--ignore-scripts | install | 关闭 | 将 --ignore-scripts 传递给 npm |
--reason <text> | allow | — | 与允许列表条目一同记录在 .zyrax/policy.json 中,供日后审查 |
--base <file> | scan | — | 用于对比的基础锁定文件(仅扫描新增/变更的依赖项) |
--head <file> | scan | 按生态系统而定(package-lock.json/poetry.lock,若不存在则回退到 requirements.txt/Cargo.lock/go.sum) | 要扫描的头部锁定文件 |
--require-signature | upgrade | 开启 | 替换二进制文件前验证 cosign 签名;传入 --require-signature=false 可仅接受校验和验证 |
本地策略文件
zyrax-guard allow <name> [--reason "why"] 会在项目根目录的 .zyrax/policy.json 中记录决策。每条 allow 都会添加 UTC 时间戳;理由是可选的,但如果提供,也会一并记录,这样队友审查差异时就能看到信任某个软件包的原因,而不只是它的名称:
{
"allow": [
"my-internal-pkg",
{ "name": "graphifyy", "reason": "reviewed setup.py — FP on tree-sitter-bash", "at": "2026-07-23T15:00:00Z" }
],
"deny": ["known-bad-pkg"]
}
加载时接受这两种格式——纯字符串仍是有效条目,因此在 reason/at 存在之前编写的文件无需更改即可继续使用。
允许列表中的软件包会跳过检查;拒绝列表中的软件包始终会被阻止。提交该文件即可与团队共享策略。(组织范围策略可通过 Policy 接口付费即插即用。)
Guard 有意不在检查时提供“阻止还是继续?”的内联提示:驱动命令行的 AI Agent 可能会自动回答此类提示,而非交互式环境(CI、脚本)则完全无法回答。allow 必须通过单独且经过审慎决定的命令执行——在触发阻止的任何自动化循环之外——并在 git 中留下可审查的记录。
退出代码
| 上下文 | 在以下情况下以 1 退出 |
|---|---|
check / install / scan | 判定为 BLOCK 或 ERROR,或使用 --strict 时判定为 WARN(无论是否使用 --strict,ERROR 都会以 1 退出) |
scan-agents | 发现 CRITICAL 或 HIGH,或使用 --strict 时发现任何问题 |
有关软件包判定结果的含义,请参阅判定结果。
自动运行 — Shell 钩子
Shell 钩子会透明地拦截 npm install / pip install / cargo add / go get。每个新软件包都会在实际安装程序运行前接受检查;已安装的软件包和非安装命令则会直接通过。
macOS / Linux(bash 或 zsh)
添加到 ~/.bashrc、~/.zshrc 或 ~/.bash_profile:
# Gate npm installs (default)
eval "$(zyrax-guard init bash)"
# Gate pip installs
eval "$(zyrax-guard init bash pip)"
# Gate cargo add
eval "$(zyrax-guard init bash cargo)"
# Gate go get
eval "$(zyrax-guard init bash go)"
无需重启终端即可立即应用:
source ~/.zshrc # or ~/.bashrc
Windows(PowerShell)
添加到 PowerShell 配置文件($PROFILE)。查找并打开该文件:
notepad $PROFILE # creates the file if it doesn't exist
添加这一行并保存:
Invoke-Expression (zyrax-guard init powershell | Out-String)
立即应用:
. $PROFILE
从现在起,PowerShell 窗口中的每个 npm install、pip install、cargo add 或 go get 都会在安装任何内容之前自动接受检查。
与 AI 编码 Agent 搭配使用
将 zyrax-guard mcp 注册为 MCP 服务后,Agent 就能获得 scan_agents 工具,用于审计它即将操作的配置;还会获得 check_package 工具,在每次安装前调用(AI Agent 会幻觉出软件包名称;攻击者会预先将这些名称注册为恶意软件,而 Guard 会切断这一链条)。
一步完成注册(推荐):
zyrax-guard mcp install # writes ./.mcp.json for this project
zyrax-guard mcp install --global # registers globally with Claude Code (user scope)
mcp install 会写入标准的 .mcp.json(Claude Code、Cursor 和 VS Code 均可读取),并自动检测应注册 zyrax-guard mcp(PATH 中的二进制文件)还是 npx -y zyrax-guard mcp。使用 --command binary|npx 可覆盖此设置。--global 会委托给 claude mcp add -s user(如果未安装 claude CLI,则会打印手动执行的命令)。
手动单行命令(Claude Code):
claude mcp add zyrax-guard -- npx -y zyrax-guard mcp
→ Claude Code、Cursor、Windsurf、VS Code 和 Continue.dev 的 MCP 设置
Guard 已加入官方 MCP 注册表,条目为 io.github.tiagosilva07/zyrax-guard — 使用 npx -y zyrax-guard mcp 即可通过一行命令注册。
在 CI 中使用
通过门禁检查拉取请求,确保恶意或幻觉生成的依赖项无法通过构建。GitHub Action 是最快捷的方式;GitHub Actions、PyPI、crates.io 和 Go 模块的 zyrax-guard scan 配置示例请参阅 CI 指南。
→ CI 配置示例(GitHub Actions 拉取请求门禁、PyPI、crates.io、Go 模块)
隐私承诺
只有你查询的公开软件包名称会离开你的设备,用于向公开注册表 API 进行只读查询:
registry.npmjs.org— 检查是否存在及获取元数据api.npmjs.org— 下载量proxy.golang.org— 检查 Go 模块是否存在及获取版本元数据api.osv.dev— 已知安全公告registry.npmjs.org— 查询 Guard 的最新版本(检查更新,每天最多 1 次;设置ZYRAX_NO_UPDATE_CHECK=1可禁用)github.com— 仅在运行zyrax-guard upgrade时使用(下载经过签名的发布二进制文件)
不收集遥测数据。不需要账户。不会向任何地方发送机密信息。该二进制文件可复现构建
(-trimpath),且每个版本均附带 SLSA L3 来源证明,因此你可以自行验证构建
链。
免费且开源
Zyrax Guard 采用 MIT 许可证且免费——包括 Agent 配置审计工具(scan-agents +
scan_agents MCP 工具)、每项软件包检查、支持 JSON/SARIF 输出的 PR 门禁、
check_package MCP 工具以及 shell hook。你可以阅读代码并自行验证二进制文件。
面向团队的 Zyrax 平台(提供组织范围的策略、持续监控、仪表板以及审计与合规报告) 正在开发中——了解更多信息,请访问 zyrax.io。
路线图
| 版本 | 项目 | 状态 |
|---|---|---|
| v0.1.0 | npm CLI:check + PR 门禁 scan(lockfile 差异)+ JSON/SARIF + 自我强化 CI | 已发布 |
| v0.2.0 | MCP 服务(check_package)+ shell-hook(zyrax-guard init) | 已发布 |
| v0.3.0 | PyPI + crates.io 在 check/install/hook/MCP/scan 上实现功能对等 | 已发布 |
| v0.4.x | 深度检查(--deep):静态安装/构建脚本分析 + 总体时间预算 | 已发布 |
| v0.5.0 | 更名为 Zyrax;公开发布 | 已发布 |
| v0.6.x | GitHub Action + Marketplace 条目 + curl|sh 安装程序;浮动的 @v0 标签 | 已发布 |
| v0.7.0 | scan-agents:AI Agent 配置审计(提示词注入、MCP 主机、权限)+ 第 2 阶段检测(凭据访问、数据外泄出口、MCP 工具描述注入) | 已发布 |
| v0.8 | 为 scan-agents 提供一流的 CI 展示:SARIF 输出 + GitHub 代码扫描上传 + PR 内联注释 | 已发布 |
| v0.9.0 | 更新检测(每日可选择退出的通知 + 已验证的 upgrade)+ 一步式 mcp install;生产就绪:失败时默认阻止的 ERROR 判定(网络故障不再绕过门禁)、重试/退避、MCP panic 恢复、经 cosign 验证的升级、强化 CI(gitleaks/staticcheck/dependency-review);Agent 配置检测强化(匹配前先规范化混淆内容、采用允许列表风格的 MCP/exec/权限配置、zyrax-allow 抑制) | 已发布 |
| v0.10.0 | 基于全面审计进行的正确性与失败时默认阻止强化:scan 支持 npm 工作区 lockfile(monorepo 不再崩溃)、install 安装经过精确审查的 name@version、scan-agents 在目录缺失时失败并报告无法扫描的配置(超大/无法读取)、清理来自注册表的文本以防终端转义/提示词注入、未知下载统计不再被读取为“0”(避免误将 typosquat 判为 BLOCK)、每个检查入口均设置挂钟时间预算、默认启用签名验证的 upgrade、--help 以 0 退出 + 记录退出代码、install --json | 已发布 |
| v0.11.x | 判定策略:BLOCK 仅用于恶意软件(v0.11.0)——合法软件包中的漏洞无论严重程度如何均发出 WARN(使用 --strict 才会失败);Windows scoop bucket(scoop-zyrax)+ 委托执行 upgrade,补齐 Windows 升级功能 | 已发布 |
| v0.12.0 | 减少对声明式 PyPI 配置的可疑安装误报(信号现在会提供文件:行号证据);仅供参考的仓库上下文信号(GitHub 星标数/仓库年龄/最后推送时间——绝不影响判定);allow --reason 会在 .zyrax/policy.json 中记录带时间戳的审计记录 | 已发布 |
| v0.13.0 | Go modules 生态系统(--ecosystem gomod、proxy.golang.org),覆盖 check/install/hook/MCP/scan,并支持 go.sum lockfile | 已发布 |
| 探索中 | 语义检测层(使用 LLM/启发式判定器检测改述/非英语提示词注入),作为 Zyrax 平台能力;由社区整理的威胁情报(共享恶意软件包和 MCP 主机源);通过 Ecosystem 扩展点支持更多生态系统(RubyGems) | — |
路线图项目可通过现有的 Ecosystem、ThreatIntel、Policy 和
Reporter 扩展点接入——无需重新架构。
许可证
MIT——详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。