Zyrax Guard について
Zyrax Guardは、AIエージェントの設定やソフトウェアパッケージをローカルで監査するCLIです。開発者やCIワークフロー向けに、プロンプトインジェクション、危険なMCP設定、認証情報流出の兆候、依存関係のリスクを検出します。
主な機能
- 01エージェント設定のプロンプトインジェクション検査
- 02MCP設定と権限の確認
- 03npm、PyPI、crates.io、Goパッケージの審査
- 04インストール前のパッケージ検査
- 05ロックファイル差分のスキャンとSARIF出力
- 06ポリシーファイルでの許可リスト管理
活用シーン
- 01コーディングエージェントの実行前に設定を監査
- 02CIで高リスクなエージェント設定をブロック
- 03プルリクエストで追加されたパッケージを審査
- 04スキャン結果をコードスキャンのワークフローに連携
MCP 対応
MCPサーバーとして登録すると、指定ディレクトリのエージェント設定ファイルをスキャンする`scan_agents`ツールをエージェントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| deep | boolean | いいえ | アーティファクトをダウンロードし、インストール/ビルドスクリプトを静的解析します(時間がかかります) |
| name | string | はい | 検査するパッケージ名 |
| version | string | いいえ | 任意。既定値は公開済みの最新バージョンです |
| ecosystem | enum | いいえ | npm | pypi | crates | gomod |
詳細
Zyrax Guard
AI エージェントを実行する前に、設定を監査しましょう。
AI を制御するファイル(CLAUDE.md、.mcp.json、エージェント設定、スキル)に隠れたプロンプトインジェクション、悪意のある MCP サーバー、認証情報の窃取を検出し、依存するパッケージも検証します。数ミリ秒で完了します。データがマシンの外に送信されることはありません。
$ 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 コーディングエージェントのゲートとして動作します。アカウントは不要です。外部に送信されるのは、照会する公開パッケージ名だけです。
入手方法(いずれかを選択):
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
プラットフォームごとの Go バイナリを(optionalDependencies 経由で)同梱しているため、実行時のダウンロードは不要です。Node 18+ が利用できる環境であれば、どこでも動作します。
Homebrew(macOS / Linux)
brew install tiagosilva07/zyrax/zyrax-guard
署名済みリリースバイナリをインストールします(SHA-256 は Homebrew によって検証されます)。新しいリリースの公開後、brew upgrade で更新できます。
Scoop(Windows)
scoop bucket add zyrax https://github.com/tiagosilva07/scoop-zyrax
scoop install zyrax-guard
署名済みリリースバイナリをインストールします(ハッシュの出所であるリリースの署名済み checksums.txt を基に、scoop がマニフェストと照合して SHA-256 を検証します)。zyrax-guard upgrade は scoop によるインストールを検出し、scoop update zyrax-guard に処理を委任します。
クイックインストール(Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/tiagosilva07/zyrax-guard/main/scripts/install.sh | sh
お使いの OS/アーキテクチャ向けの署名済みリリースバイナリをダウンロードし、リリースのチェックサムと照合して SHA-256 を検証したうえでインストールします(/usr/local/bin、書き込み不可の場合は ~/.local/bin)。VERSION=v0.5.0 でバージョンを固定するか、BINDIR を設定してインストール先を指定できます。cosign が PATH にある場合は、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 は 1 日に最大 1 回、新しいリリースがあるかを確認します(registry.npmjs.org で自身のバージョンを読み取り専用で照会します)。利用可能な場合は、stderr に 1 行の通知を表示します。更新するには:
zyrax-guard upgrade # detects how Guard was installed and updates it
zyrax-guard version --check # force a version check now
Guard をパッケージマネージャー(npm/brew/scoop/go)でインストールした場合、upgrade はそのパッケージマネージャーに処理を委任します。Linux/macOS で curl|sh またはスタンドアロンバイナリを使ってインストールした場合は、署名済みリリースをダウンロードし、バイナリを置き換える前に、checksums.txt と照合した SHA-256 および鍵不要の cosign 署名を検証します(不一致があれば更新を中止します)。署名検証はデフォルトで必須です。cosign がインストールされていない場合は、手順を示して更新を中止します。チェックサムのみの検証を明示的に受け入れるには、--require-signature=false を指定してください。Windows では、更新を委任できるようにこちらから scoop を使ってインストールしてください。スタンドアロンの Windows バイナリは引き続き手動で更新します(通知から Releases に移動できます)。
ZYRAX_NO_UPDATE_CHECK=1 で毎日の確認を無効にできます。
クイックスタート
AI エージェントの設定を監査する
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、それ以外は 0 以外です。
WARN を失敗として扱うには、--strict を追加します。
AI エージェントの設定を監査する(scan-agents)
AI コーディングエージェント(Claude Code、Cursor、Gemini CLI)は、悪用される可能性のある設定ファイルを読み込みます。たとえば、クローンしたリポジトリに含まれる悪意のある CLAUDE.md、攻撃者のサーバーを指すよう改ざんされた .mcp.json、説明文に指示を隠した MCP ツール、ワイルドカードのシェルアクセスを許可する settings.json、あるいはエージェントを巧妙に誘導し、.env を読み込んで外部に POST させる文章などです。Guard はエージェントが実行される前にこれらを検出します。
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 |
シェル、インラインの -c/-e、一時ディレクトリのバイナリ、または危険な環境変数を使用して実行する MCP サーバー | HIGH |
認証情報ファイル(.env、id_rsa、.aws/credentials)に言及する指示 | HIGH |
外部 URL と同じ行にある、情報流出先(send/POST/curl) | HIGH |
permissions のワイルドカード allow | HIGH |
| 拒否ルールのない無制限のシェルアクセス | MEDIUM |
ロックファイルのない npx MCP サーバー | MEDIUM |
| コマンドを実行する自動実行フック(ダウンロード後の実行 → CRITICAL、シェルフラグ → HIGH) | CRITICAL–MEDIUM |
終了コード:CRITICAL または HIGH の検出結果がある場合は 1、それ以外は 0 です。検出結果があれば終了コードを 1 にするには、--strict を使用します。
難読化を正規化して検出します。 マッチング前に、一般的な偽装(ゼロ幅文字と書式文字、類似字形文字、全角文字とリートスピークの置換、区切り文字や改行による分割)を正規化するため、単純に隠されたペイロード(y0u 4r3 n0w…、ignore—previous—instructions、キリル文字のそっくりな文字など)も検出されます。既知のエージェント設定攻撃パターンに対する、高速で決定論的なオンデバイスのガードレールです。言い換えたり別の言語で記述したりする、悪意ある攻撃者への完全な防御ではありません。セマンティック検出は 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 サーバーとして登録すると、エージェントから scan_agents も利用できるようになります。
{
"name": "scan_agents",
"arguments": { "dir": "." }
}
GitHub Action
すべてのプルリクエストをゲートします。デフォルト(scan: both)では、Zyrax Guard が AI エージェントの設定(プロンプトインジェクション、悪意のある MCP サーバー、リスクの高い権限)を監査し、さらにプルリクエストで追加された依存関係もゲートします。ブロック対象がある場合、チェックは失敗します。
.github/workflows/zyrax-guard.yml を追加します。
本番環境ではピン留めしてください: これらの例では、サードパーティ製アクションをコミット 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(Code Scanning 用の依存関係 SARIF を書き込む)、agents-sarif-file(Code Scanning 用のエージェント設定 SARIF を書き込む)、args(追加の生フラグ)。
結果を GitHub Code Scanning にアップロードして、検出結果をプルリクエスト上にインライン表示します。
- 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
エージェント設定と依存関係の両方を監査し、その結果を 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 modules に対応しています。--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 modules は proxy.golang.org(標準の Go モジュールプロキシ。認証不要、ダウンロード数 API なし)に問い合わせます。他のエコシステムとは異なる点が 2 つあります。どちらも意図した仕様です。
- タイポスクワッティング/人気度のチェックはスキップされます。 npm、PyPI、crates.io とは異なり、モジュールプロキシにはダウンロード数のエンドポイントがありません。そのため Guard は比較に使える実際の利用状況のシグナルを取得できません。実在するモジュールに対して「ダウンロード数 0 件」というタイポスクワッティング判定をでっち上げるのではなく、「ダウンロード統計を利用できません」と報告します。存在確認と既知のマルウェア(OSV)のチェックは通常どおり実行されます。
--deepはすべての Go モジュールに対して「インストール/ビルドスクリプトが見つかりません」と報告します。go get/go mod downloadは、取得したモジュールのコードを実行しません。静的解析の対象となる npm の postinstall、pip の setup.py、cargo の build.rs に相当するものはありません。
チェックの仕組み
Guard は公開レジストリのメタデータのみを使って実行されます。ローカルでの実行、インストール、サンドボックス化は行いません。
| チェック | 判定のトリガー |
|---|---|
| 存在確認 | パッケージがレジストリに見つからない → BLOCK(幻覚または罠として仕込まれた名前) |
| タイポスクワッティング | 名前がはるかに人気のあるパッケージと 1 編集距離以内で、ダウンロード数がほぼゼロ → BLOCK。「もしかして」と候補を提示 |
| 既知の悪性パッケージ | OSV アドバイザリとの一致 → 既知の悪意あるパッケージ → BLOCK。正規のパッケージに含まれる脆弱性(重要度を問わず、メッセージに表示) → WARN(失敗にするには --strict を使用) |
| 経過日数と人気度 | 公開から 30 日未満、かつ週間ダウンロード数が 50 件未満 → WARN |
| ロックファイルの整合性 | (scan のみ) 解決済み 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 エージェントの設定ファイルを監査します |
allow <name> | パッケージをローカルの許可リストに追加します |
init | シェルフックを表示します(インストールを透過的にゲートします) |
mcp | MCP サーバーを実行します(check_package、scan_agents) |
mcp install [--global] | Guard を AI エージェントに登録します |
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 | オフ | npm に --ignore-scripts を渡します |
--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 が存在する前に書き込まれたファイルも
変更せずに引き続き使用できます。
許可リストに登録されたパッケージはチェックをスキップし、拒否リストに登録されたパッケージは常に BLOCK になります。チームでポリシーを共有するには、このファイルをコミットしてください。(組織全体のポリシーは、Policy の接続点を通じて有料で追加できます。)
Guard は、チェック時にインラインで「ブロックしますか、それとも続行しますか?」と尋ねる機能を意図的に提供していません。
CLI を操作する AI エージェントは、そのようなプロンプトに自動で回答できるうえ、非対話型の環境(CI、スクリプト)では、
そもそも回答できないためです。allow には、BLOCK を発生させた自動ループの外で、別途、意図的にコマンドを実行する必要があり、
git に確認可能な記録が残ります。
終了コード
| コンテキスト | 次の場合に 1 で終了 |
|---|---|
check/install/scan | BLOCK または ERROR の判定があった場合。あるいは --strict を指定して WARN の判定があった場合(ERROR は --strict の指定にかかわらず 1 で終了します) |
scan-agents | CRITICAL または HIGH の検出事項があった場合。あるいは --strict を指定して検出事項があった場合 |
パッケージの判定の意味については、判定を参照してください。
自動化する — シェルフック
シェルフックは 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 コーディングエージェントでの使用
zyrax-guard mcp を MCP サーバーとして登録すると、エージェントは、これから操作する設定を監査する scan_agents ツールと、
インストールのたびに実行する check_package ツールを利用できるようになります(AI エージェントはパッケージ名を幻覚することがあり、
攻撃者はそれらをマルウェアとして事前登録します。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 を使えば、
1 行で登録できます。
CI での使用
プルリクエストをゲートし、悪意のある依存関係や幻覚された依存関係によってビルドが失敗するようにします。
最も手早く導入できるのは GitHub Action です。GitHub Actions、PyPI、crates.io、Go モジュール向けの
zyrax-guard scan のレシピは、CI ガイドにあります。
→ CI のレシピ(GitHub Actions の PR ゲート、PyPI、crates.io、Go モジュール)
プライバシーに関する約束
お使いのマシンから外部に送信されるのは、照会したパッケージの公開名のみです。公開レジストリ API に対する読み取り専用の照会です。
registry.npmjs.org— パッケージの存在確認とメタデータapi.npmjs.org— ダウンロード数proxy.golang.org— Go モジュールの存在確認とバージョン情報api.osv.dev— 既知のアドバイザリregistry.npmjs.org— Guard の最新バージョン(更新確認、1 日あたり最大 1 回。ZYRAX_NO_UPDATE_CHECK=1で無効化できます)github.com—zyrax-guard upgradeの実行時のみ(署名済みリリースバイナリをダウンロードします)
テレメトリはありません。アカウントも不要です。秘密情報が送信されることもありません。バイナリは再現可能(-trimpath)で、すべてのリリースに SLSA L3 の来歴情報が付属するため、ビルドチェーンを自分で検証できます。
無料かつオープンソース
Zyrax Guard は MIT ライセンスで、無料です。エージェント設定監査ツール(scan-agents と scan_agents MCP ツール)、すべてのパッケージチェック、JSON/SARIF 出力に対応した PR ゲート、check_package MCP ツール、シェルフックを利用できます。コードを読み、バイナリを自分で検証してください。
チーム向けの Zyrax プラットフォーム(組織全体に適用するポリシー、継続的なモニタリング、ダッシュボード、監査/コンプライアンスレポート機能)を開発中です。詳細は zyrax.io をご覧ください。
ロードマップ
| バージョン | 項目 | ステータス |
|---|---|---|
| v0.1.0 | npm CLI:check + PR ゲート用 scan(ロックファイルの差分)+ JSON/SARIF + セルフハードニング CI | リリース済み |
| v0.2.0 | MCP サーバー(check_package)+ シェルフック(zyrax-guard init) | リリース済み |
| v0.3.0 | check/install/hook/MCP/scan 全体で PyPI + crates.io に対応 | リリース済み |
| v0.4.x | 詳細チェック(--deep):静的なインストール/ビルドスクリプト分析 + 全体の時間予算 | リリース済み |
| v0.5.0 | Zyrax にリブランド。一般公開 | リリース済み |
| v0.6.x | GitHub Action + Marketplace 掲載 + curl|sh インストーラー。可変の @v0 タグ | リリース済み |
| v0.7.0 | scan-agents:AI エージェント設定の監査(プロンプトインジェクション、MCP ホスト、権限)+ フェーズ 2 の検出(認証情報へのアクセス、情報流出先、MCP ツールの説明へのインジェクション) | リリース済み |
| v0.8 | scan-agents の CI での本格的な可視化:SARIF 出力 + GitHub コードスキャンへのアップロード + PR へのインライン注釈 | リリース済み |
| v0.9.0 | 更新の検出(毎日のオプトアウト通知 + 検証済みの upgrade)+ ワンステップの mcp install。本番環境への対応:フェイルクローズの ERROR 判定(ネットワーク障害でもゲートを回避できないように変更)、リトライ/バックオフ、MCP のパニック復旧、cosign で検証するアップグレード、強化された CI(gitleaks/staticcheck/dependency-review)。エージェント設定の検出強化(難読化を正規化した照合、許可リスト方式の MCP/exec/perms、zyrax-allow による抑制) | リリース済み |
| v0.10.0 | 完全な監査に基づく正確性とフェイルクローズの強化:scan での npm ワークスペースのロックファイル対応(モノレポでもクラッシュしない)、install が審査済みの正確な name@version をインストール、scan-agents がディレクトリの欠落時に失敗し、スキャン不能な設定(サイズ超過/読み取り不能)を報告、レジストリ由来のテキストをターミナルエスケープ/プロンプトインジェクションからサニタイズ、ダウンロード統計が不明な場合に「0」として扱わない(誤ったタイポスクワッティングの BLOCK を防止)、すべてのチェックのエントリーポイントに実時間の予算を設定、デフォルトで署名を検証する upgrade、--help が 0 で終了 + 終了コードを文書化、install --json | リリース済み |
| v0.11.x | 判定ポリシー:BLOCK はマルウェアのみ(v0.11.0) — 正規のパッケージに含まれる脆弱性は、重大度を問わず WARN(失敗させるには --strict を指定)。Windows scoop バケット(scoop-zyrax)+ upgrade への委譲により、Windows のアップグレード対応の同等性を確保 | リリース済み |
| v0.12.0 | 宣言的な PyPI 設定におけるインストールの疑わしい兆候の誤検出を削減(シグナルにファイルと行の根拠を追加)。アドバイザリー専用のリポジトリコンテキストシグナル(GitHub のスター数/経過年数/最終プッシュ日時 — 判定には影響しません)。.zyrax/policy.json にタイムスタンプ付きの監査証跡を残す allow --reason | リリース済み |
| v0.13.0 | Go modules エコシステム(--ecosystem gomod、proxy.golang.org)を check/install/hook/MCP/scan 全体でサポートし、go.sum ロックファイルにも対応 | リリース済み |
| 検討中 | Zyrax プラットフォームの機能としてのセマンティック検出レイヤー(言い換えや外国語のプロンプトインジェクションを判定する LLM/ヒューリスティック判定器)。コミュニティがキュレーションする脅威インテリジェンス(悪意のあるパッケージと MCP ホストの共有フィード)。Ecosystem の拡張点を通じたエコシステムの拡充(RubyGems など) | — |
ロードマップの項目は既存の Ecosystem、ThreatIntel、Policy、Reporter の拡張点を通じて追加できるため、アーキテクチャの再設計は不要です。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。