PentAGI は、AI エージェントがペネトレーションテスト(侵入テスト)を自律で進める、自己ホスト型の OSS です。13の役割に分かれたエージェントが、Kali Linux のコンテナの中で nmap・Metasploit・sqlmap などを動かします。開発は VXControl で、ライセンスは MIT です。GitHub のスターは約3.37万(2026-11-09)です。
HOW IT RUNSPentAGI の動き方
13の役割のエージェントが、Kali のコンテナでツールを動かす
-
Web 画面で依頼
対象と目的を文章で書く。範囲の指定もこの文章で行う
-
役割ごとのエージェント
Primary Agent・Pentester・Coder・Searcher・Reporter など13の役割(README)
-
ワーカーコンテナで実行
既定のイメージは vxcontrol/kali-linux。nmap・sqlmap などをここで動かす
-
記憶と報告
PostgreSQL+pgvector に結果を残す。Neo4j の知識グラフと Langfuse の記録は任意
30秒でわかる(2026-11-09)
- ・何ができる:対象と目的を文章で渡すと、エージェントが偵察から報告書まで進める。ツールは Kali のコンテナで実行
- ・何で動く:Go のバックエンドと React の画面を Docker Compose で動かす。LLM は OpenAI・Anthropic・Gemini・Bedrock・Ollama など
- ・気をつける点:設定例のままだと本体がホストの Docker ソケットを root でマウントし、隔離を確かめる起動時テストもオフ
- ・範囲の制限:対象を機械的に絞る仕組みは見当たらず、依頼文で指示する作り。外側のネットワークで止める
まずやること(導入する人向け)
- 書面の許可を取る:診断してよい対象・期間・手法を、対象の持ち主から書面でもらう。
- 専用のマシンに入れる:手元の認証情報や社内網に届かない、使い捨ての VM か専用ノードで動かす。
- 設定を4つ見直す:下の確認コマンドで
.envの Docker まわりを見て、本番に近い使い方なら別ノードのワーカーと隔離テストを使う。
AI ペンテスト OSS の全体像は AIペネトレーションテストOSSの選び方|主要7本の違いと、動かす前に決める5つ にまとめています。ソフトウェアの依存全体を守る考え方は サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説 を参照してください。
PentAGIとは——13の役割が分担する自律ペンテスト
README は PentAGI を「自律型ペネトレーションテストのための、OSS で自己ホスト型のマルチエージェントシステム」と説明しています。Web 画面で「この URL の認証・ファイル処理・インジェクションを中心に診断して」のように依頼すると、役割ごとのエージェントが手順を組み立てて実行します。
| 項目 | 内容(2026-11-09 時点) |
|---|---|
| ライセンス | MIT(LICENSE ファイル) |
| 最新タグ | v2.2.0(HEAD は 2026-10-23 のコミット) |
| 構成 | Go のバックエンド、React 19 の画面、PostgreSQL+pgvector |
| 任意の構成 | Neo4j の知識グラフ(Graphiti)、Langfuse、Grafana などの監視 |
| ツールの実行場所 | ワーカーコンテナ(既定イメージ vxcontrol/kali-linux) |
| 最低要件(README) | 2 vCPU・4GB RAM・空きディスク 20GB |
エージェントの役割は README に13種が挙がっています。依頼を受ける Assistant と Primary Agent、手を動かす Pentester・Coder・Installer、調べる Searcher・Enricher、記憶を扱う Memorist、まとめる Reporter、助言と振り返りの Adviser・Reflector、計画の Planner などです。暴走を防ぐためにツールの呼び出し回数の上限があり、Pentester などの主な役割は既定で100回、調べ物などの補助役は20回です。
対応する LLM は、設定例(.env.example)を見る限り、OpenAI・Anthropic・Gemini・Bedrock・DeepSeek・GLM・Kimi・Qwen・MiniMax・Mistral・xAI・Ollama と、OpenAI 互換の任意のサーバーです。診断の途中経過やソースの一部は、選んだ LLM 事業者に送られます。
導入の流れ——インストーラか Docker Compose
README が勧める導入は、公式サイトから対話型のインストーラを落として実行する方法です。システムの確認、LLM の設定、検索エンジンの設定、セキュリティの強化を順に聞いてきます。手動で入れる場合は .env.example を .env にコピーして値を埋め、Docker Compose で起動します。当サイトはコードと設定を読んだだけで、起動はしていません(未検証)。
README の最低要件(2 vCPU・4GB RAM・20GB)と、インストーラの検査値(空きメモリ 0.5GB・空きディスク 5GB など)は一致していません。実際に診断を回すなら README の値を下限と考え、知識グラフや監視を足す分を上乗せするのが無難です。
既定の設定で気をつける4点と対策
DEFAULT vs HARDENED設定例のままと、README が勧める構成
既定のままではホストの Docker を握った状態で動く
設定例(.env.example)のまま
- 本体がホストの docker.sock を root でマウント
- 隔離の起動時テストはオフ(POLICY_TESTS=false)
- NET_ADMIN が有効(DOCKER_NET_ADMIN=true)
- 専用ネットワークの指定なし(DOCKER_NETWORK 空)
README・設定の注記が勧める形
- ワーカーは別の Docker デーモン(別ノード・TLS)
- 隔離テストをオンにし、失敗ならサンドボックスを止める
- 使わないなら NET_ADMIN を外す
- 対象だけに届く専用ネットワークを割り当てる
PentAGI は、AI が組み立てたコマンドを実際に実行する道具です。だからこそ、AI が誤った操作をしたときや、診断対象の応答に仕込まれた指示(プロンプトインジェクション)に乗せられたときに、どこまで届くか(影響範囲)を先に決めておく必要があります。設定例と Compose ファイルを読むと、既定のままでは次の4点が気になります。
- 本体がホストの Docker を操作できる:Compose ファイルは本体のコンテナにホストの
/var/run/docker.sockをマウントし、rootで動かします。ワーカーを起動するためですが、本体が乗っ取られればホストの Docker を自由に操作できます。README も本番では生のソケットを勧めず、TLS で守った別のデーモンを使う構成を案内しています。 - 隔離の起動時テストがオフ:
DOCKER_INSIDE_POLICY_TESTS=falseが既定です。オンにすると、起動時にワーカーを1つ立てて、本体と別のデーモンか、ホストへの脱出を拒むかを確かめ、失敗すればサンドボックスを止めます。オフのままだと、隔離は一度も測られていない、とログが警告するだけです。 - NET_ADMIN が有効:コード上の既定は無効ですが、設定例が
DOCKER_NET_ADMIN=trueにしています。ワーカーのコンテナがネットワーク設定を変えられる権限です。使わないなら外します。 - 専用ネットワークの指定が空:
DOCKER_NETWORK=が空だと、ワーカーは Docker の通常のネットワークで動き、対象以外にも届きます。
ワーカー自体は、すべての権限(capability)を落としてから必要なものだけを足す作りで、SYS_ADMIN のような危ない権限は足さないとコードの注記にあります。また設定例は、ワーカーに Docker ソケットを渡す DOCKER_INSIDE を既定で無効にし、「プロンプトインジェクションでサンドボックスを抜けてホストに届く恐れがある(issue #337)」と注意書きを付けています。気をつけるべきなのは、ワーカーよりも本体とネットワークの側です。
自分の設定を確認する
自分の .env で、上の4点がどうなっているかを見ます。PentAGI を入れたディレクトリで実行します。
grep -nE '^(DOCKER_NETWORK|DOCKER_NET_ADMIN|DOCKER_INSIDE|DOCKER_SOCKET|DOCKER_INSIDE_POLICY_TESTS)=' .env
設定例のままなら、DOCKER_NET_ADMIN=true、DOCKER_SOCKET=/var/run/docker.sock、DOCKER_INSIDE_POLICY_TESTS=false、DOCKER_NETWORK=(空)と出ます(設定例で確認)。このコマンドが見るのは設定ファイルの値だけで、実際にコンテナがどのネットワークに繋がっているかは、このコマンドだけでは判断できません。動かしたあとは docker inspect で、ワーカーのネットワークとマウントを確かめてください。
範囲の制限は、依頼文ではなく外側で
コードを確かめた範囲では、診断対象を機械的に制限する仕組みは見つかりませんでした。README の例は、依頼文に「与えた対象の範囲内にとどまる」と書く方法です。AI への指示は守られる保証がないので、範囲外に出てはいけない環境では、ワーカーのネットワークを対象にだけ届くように分けるのが確実です。
PentAGI はどんな人に向くか
| 向く | 向かない |
|---|---|
| 自分の検証環境や CTF・演習の対象を、AI にまとめて回させたい | 本番の社内網から、いきなり外部の対象に向けたい |
| 画面で経過を見ながら、途中で指示を足したい | 範囲の厳密な制御を道具に任せたい |
| LLM 事業者に診断データを送ってよい、またはローカル LLM を用意できる | 診断データを外部に出せないが、ローカル LLM も用意できない |
ソースコードを読んでから攻める white-box 型が欲しいなら Shannonとは|ソースコードを読んでから攻撃するwhite-box設計のAIペンテスターを実測で解説 を、見つけた脆弱性を実際に攻めて裏を取る型なら Strixとは|AIが実際に攻めてPoCで裏取りするOSSペンテスターを実測で解説 を比べてください。どの道具でも、診断してよいのは自分の資産か、書面で許可を得た対象だけです。
参照ソース
- vxcontrol/pentagi(GitHub) — README・LICENSE・docker-compose.yml・.env.example・backend/pkg/docker(HEAD 2026-10-23、2026-11-09 確認)
- PentAGI 公式サイト





