
オープンソースのペンテスト管理ツールで、AIエージェントによる運用を目的として構築されています。
AI エージェントによる運用を前提に設計されたオープンソースのペンテスト管理ツールです。MCP 経由で Claude Code に接続すると、スコープとアセット、偵察の観察結果、方法論のカバレッジ、CVSS とエビデンス付きの findings など、エンゲージメントを一緒に実行します。
エージェントのスピードを活かしつつ、実際のエンゲージメントの規律を失いたくないテスターのために作られました。作業が繰り返されることはなく、findings がセッション間で消えることもなく、証明されていないものがレポートに到達することもありません。

完全なドキュメント: https://cspf-founder.github.io/red-clippy/
コーディングエージェントは、実際に役立つテスターになりつつあります。シェルを持ち、あなたと同じツールを実行し、素早く範囲をカバーします。ターゲットに向けると、何かを見つけ出します。
しかし、コンテキストウィンドウがいっぱいになると、エンゲージメントは消えてしまいます。次のセッションでは、すでにクリアしたホストを再スキャンし、すでに除外したものを再テストし、スコープのどの部分に触れたかを教えてくれません。トランスクリプトのどこかに、誰も記録しなかった確認済みの SQL インジェクションがあります。
Red Clippy は、エージェントに単独では持っていない 2 つのものを与えることで、これを修正します。
作業を置く場所。 すべてのアセット、観察結果、チェック、findings は、スクロールバックバッファではなく、テストが行われるときにデータベースに保存されます。カバレッジは記憶ではなくクエリになります: どのアセットが存在するか、各アセットでどのチェックがクリアされているか、すでに報告されたものは何か。明日のセッションは、前回のセッションが終了した正確な場所から再開します。
従うべきルール。 Red Team Instructions ドキュメントは、何かを行う前に、MCP ハンドシェイクでエージェントに届きます: 報告する前に検証し、すべての主張を証明し、影響を示すために必要な最小限のアクセス権を取得し、サードパーティのシステムには触れない。チームやクライアントによってハウスルールが異なるため、組織ごと、エンゲージメントごとに上書きできます。
あなたは常にループ内に留まります。エージェントが書き込むすべてのものは、Web UI の通常の行であり、レビュー、修正、再分類、破棄が可能です。
[!CAUTION] 認可されたテストのみ。 Red Clippy は、エンゲージメントの下で作業するペネトレーションテスター向けです。所有しているシステム、または明示的な書面による許可を得て評価するシステムのみをテストしてください。スコープのマーキングと Red Team Instructions は、エージェントをエンゲージメントのルール内に保つために存在しますが、これらはガードレールであり、認可ではありません。エージェントはあなたの権限で行動し、エージェントが行うすべてのことに対してあなたが責任を負います。
最新リリース からバイナリをダウンロードして実行します。データベースをセットアップし、127.0.0.1:7337 でパネルを提供します。
Linux
tar xzf red-clippy-*-x86_64-unknown-linux-musl.tar.gz
cd red-clippy-*-x86_64-unknown-linux-musl
./red-clippy serve
Windows
アーカイブを解凍し、そのフォルダから:
.\red-clippy.exe serve
http://127.0.0.1:7337 を開くと、セットアップウィザードが引き継ぎます。
データベースは、バイナリを実行したディレクトリに作成されます。アップロードされたエビデンスも、red-clippy-storage に保存されます。どちらのパスも設定ファイルで変更できます。設定 を参照してください。
自分でコンパイルしたいですか? ソースからのビルド を参照してください。
Red Clippy は作業を 組織 にグループ化します。組織はペンテストを保持し、各ペンテストはそのエンゲージメントのアセット、findings、エビデンスを保持します。1 つの会社をテストする場合、単一の組織で十分です。複数のクライアントにコンサルティングする場合は、各クライアントに独自の組織を与えてください: 組織は他の組織のものを一切見ることができないため、エンゲージメントが混ざることはありません。
組織には 2 つの名前があります。表示名 ("Acme Corp") はパネルに表示されるもので、後で変更できます。スラッグ (acme) は、ディスク上のエビデンスフォルダ (red-clippy-storage/org_acme/pentest_PT-2026-08-27/) で使用される短い小文字の識別子であるため、設定すると固定されます。
複数の組織に所属し、アバターメニューから切り替えることができます。各組織では、人を追加・削除したり、組織の名前を変更・削除したりできる オーナー か、エンゲージメントを実行する メンバー のいずれかになります。
初回起動時、データベースは空なので、ブラウザにはログインフォームの代わりに セットアップウィザード が表示されます。次のものを求められます:
作成されるアカウントは、その組織のオーナーです。ウィザードはデータベースにユーザーがいない間のみ表示され、最初のアカウントが存在すると恒久的に無効になるため、後で追加のアカウントを作成するために使用することはできません。
セットアップ後、アプリ内の アバターメニュー > 組織 で組織とチームメイトを管理します。
誰もサインインできない場合、CLI が復旧手段です:
red-clippy reset-password --username alice --password 'new-one'
想定されるフローはエージェント駆動です。エンゲージメントをセットアップし、記録を保持しながら Claude Code でターゲットを進めます。
あなたがセットアップ:
エージェントは作業し、進めながら記録します:
ingest_tool_output で生のスキャナー出力を渡すか、アセットと観察結果を直接書き込みます。あなたが監督:
エージェントはオプションです。パネルと同じ API を介して動作するため、エージェントが記録するものはすべて、ブラウザで自分で入力、修正、削除することもできます。エンゲージメントを完全に手動で実行するか、完全にエージェント経由で実行するか、または進行に応じて 2 つを切り替えることができます。
これは Red Clippy が使用されることを意図している主な方法です。
red-clippy mcp はアプリケーション全体をカバーします: スコープとアセット、観察結果、方法論のカバレッジ、findings、エビデンス、攻撃グラフ、ツール出力の取り込み。接続されたエージェントは、それについて質問に答えるだけでなく、エンゲージメントを実行します。
接続時に、サーバーは MCP ハンドシェイクで Red Team Instructions ドキュメント (テスト中の動作方法に関する運用ドクトリン) をクライアントに渡すため、最初のツール呼び出しの前にエージェントのコンテキストに入ります。これは、エンゲージメントごとの上書き、組織のデフォルト、組み込みドキュメントの順に、最も具体的なものから解決されます。組織のデフォルトは 設定 > Red Team Instructions で編集するか、ペンテストの設定ページからエンゲージメントごとの上書きを設定します。get_instructions はオンデマンドで再読み取りします。
設定 > API キー で発行します。その下の MCP に接続 セクションには、そのキー、このサーバーの URL、バイナリ自体のパスがすでに入力された、各クライアント用の貼り付け可能な設定が表示されます。手動で置き換えるものはありません。
代わりに CLI からキーを作成し、スニペットに自分で貼り付けるには:
red-clippy create-api-key --username alice --org acme --name laptop
# -> rcl_<prefix>_<secret> (一度だけ表示されます。今すぐ保存してください)
claude mcp add red-clippy \
--env RED_CLIPPY_URL=http://127.0.0.1:7337 \
--env RED_CLIPPY_API_KEY=rcl_xxxx_yyyy \
-- /path/to/red-clippy mcp
add の後の名前は、Claude Code が表示するラベルにすぎません。-- の後のコマンドが実際に起動するものなので、バイナリのフルパスを使用してください: Claude Code は必ずしも PATH で red-clippy を見つけられるとは限りません。パネルの MCP に接続 からコマンドをコピーすると、正しいパスがすでに入力されています。
z.ai は Anthropic 互換のエンドポイントを提供するため、Claude Code は Anthropic モデルの代わりに GLM で Red Clippy を駆動できます。
これを Claude Code の設定に追加します: 作業フォルダ内の .claude/settings.local.json は 1 つのエンゲージメントにスコープし、~/.claude/settings.json はすべての場所に適用します。
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
"ANTHROPIC_AUTH_TOKEN": "your-z-ai-api-key",
"ANTHROPIC_API_KEY": "",
"API_TIMEOUT_MS": "3000000",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5.3",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5.3",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-5.3",
"ANTHROPIC_SMALL_FAST_MODEL": "glm-5.3",
"CLAUDE_CODE_SUBAGENT_MODEL": "glm-5.3"
}
}
置き換えるべき 2 つのもの:
your-z-ai-api-key を自分のキーに置き換えます。Claude Code が git から除外するプロジェクトローカルの .claude/settings.local.json を優先して使用し、キーがコミットされないようにします。glm-5.3 を z.ai が現在提供しているモデルに置き換えます。モデル名は変更されるため、z.ai の Claude Code ガイド で現在のものを確認し、すべてのエントリをそれに設定します。次に、上記とまったく同じように MCP サーバーを追加します。Red Clippy はモデルの選択の影響を受けません: MCP はクライアント側で実行されるため、エージェントの背後にあるモデルに関係なく、ツールは同じように動作します。
Codex CLI 設定に従い、~/.codex/config.toml で:
[mcp_servers.red-clippy]
command = "/path/to/red-clippy"
args = ["mcp"]
env = { RED_CLIPPY_URL = "http://127.0.0.1:7337", RED_CLIPPY_API_KEY = "rcl_xxxx_yyyy" }
red-clippy mcp はプレーンな JSON-RPC 2.0 stdio サーバーです。環境に 2 つのものが必要で、オプションのエンゲージメントピンを受け取ります:
RED_CLIPPY_URL=http://127.0.0.1:7337 \
RED_CLIPPY_API_KEY=rcl_xxxx_yyyy \
/path/to/red-clippy mcp --pentest PT-2026-Q2-ACME
--pentest はセッションを 1 つのエンゲージメントにバインドするため、エージェントは毎回呼び出しで名前を指定する必要がありません。アクティブなエンゲージメントごとに 1 つの MCP エントリを実行し、サーバーを切り替えてエンゲージメントを切り替えます。
接続したら、次のように尋ねるだけです: "PT-2026-Q2-ACME に finding を追加: /search の reflected XSS、高深刻度、PoC はこちら"。
[!NOTE] エージェントと
red-clippy serveは同じマシンで実行されるため、RED_CLIPPY_URLは127.0.0.1を指します。
完全な MCP ツールサーフェス。 Web UI とほぼ完全なパリティであり、トークンのサブセットではありません。エージェントは、アセットの作成とスコープ設定、観察結果の添付、方法論チェックのマーク、findings の提出と更新、エビデンスのアップロード、グラフエッジの構築、組織全体の検索を行うことができます。
クリーンな状態を保つスコープ。 アセットは実際にテストするユニットです: ドメイン、ホスト、URL、API、モバイルパッケージ、IP レンジ。それぞれに独自のチェックリスト、到達可能性マーキング、スコープ内/外フラグがあります。偵察ノイズ (発見されたパス、テクノロジーフィンガープリント、証明書、wayback URL) は、スコープリストに入るのではなく、アセットに 観察結果 として添付され、それに値する場合にのみアセットに昇格します。この分割がないと、単一のコンテンツディスカバリ実行でアセットリストが使用できなくなります。
レポートまでの findings。 深刻度、フォームに組み込まれた計算機付き CVSS 3.1、CWE/CVE、PoC、修復策、ファイルエビデンス。クロスエンゲージメントダッシュボードには、組織内のすべての findings がソースのペンテストとともにリストされます。これは再テストが必要とするビューです。
クエリ可能なカバレッジ。 OWASP WSTG にマッピングされた 135 の組み込みチェックに加え、偵察、ネットワーク、クラウド、OSINT チェック。ロールアップは、アセットごと、エンゲージメントごとにテストされたものを報告するため、クリアされた領域が再テストされることはありません。

運用ドクトリン。 Red Team Instructions ドキュメント。MCP 経由で提供され、エンゲージメントごと、組織ごと、組み込みデフォルトの順に解決されます。
ツール出力の取り込み。 生のスキャナー出力は単一の呼び出しで送信されます。これは、エージェントが結果を独自のシェルからレコードに移動する方法です。nmap、burp、nessus、openvas、masscan、naabu、subfinder 用のパーサーと、形式の自動検出。findings、偵察、生の出力は、1 つのトランザクションで一緒に保存されます。
攻撃グラフ。 任意の 2 つのノードを自由形式の関係でリンクし、隣接ノードをトラバースするか、それらの間の最短攻撃パスを計算します。
マルチテナント。 すべてのレコードは組織に属します。1 人のユーザーは複数の組織に所属でき、サインアウトせずに切り替えることができるため、クライアントデータは分離されたままになります。
REST API。 組織スコープのベアラーキー、上記のすべてと同じサーフェス。
オプション: 組み込みのスキャンランナー。 Scanning ページから subfinder、nmap、masscan、naabu を駆動するための便利な機能で、ターゲットごとの再開可能なカバレッジを備えています。これは手動オペレーターの使用のために存在し、エージェントが独自のツールを実行して出力を取り込む通常のエージェント駆動ワークフローの一部ではありません。
ドキュメント は、MCP ツールリファレンス、REST API、データモデルを含め、これを画面ごとにカバーしています。この README は、起動と実行についてカバーしています。
設定は TOML ファイルから取得されます。red-clippy serve はデフォルトで ./red-clippy.toml を読み取ります。例をコピーして編集します:
cp red-clippy.toml.example red-clippy.toml
bind = "127.0.0.1:7337"
database_url = "sqlite://red-clippy.db?mode=rwc"
storage_root = "./red-clippy-storage" # アップロードされたエビデンスはここに保存されます
max_upload_bytes = 26_214_400 # 25 MiB
すべてのフィールドは、CLI フラグまたは環境変数でも設定できます。優先順位は、フィールドごとに CLI フラグ > 環境変数 > TOML > 組み込みデフォルト です。
| 設定 | CLI フラグ | 環境変数 |
|---|---|---|
bind | --bind | RED_CLIPPY_BIND |
database_url | --database-url | RED_CLIPPY_DATABASE_URL |
storage_root | --storage-root | RED_CLIPPY_STORAGE_ROOT |
max_upload_bytes | --max-upload-bytes | RED_CLIPPY_MAX_UPLOAD_BYTES |
frontend_dist | - | - |
local_open | - | - |
| 設定ファイルのパス | -c, --config | RED_CLIPPY_CONFIG |
ファイルのみの設定が 2 つあります:
frontend_dist はビルド済みの SPA を上書きします。リリースバイナリはそれを埋め込むため、通常は未設定です。再コンパイルせずにパッチ適用済みバンドルを提供するには、ディレクトリを指定します。local_open は、Files ページの「ファイルマネージャーで表示」ボタンが サーバーを実行しているマシン上で xdg-open / open / explorer.exe をシェルアウトできるようにします。デフォルトではオフです。サーバーがログインしたグラフィカルセッション内の自分のデスクトップである場合にのみオンにし、systemd の下やリモートで提供する場合は絶対にオンにしないでください。認識されないキーは無視されるのではなく、エラーで起動を停止するため、タイプミスが静かにデフォルトのままになることはありません。
ログフィルタリングは RUST_LOG を使用します (デフォルト info,sqlx=warn)。
完全なリストについては red-clippy serve --help を実行してください。
[!WARNING] ローカルで実行してください。 Red Clippy は
127.0.0.1にバインドされ、それを駆動するエージェントの隣の自分のマシンで実行されることを意図しています。ネットワークやインターネットに公開するようには設計されていません。
red-clippy serve Web UI と REST API を実行
red-clippy mcp MCP stdio サーバーを実行
red-clippy init-db マイグレーションを適用
red-clippy create-org 組織を作成
red-clippy create-user ユーザーを作成
red-clippy add-member ユーザーを組織に追加
red-clippy reset-password 非常時のパスワードリセット
red-clippy create-api-key API キーを発行
任意のサブコマンドに --help を追加してフラグを確認します。
REST API は /api/v1 の下にあり、Authorization: Bearer rcl_<prefix>_<secret> で認証します。キーは組織スコープであるため、URL に組織を取るエンドポイントはありません。アプリ内の ヘルプ ページにエンドポイントが文書化されています。
git clone https://github.com/CSPF-Founder/red-clippy.git
cd red-clippy
make all
./target/release/red-clippy serve
make all は最初に Web UI をビルドし、そのバンドルを埋め込んでバイナリをコンパイルします。
[!NOTE] ビルド順序。 React バンドルはコンパイル時に埋め込まれます。
cargo build --releaseを単独で実行しても機能しますが、UI が一度もビルドされていない場合、バイナリはプレースホルダーページを提供します (cargo が警告を出力します)。 最初にmake frontendを実行するか、単にmake allを使用してください。
ネイティブビルド は rustup、MSVC ビルドツール、Node をインストールして行います:
npm --prefix frontend ci
npm --prefix frontend run build
cargo build --release
.\target\release\red-clippy.exe serve
または、Linux からクロスコンパイル は mingw-w64 ツールチェーン (apt install gcc-mingw-w64-x86-64) を使用します:
rustup target add x86_64-pc-windows-gnu
make frontend
cargo build --release --target x86_64-pc-windows-gnu
# -> target/x86_64-pc-windows-gnu/release/red-clippy.exe
その単一の .exe を Windows ホストにコピーして実行します。他にインストールするものはありません。
make help # すべてのターゲットを一覧表示
make dev # Vite 開発サーバー、/api を実行中のバックエンドにプロキシ
make backend-dev # cargo build (debug)
make test # Rust テストスイート
make clippy # 警告をエラーとして lint
make install-hooks # pre-commit clippy ゲートを有効化 (クローンごとに 1 回)
デバッグビルドは、埋め込む代わりに実行時にディスクから frontend/dist を読み取るため、Rust を再コンパイルせずに UI を再ビルドできます。
プルリクエストを開く前に、CI が実行するものを実行してください: cargo fmt --all --check、make clippy、make test、make lint、make frontend。
make install-hooks は、フォーマットと lint ゲートを pre-commit フックに配線します。パーサーの追加方法を含む完全なバージョンについては、CONTRIBUTING.md を参照してください。
Cargo.toml の version を上げ、一致するタグをプッシュします:
git tag -a v0.2.0 -m "v0.2.0"
git push origin v0.2.0
CI は静的 Linux バイナリと Windows 実行可能ファイルをビルドし、チェックサム付きの GitHub リリースとして両方を公開します。タグはクレートのバージョンと一致する必要があります。そうしないとビルドが失敗します。公開せずにリハーサルするには、Actions タブから Release ワークフローを手動で実行します: アーカイブをワークフローアーティファクトとしてビルドしてアップロードし、リリースステップをスキップします。
バグレポート、新しいツール用のパーサー、MCP カバレッジを歓迎します - CONTRIBUTING.md を参照してください。
セキュリティの問題を見つけましたか? 問題を開くのではなく、SECURITY.md を介して非公開で報告してください。
Copyright (C) 2026 Cyber Security & Privacy Foundation
GNU General Public License v3.0 の下でリリースされています。このプログラムには ABSOLUTELY NO WARRANTY が付属しています。詳細はライセンスを参照してください。