GAUNTLEX について
GAUNTLEX は同じ仕様を基に、コード生成エージェントと敵対的テストエージェントを並行実行し、結果を評価します。コード生成中のセキュリティ検証と CI ゲートを求める開発チーム向けです。
主な機能
- 01Builder と Breaker の並行実行
- 02敵対的レジリエンススコアと CI ゲート
- 03規制分野別の攻撃プレイブック
- 04HTML、SARIF、JUnit、JSON のレポート
- 05SHA-256 によるレポート完全性の検証
- 06CLI、ダッシュボード、IDE 連携
活用シーン
- 01機能仕様を基に敵対的なケースをテスト
- 02レジリエンススコアが基準未満なら CI を停止
- 03検出事項を規制分野に対応付け
- 04評価レポートの比較と検証
MCP 対応
GAUNTLEX は、コーディングツールから実行を開始・確認できる MCP サーバーを提供します。外部 MCP サーバーも利用し、脅威データで評価を補強します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
⚔️ GAUNTLEX
敵対的共同生成エンジン
同じ仕様から、同時にコードと敵対的攻撃を生成します。コミットが作成される前に。
概要
AI コーディングツールはどれも、コードを出荷して、後で誰かがセキュリティテストをしてくれることを期待しています。 GAUNTLEX は、その「後で」をなくします。同じ仕様に対して、2 つのエージェントを並行して実行します。
- Builder — 実装を生成します
- Breaker — 同じ仕様に対する敵対的攻撃を、まさに同時に生成します
Arbiter は各攻撃をスコアリング(緩和済み/部分的/未検出)し、**敵対的レジリエンススコア(ARS)**を算出します。設定可能なゲートにより、スコアがしきい値を下回ると CI パイプラインをブロックします。テストスイートの失敗がマージをブロックするのと同じです。
手動でテストを作成する必要はありません。独立したセキュリティレビュー工程もありません。先週出荷されたコードにスキャナーが追いつくのを待つ必要もありません。
動作を見る
📊 1 ページの概要 — その概要、他との違い、デプロイ方法を紹介します。技術リードやアーキテクチャレビュー委員会との共有を想定しています。
デモを見る CI ゲートのセットアップから、実際のターミナル出力とダッシュボードまでを紹介します。Builder と Breaker の並行実行、HIPAA ドメインのテスト、すべての IDE 連携を一度に確認できます。
構造的な違い
機能ではなく、3 つの特性です。それぞれの背景にある考え方は詳細解説をご覧ください。
- 逐次ではなく並行実行。 Builder と Breaker は
asyncio.gather()を介してまったく同時に実行されます。Breaker は生成されたコードを見ず、仕様だけをもとに推論します。これは、実装上の選択が存在する前に、実際の攻撃者が検討するのと同じ対象です。 - ネイティブな MCP 連携を双方向で実現。 GAUNTLEX は MCP サーバーとして自身を公開するため、Claude Code、Cursor、Windsurf、Zed からコーディングツール内で直接実行を開始し、結果をポーリングできます。また、外部 MCP サーバー(組み込みの CISA KEV/NIST NVD フィードも含む)を利用し、各実行に最新の脅威データを追加します。最新情報と静的情報の範囲については、ドメインインテリジェンスのページをご覧ください。
- 規制対象ドメインを第一級の入力として扱います。 FINRA、HIPAA、PCI DSS、SOC 2、OWASP Top 10 のプレイブックにより、規制対象のコードベースで実際に重要となるシナリオへ Breaker を誘導します。業界ごとにラベルを貼り替えただけの汎用スキャンではありません。
GAUNTLEX が他のセキュリティテストと異なる点
これらの代替ではなく、ライフサイクルの異なる段階を担います。静的解析やペネトレーションテストにも引き続き価値があります。GAUNTLEX が必要なのは、どちらもコードの生成中には実行されないためです。
| 従来の SAST(Semgrep、Snyk など) | 手動ペネトレーションテスト | 専用のテストなし | GAUNTLEX | |
|---|---|---|---|---|
| 実行タイミング | コードの記述後 | コードの記述後、定期的に | インシデントが起きるまで実施しない | 生成と同時 |
| テスト対象 | 既存コード内の既知の脆弱性パターン | 稼働中のデプロイ済みシステム | 専用のテストなし | 仕様からコードへのパイプライン自体 |
| 速度 | 1回のスキャンあたり数分 | 1回の実施あたり数日から数週間 | — | 1回あたり約45秒~12分(モードによって異なります) |
| コスト | 無料~中程度 | 高額(専門家の作業時間) | 発生するまでは「無料」 | 無料、オープンソース |
| コンプライアンス基準との対応 | ツールによって異なります | 手動、実施ごとに異なります | なし | 組み込み — OWASP/HIPAA/FINRA/PCI-DSS/SOC2 + CWE + NIST SSDF/SAMM/ISO 27001 |
| 後から検証できる出力 | スキャンレポート | ペネトレーションテストレポート | — | SHA-256 改ざん検知レポート(gauntlex verify) |
クイックスタート
gauntlex setup # start here — interactive, detects and validates the best
# model for your environment (Ollama, OpenRouter free
# tier, or your own API key)
gauntlex run --issue examples/demo_issue.md --mode quick --pretty # then run the demo spec
まず pip install gauntlex-ai でインストールするか、uvx --from gauntlex-ai gauntlex setup を使ってインストールを省略できます。
gauntlex setup はモデルプロバイダーと認証情報を .env に書き込みます。手動で設定する必要はなく、環境内にたまたま残っている API キーへのフォールバックもありません。セットアップ時に設定したものが常に実行されます(rounds_max やゲートのしきい値など、調整可能なデフォルト値を含む .gauntlex.yml も必要な場合は、別途 gauntlex init を実行してください)。
──────────────────────────────────────────────────────────────────────
GAUNTLEX Adversarial Run
Mode: quick (5 attacks)
Language: python [signals: filesystem, async]
Domain: owasp_top10
──────────────────────────────────────────────────────────────────────
ARS Score: 0.87 ✅ PASSED (gate: ≥ 0.80)
✅ CWE-89 SQL Injection via username param mitigated
✅ CWE-502 Unsafe deserialization mitigated
✅ CWE-78 OS command injection in file path mitigated
✅ CWE-22 Path traversal in upload handler mitigated
❌ CWE-79 Reflected XSS in error message MISSED
──────────────────────────────────────────────────────────────────────
実行時間は設定したモデルによって異なり、高速な有料 API なら数秒、無料枠やローカルモデルなら数分かかります。攻撃数の目標はモード(quick/standard/thorough)ごとに5/20/50で、敵対的なラウンドに分散されます。実際の合計は目標に近いものの、必ずしも一致するとは限りません。たとえば thorough の実行で約30~50件の攻撃が行われる場合があります。これは、モデルが各ラウンドで実際に返す攻撃数によって異なるためです。
GitHub の Issue を直接指定して実行する
gauntlex run --issue https://github.com/your-org/your-repo/issues/42 --mode standard --domain hipaa --pretty
ビジネス上の意図を追加する — 攻撃対象領域 = 仕様 + 必要な理由
--issue は仕様であり、Builder が実装し、Breaker が攻撃するのに十分な精度を備えています。これは、何を作るかを示します。--intent は、なぜそれが必要なのかを示す独立した2つ目の入力です。チームが実際に情報を管理している場所から取得でき、Jira のキー、Confluence のページ、Aha! のロードマップ項目などを指定できます。GAUNTLEX は仕様だけでなく、両方の入力を合わせて推論します。
gauntlex run --issue SPEC.md --intent PROJ-123 --domain hipaa --pretty
環境内に認証情報があることを検出すると、gauntlex setup は Jira/Confluence/Aha! に自動接続します。対話型ウィザードのビジネス上の意図のステップを参照してください。
要件
- Python 3.11 以降
- macOS、Linux、または Windows(Windows では WSL2 を推奨)
- 次のいずれかのモデルプロバイダー:無料のローカルモデルである Ollama、OpenRouter の無料枠、または Anthropic/OpenAI の API キー
CLI リファレンス
全 22 コマンドを、利用する場面ごとに分類しています。
| はじめに | |
|---|---|
gauntlex setup | モデルプロバイダーと連携機能を設定します(いつでも実行して再設定できます) |
gauntlex init | 適切なデフォルト値を設定した .gauntlex.yml を生成します |
gauntlex doctor | 環境全体のヘルスチェックを実行します |
gauntlex validate | ドライランです。設定と接続を確認し、攻撃は一切実行しません |
| 評価の実行 | |
|---|---|
gauntlex run | 仕様に対して敵対的な Builder と Breaker を実行します |
gauntlex status | 実行中および最近完了した実行を表示します |
gauntlex findings | 直近の実行で検出された脆弱性を表示します。スコアより先に修正すべき項目を優先します |
gauntlex compare | 2 つの Resilience Report を比較します。ARS の差分と攻撃レベルの変更を確認できます |
gauntlex learn | 実行結果を Knowledge Forge と Forge Ledger に取り込みます(gauntlex run のたびに自動実行されます。古い実行結果を再処理する場合に使用してください) |
| 証跡とコンプライアンス | |
|---|---|
gauntlex report | 保存済みレポートを任意の出力形式(HTML/SARIF/JUnit/JSON)で生成します |
gauntlex verify | SHA-256 整合性ハッシュを再計算し、レポートが改ざんされていないことを確認します |
gauntlex audit | 指定期間内の全レポートを、コンプライアンス管理策との対応付けとともに一覧表示します |
gauntlex vault | Forge Ledger を閲覧します。人が読みやすい Markdown 形式の攻撃記録を確認できます |
gauntlex stats | ARS の推移、学習曲線、コスト指標を表示します |
| ドメインとポリシー | |
|---|---|
gauntlex policy | ポリシードメインの一覧表示、インストール、検索、検証を行います。ドメインインテリジェンスを参照してください |
| チームと CI のデプロイ | |
|---|---|
gauntlex integrate | 1 つのコマンドで、GAUNTLEX を Claude Code、Cursor、Windsurf、Copilot、Codex、Zed、Antigravity、または GitHub Actions に接続します |
gauntlex mcp-server | ローカル IDE で使用するため、GAUNTLEX を MCP サーバーとして起動します(stdio トランスポート) |
gauntlex serve | GAUNTLEX を Webhook/CI サービスとして起動します。オプションで GitHub チームベースの RBAC を利用できます |
gauntlex dashboard | GAUNTLEX のダッシュボード Web UI を起動します(/leaderboard でリアルタイムのリーダーボードも提供します) |
gauntlex leaderboard | 複数のエージェント/実行結果にまたがる ARS リーダーボードの静的な HTML ページを生成します。GitHub Pages などで利用できます |
gauntlex forge-network | コミュニティでの敵対的パターン共有にオプトインします |
gauntlex prune | 期限切れのレポートを削除します |
すべてのコマンドの詳しい使い方、フラグ、使用例については、詳細ガイド → CLI リファレンス全文を参照してください。
言語サポート
仕様から自動検出されます。プロジェクトごとの設定は不要です。
| 言語 | 優先度の高い CWE(例) |
|---|---|
| Python | SQL インジェクション、OS コマンドインジェクション、安全でないデシリアライゼーション、パストラバーサル |
| JavaScript / TypeScript | プロトタイプ汚染、XSS、CSRF、SSRF |
| Java | デシリアライゼーション、XXE、認可バイパス |
| Go | 競合状態、nil ポインタの参照外し、リソース枯渇 |
コンプライアンスとドメインのカバレッジ
現在、規制対象業界向けのプレイブックを 5 種類提供しています。攻撃シナリオは合計 43 件で、それぞれが一般的なラベルではなく、特定のルールまたは管理策に対応付けられています。
| ドメイン | シナリオ数 | 規制フレームワーク |
|---|---|---|
owasp_top10 | 12 | OWASP Top 10(2021/2025) |
finra | 9 | FINRA Rules 4370, 3110; SEC Rule 17a-4 |
hipaa | 9 | HIPAA Security Rule(45 CFR §§160, 164) |
soc2 | 7 | AICPA SOC 2 Trust Service Criteria |
pci_dss | 6 | PCI DSS v4.0 |
ほかに 2 種類(owasp_api_security、nist_ssdf)を gauntlex policy install で利用できます。GDPR、FedRAMP、DORA はロードマップに掲載されており、現時点では利用できません。
現在の脅威データと静的なプレイブックコンテンツの違い、および独自のドメインを追加する方法については、ドメインインテリジェンスのページをご覧ください。
IDE とエージェントの統合
1つのコマンドで、すでに開いている任意の AI コーディングツールに GAUNTLEX を接続できます。
gauntlex integrate --dry-run # preview every config it would write, writes nothing
gauntlex integrate # wire up every supported target at once
gauntlex integrate --platform claude-code # or just one — .mcp.json
gauntlex integrate --platform cursor # .cursor/mcp.json
gauntlex integrate --platform windsurf # ~/.codeium/windsurf/mcp_config.json
gauntlex integrate --platform copilot # .vscode/mcp.json
gauntlex integrate --platform codex # ~/.codex/config.toml
gauntlex integrate --platform zed # .zed/settings.json
gauntlex integrate --platform antigravity # ~/.gemini/config/mcp_config.json
gauntlex integrate --platform github-actions # .github/workflows/gauntlex.yml CI gate
各ターゲットには、そのツールに適したファイル、形式、スキーマが設定されます。 このコマンドが違いを処理するため、ユーザーが対応する必要はありません。また、既存の設定を上書きせずにマージするため、すでに設定済みの他の MCP サーバーもそのまま維持されます。
Claude Code のユーザーは、integrate の代わりにプラグインマーケットプレイスからインストールすることもできます。
/plugin marketplace add sanjoy1234/gauntlex
/plugin install gauntlex@gauntlex
これにより、MCP サーバーとすべての /gauntlex:* スキル(run、verify、doctor、compare、report、learn、validate)が一度に登録され、/plugin update で更新されます。PATH に gauntlex が必要です(pip install gauntlex-ai)。
設定不要: このリポジトリには AGENTS.md が含まれており、Codex、Cursor、Cline、Windsurf、Gemini CLI はインストールせずに自動で読み込みます。GAUNTLEX を使うだけでなく、その上に構築する場合は、このパターンを独自のリポジトリにコピーしてください。
プラットフォームごとの正確なファイルパス、マージ時の安全性の保証、GAUNTLEX が公開する MCP ツール(gauntlex_run、gauntlex_status、gauntlex_verify など)については、統合ガイド をご覧ください。
エンタープライズ向けデプロイ
gauntlex dashboard— 接続されているすべてのリポジトリにわたる ARS の推移、ゲートの状態、攻撃結果の内訳を表示します。チームで共有できる URL は1つです。gauntlex serve --rbac— 共有インスタンス全体で、GitHub のチームに基づくアクセス制御(admin/reviewer/developer)を行います。gauntlex audit— 設定可能な期間について、NIST SSDF/OWASP SAMM/SOC 2 のコントロールマッピングとともに、すべての実行を一覧表示します。- エアギャップ環境での運用 — エンジン全体をローカルの Ollama 上で実行し、外部への呼び出しを一切行いません。インターネットに接続できない環境に適しています。
各機能の詳細については、詳細解説 → エンタープライズ機能をご覧ください。
主要用語
- Adversarial Resilience Score(ARS) — 1回の実行で仕掛けたすべての攻撃について、攻撃ごとのスコア(軽減済み=1.0、一部軽減=0.5、見逃し=0.0)の平均を算出したものです。範囲は [0.0, 1.0] です。GAUNTLEX が生成する中核指標です。
- Builder — 仕様からコードを生成するエージェントです。
- Breaker — Builder の出力を見ずに、同じ仕様から同時に敵対的攻撃を生成するエージェントです。
- 同時共同生成 — コードを書き終えてからテストするのではなく、同じ仕様を対象に
asyncio.gather()を使って Builder と Breaker を同時に実行することです。 - レジリエンスレポート — GAUNTLEX の実行結果を改ざん検知可能な形で出力したもので、順序付けられた攻撃結果の SHA-256 ハッシュを含みます。
gauntlex verifyで独立して検証できます。 - ゲート — 実行の ARS が設定されたしきい値(デフォルトは 0.80)を下回った場合に、マージをブロックする CI チェックです。
FAQ
AI が生成したコードのセキュリティ脆弱性をテストするにはどうすればよいですか?
AI コーディングツールで使用したものと同じ仕様を GAUNTLEX に指定します。gauntlex run --issue your_spec.md --mode quick を実行してください。その仕様から導き出した敵対的攻撃を仕掛け、1 分以内に敵対的レジリエンススコアを返します。
敵対的レジリエンススコア(ARS)とは何ですか? 1 回の実行で仕掛けたすべての攻撃について、攻撃ごとのスコア(軽減済み=1.0、一部軽減=0.5、見逃し=0.0)の平均です。単純な合否の件数ではなく、生成されたコードの耐性を示す連続値 [0.0, 1.0] です。計算式とその根拠の全容については、ARS の解説をご覧ください。
GAUNTLEX はコードの生成前と生成後のどちらにテストしますか? 同時に行います。Breaker エージェントは仕様から直接推論し、Builder と並行して動作します。先にコードができるのを待つことはありません。これが実際の「逐次ではなく並行」の意味です。
GAUNTLEX はどのコンプライアンスフレームワークに対応していますか? OWASP Top 10、HIPAA、FINRA、PCI DSS、SOC 2 に標準で対応しており、NIST SSDF と OWASP API Security はインストール可能な拡張機能として利用できます。ドメインごとの対応内容については、ドメインインテリジェンスをご覧ください。
コードを外部 API に送信せずに GAUNTLEX を実行できますか? はい。エンジン全体をローカルの Ollama 上で実行できるため、外部への呼び出しは一切ありません。エアギャップ環境やコンプライアンス上の制約がある環境で利用できます。
ゲートのしきい値や新しいポリシードメインの追加方法など、その他の質問については、Deep Dive の FAQ 全文をご覧ください。
詳しく見る
- Deep Dive — GAUNTLEX の全容です。並行実行が重要な理由、GAUNTLEX と SAST/DAST/ペネトレーションテストの比較、CLI と設定の完全なリファレンス、アーキテクチャ、FAQ、ロードマップを紹介しています。
- ドメインインテリジェンス — 規制対象の各ドメインで対応している内容、現在利用可能な機能と静的な機能の違い、拡張方法について説明しています。
- コントリビューション — ポリシードメイン、言語プロファイル、機能の追加方法を説明しています。
GAUNTLEX の掲載先
パッケージとレジストリ
- PyPI —
pip install gauntlex-ai - 公式 MCP レジストリ —
io.github.sanjoy1234/gauntlexとして登録
記事
- GAUNTLEX が GAUNTLEX を実行 — 署名付きで検証可能な自己レポートと、実際の仕様 1 件を使った並行テストと逐次テストの比較測定
- dev.to — 「敵対的共同生成エンジンを構築した理由」
- dev.to — 「敵対的レジリエンススコア:AI 生成コードの新しい指標」
- dev.to — 「GAUNTLEX が CI で HIPAA/FINRA コンプライアンスをゲートする方法」
- dev.to — 「誰も確認しないトークンを発行していたログインエンドポイント」
- LinkedIn の記事 — 「AI が 100 万行のコードを書くと破綻する計算」
コミュニティ
- GitHub Discussions — 質問、フィードバック、「これを使って X を作りました」という作品紹介
謝辞
- Deven Samant — 初期のフィードバックと検証
MIT ライセンス · Sanjoy Ghosh が開発
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。