Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
security-harness — AIコーディングエージェント向けのマルチエージェント静的アプリケーションセキュリティレビューハーネス:コードベースをマッピングし、脆弱性クラスを探索し、検出結果を連鎖・検証して、SARIF、JSON、PDFにレポートします。 | Kitploit
ツール/GitHubGitHub/dmdhrumilmistry/security-harness
静的分析脆弱性スキャナー静的コード分析 (SAST)脆弱性分析コード分析セキュリティ仮想化ウェブセキュリティペネトレーションテストDevSecOpsシークレット検出サプライチェーンセキュリティAIセキュリティ
22991日前Kitploit レビュー済み
GitHubdmdhrumilmistry/security-harness

security-harness

AIコーディングエージェント向けのマルチエージェント静的アプリケーションセキュリティレビューハーネス:コードベースをマッピングし、脆弱性クラスを探索し、検出結果を連鎖・検証して、SARIF、JSON、PDFにレポートします。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Security Harness

Claude Code(および将来的には他のAIエージェント)向けのマルチエージェントアプリケーションセキュリティレビューハーネス。1つの ルータースキルが、コードベースをマッピングし、クラスごとのナレッジベースで脆弱性をハンティングし、検出結果をチェーンしてエスカレーションし、実際の 影響を検証し、README / JSON / SARIF / doc / PDF にレポートする、完全なオフェンシブセキュリティパイプラインへディスパッチします。

スコープ: このハーネスは、あなたが所有する、またはテストを許可されているコードに対して静的分析(ソースレビュー、データフロートレース、PoC/ペイロード 構築)を実行します。稼働中のサードパーティシステムを攻撃するものではありません。

含まれるもの```

security-harness/ # a plugin marketplace └── plugins/security-harness/ ├── skills/ │ ├── sh-router # single entry point - routes any appsec request │ ├── sh-security-review # the pipeline orchestrator (Stages 0-5) │ └── sh-kb-* (15) # per-vuln-class knowledge bases ├── agents/ │ ├── sh-recon # map: Graft graph + stack/SBOM/CVE + attack surface │ ├── sh-hunter # find: source→sink hunting, one per class (parallel) │ ├── sh-chainer # escalate: combine findings into attack chains │ ├── sh-verifier # confirm: offensive + seceng + dev verification + PoC │ └── sh-reporter # deliver: README/JSON/SARIF/HTML/PDF/doc └── references/ # shared contracts (finding schema, SARIF map, state files, rubrics)

root@kitploit:~
### 対象となる脆弱性クラス(`sh-kb-*` スキル)

access-control(IDOR/BOLA/priv-esc) · sqli · xss · ssrf · injection(cmd/code/SSTI/LDAP) · auth(session/JWT)
· deserialization · path-traversal(LFI/RFI) · secrets · csrf · xxe · open-redirect · crypto · race-conditions
· file-upload。依存関係の CVE/SBOM は偵察ステージで処理されます。

## インストール

このハーネスは複数のエージェント向けに提供されています。完全なパッケージングの詳細とリリース
チェックリストは [`docs/DISTRIBUTION.md`](https://github.com/dmdhrumilmistry/security-harness/blob/main/docs/DISTRIBUTION.md) にあります。

**Claude Code** - このリポジトリをプラグインマーケットプレイスとして追加し、プラグインをインストールします:```
/plugin marketplace add dmdhrumilmistry/security-harness
/plugin install security-harness

/plugin marketplace add は次のいずれかを受け付けます: GitHub の owner/repo(上記のとおり)、完全な git URL (https://github.com/dmdhrumilmistry/security-harness.git)、またはクローンのローカルパス (例: チェックアウト先のディレクトリから /plugin marketplace add ./security-harness)。 その後 /plugin install security-harness を実行し、プロンプトが表示されたらリロードします。

Gemini CLI - ネイティブ拡張機能で、マニフェストはリポジトリのルートにあります:```bash gemini extensions install https://github.com/dmdhrumilmistry/security-harness

root@kitploit:~
**[opencode](https://opencode.ai)、Codex、または任意の [agentskills.io](https://agentskills.io) エージェント** - スキルをディスカバリディレクトリにコピーします。Codex はさらに `AGENTS.md` を自動的に読み取ります:```bash
git clone https://github.com/dmdhrumilmistry/security-harness
cd security-harness
python3 scripts/sync-agent-skills.py --install agents     # ~/.agents/skills
python3 scripts/sync-agent-skills.py --install opencode   # ~/.config/opencode/skills

Graft はパイプラインによって自動的にインストールおよびセットアップされます。 Stage 0 は、Graft が存在しない場合に npm install -g @nanonets/graft を実行し(Node/npm が必要)、その後 graft init <target> --no-agents --no-global を実行して、対象リポジトリ用の Graft MCP サーバーと freshness フックを登録します。グラフ自体(<target>/graft/、 自動的に gitignore される)は偵察中に構築されます。手動で事前インストールするには:npm install -g @nanonets/graft。Graft の 構造ビルドは無料で API キーは不要です。オプションの --deep LLM パスは、設定されている場合に GRAFT_API_KEY / GRAFT_PROVIDER / GRAFT_MODEL を使用します。

その他のツールも、存在しない場合には Stage 0 によって自動インストールされます(マシン上にある任意のパッケージマネージャー経由 - winget/choco/scoop、brew、apt、npm/pip/go - 詳細は references/tooling-setup.md を参照)。インストールは 通知され、昇格不要の方法が優先され、実行をブロックすることは決してありません。インストールできないものは単に 利用不可としてマークされ、パイプラインはフォールバックします。Stage 0 は、欠落している機能グループを埋めるものだけをインストールします:

  • SBOM: syft · CVE: grype (推奨)、trivy、または osv-scanner のいずれか
  • レポート: wkhtmltopdf または pandoc(PDF/DOCX 用)。それ以外の場合は report.html(またはヘッドレス Chrome の PDF)が得られます。

これらはすべてオプションです - 何もインストールされない場合、パイプラインはネイティブ検索 + マニフェスト解析に適切にフォールバックします。

使用方法

自然言語のリクエストでルーターを呼び出します:``` /sh-router full security review of ./api /sh-router find SQLi and IDOR in src/ /sh-router just map this codebase # recon only

root@kitploit:~
またはパイプラインを直接呼び出します:```
/sh-security-review . classes:sqli,access-control,ssrf depth:deep
/sh-security-review . stage:report       # regenerate reports for the latest run

モデルとコストの制御

各ステージは、その認知負荷に合わせたモデルで実行されるため、トークンは発見品質が実際に依存する部分に費やされ、機械的な作業では節約されます。これはデフォルトです - 引数は不要です。

ステージデフォルトモデル
reconsonnet
hunt(クラスごと)パターンクラス(secrets、crypto、open-redirect、csrf)には haiku · source→sink トレーシング(sqli、xss、ssrf、injection、path-traversal、xxe、file-upload、auth)には sonnet · 深いロジッククラス(access-control、race-conditions、deserialization)には opus
chainopus
verifyopus(精度のゲート - 強力に維持)
reporthaiku

models: 引数で上書きできます(これもルーターを通過します):``` /sh-security-review . # default tiered map above /sh-security-review . models:max # every stage + hunter on opus (max quality, max cost) /sh-security-review . models:cheap # aggressive downshift (trades some verify precision) /sh-security-review . models:verify=opus,hunt=sonnet # per-stage overrides /sh-security-review . models:report=sonnet,hunt.pattern=sonnet # per-hunter-tier override

root@kitploit:~
ステージ: `setup, recon, hunt, chain, verify, report`。モデル: `opus, sonnet, haiku, inherit`。`hunt` では、
モデルを単独で指定すると全ハンターがそのモデルに統一され、`hunt.pattern` / `hunt.trace` / `hunt.logic` は特定の階層を対象とします。
その他のトークン節約機能は組み込みです。recon は実際の攻撃対象領域を持つクラスに対してのみハンターを起動し、ハンターは
ファイル全体を読む代わりに Graft グラフへ問い合わせ、`findings.json`/SARIF はモデルではなく
決定論的スクリプトによって生成されます。

### 出力

すべては `<target>/.security-harness/<run-id>/` 配下に出力されます:

- `recon.md`、`codebase-map.json` - マップ(スタック、SBOM、CVE、攻撃対象領域)。
- `findings.jsonl` → `chains.md` → `verified.jsonl` - 作業状態(`references/state-files.md` を参照)。
- `reports/` - `README.md`、`findings.json`、`results.sarif`、`report.html`、`report.pdf`(+ `report.docx`)。

公開される各所見には、ペイロード、PoC、検証判定、CWE/OWASP ID、CVSS、および
コードレベルの緩和策が含まれます。

## プルリクエストレビュー

`sh-pr-review` はコードベース全体ではなく単一のプルリクエストをレビューし、
結果を **PR 自体に** インラインコメントとして投稿し、ブランチ保護で強制できる
`security/pr-review` コミットステータスを設定します。

**読み取り可能な任意の PR に対して、自分のマシンから実行できます。** プラグインをインストールして、次のように尋ねてください:```
review https://github.com/acme/api/pull/128
review PR 42
security review this PR

PR リンクを貼り付けると、そのリポジトリのその PR をレビューし、まず一時ディレクトリにクローンします。ハンターはパッチだけでなくファイルも読むからです。作業中のリポジトリには何も書き込まれません。

裸の番号を渡すと、現在いるリポジトリ、つまり git remote が指すリポジトリに対して解決されます。何も渡さなければ、現在のブランチのオープン PR を対象にします。

Phase 7 は所見と判定を出力し、何かを投稿する前に確認を求めます - 辞退は正常な結果であり、ペイロードは後で投稿できるようにディスク上に残ります。

分析に時間を費やす前に、対象リポジトリに実際に書き込めるかどうかを確認するので、他人のプロジェクトをレビューする場合は、10 分経ってから気づくのではなく、投稿が 403 になることを最初に知らせてくれます。

これをノイズではなくマージゲートとして使えるようにする 3 つの特性があります:

  • PR が責任を負うものだけが失敗させる。 すべての所見は introduced、aggravated、pre_existing のいずれかの pr_impact を持ちます。最初の 2 つはブロックし、pre_existing は報告されるだけで決してブロックしません。作者が書いていないコードでマージをブロックすることは、必須チェックが削除される原因になるため、ハンターが aggravated と pre_existing の間で迷った場合は pre_existing を選ばなければなりません。
  • 深さはリスクに従う。 トリアージは最初に、サブエージェントなしでオーケストレーター内で実行されます。変更されたパスと追加行のシンクトークンを、sh-kb-* ベースが使うのと同じクラススラッグにマッピングし、その後ティアを選択します。Tier 0(セキュリティに関連する変更なし)は何も起動せず、それでもステータスを設定します。Tier 3 は完全なパイプラインを実行します。
  • 再プッシュはスパムにならない。 各コメントは行番号なしで計算された隠しフィンガープリントを持ち、再レビューでは新しく追加されたものだけが追加され、修正されたものは「Resolved since the last review」としてリストされます。
判定ステータス条件
failfailure--fail-on(デフォルト medium)以上で、信頼度 >= 80 の introduced または aggravated の所見
warnsuccessintroduced または aggravated がなく、pre-existing の所見が報告された
passsuccess所見なし、またはトリアージが Tier 0 で停止した
errorerrorレビューを完了できなかった

warn が意図的に success を報告するのは、マージをブロックする警告は余計な手順を伴う失敗であり、チームはチェックを削除することで対応するからです。error は failure と区別して保たれ、壊れた実行が見つけられなかった脆弱性のように見えることは決してありません。

レビューイベントは常に COMMENT であり、REQUEST_CHANGES や APPROVE になることはありません。コミットステータスが強制メカニズムであり、ブランチ保護が読み取るのはこれです。

スコープ: このスキルはプルリクエストとコミットステータスに書き込み、それ以外のどこにも書き込みません。イシューを開かず、外部トラッカーに何も作成しません。

再レビューはインクリメンタル

PR はプッシュごとに 1 回レビューされるため、2 回目のレビューは 1 回目より安価でなければ、人々がオフにするツールになってしまいます。

重複排除は投稿の前ではなく、消費の前に起こります。 PR にすでにあるフィンガープリントは Phase 1 で読み取られ、ハンターと検証者に渡されます。最後に重複を見つけるということは、パイプラインで最も高価なモデルが、PR にずっと書かれていた結論を再確認してしまったことを意味します。これにはキャッシュは不要です。状態は PR 内に存在するため、コールドマシンでも CI でも機能します。

ローカルキャッシュが残りをインクリメンタルにします。 sh-review-cache は各実行のファイルハッシュ、所見、判定を OS のキャッシュディレクトリの下に保存します(クロスリポジトリレビューは削除される一時クローンで実行されるため、リポジトリ内には決して保存しません)。次のレビューは、内容が実際に変更されたファイルのみを再ハントし、変更されていない所見の判定を再利用し、対象とするものが何も移動していなければ偵察マップを再利用します。

ベースブランチのマージはコストゼロです。 main を PR ブランチにマージすると、ヘッド SHA が変わり、作者が書いたものは何も変わりませんが、コミットステータスは SHA に固定されているため、必須チェックは新しいヘッドから静かに消えます。PR 自身のファイルがバイト単位で同一であり、かつ ベースの差分が所見の依存するものに何も触れていない場合、以前の判定が新しい SHA に再スタンプされ、エージェントは一切起動されません。この最後の条件がこれを安全にするものです。サニタイザーを削除するベースマージは、すべての PR ファイルを変更しないまま、安全な行を悪用可能な行に変えてしまいます。

無効化は意図的に保守的です。セキュリティツールの古いエントリは、それを遅くするのではなく、間違ったものにするからです。キャッシュキーはすべての sh-kb-* ナレッジベースをハッシュするため、KB の更新はすべてのキャッシュされた所見を無効化します - キャッシュされた「クリーン」が、その更新が捕まえるために書かれた所見を抑制しては決してなりません。モデルの同一性、スキルバージョン、ファイル内容、および 7 日間の TTL もすべて無効化し、指定されていないモデルはミスとして扱われます。

--no-cache はこれを無効化し、--refresh-cache は再ベースライン化し、run.md は各フェーズごとに何が起動され、再利用され、スキップされたかを記録するので、静かにヒットしなくなるキャッシュは想定ではなく可視化されます。

投稿、および何がどこに書かれるか

レビューとコミットステータスはデフォルトで投稿されます。 計算されたが配信されなかったレビューは誰の役にも立ちませんでした。--confirm は投稿前のプロンプトを復元し、--dry-run は何も送信せず、--no-status はレビューを投稿しますがコミットステータスはそのままにします。

投稿は手作りされた API 呼び出しではなく scripts/sh-pr-post.py を経由します。これは必須の末尾を伴う多段階の操作だからです: レビュー、次にステータス、次にレシート、422 は行番号をずらすのではなくコメントを移動することで回復されます。このスクリプトはステータスを pending のまま終了することは決してありません - レビューを投稿できない場合でも error を設定し、PR を非難するのではなくツールが失敗したことを示します。

インラインコメントは、信頼度 >= 80 のmedium 以上の所見のために確保されています。低重大度の所見は折りたたまれた本文セクションに入るため、低優先度の所見がインラインコメントゼロで現れるのはポリシーが機能しているのであり、失敗ではありません。

ローカル実行メトリクス

すべての実行はそのコストを記録するので、「キャッシュが機能している」と「レビューが遅くなった」は意見の問題ではなくなります。```bash python3 /scripts/sh-metrics.py path # where records live python3 /scripts/sh-metrics.py report # aggregate, by model python3 /scripts/sh-metrics.py purge --older-than-days 30

root@kitploit:~
2つの追記専用JSONLファイル - `runs.jsonl`(リポジトリ、PR、ティア、判定、合計、渡したフラグ)と `events.jsonl`(フェーズまたはエージェントごとに1行: モデル、トークン、所要時間、結果、キャッシュから再利用されたかどうか)。JSONLなので、クラッシュした実行でもクラッシュ前の有効な行が残ります。

| プラットフォーム | メトリクス | キャッシュ |
|---|---|---|
| **Linux / BSD** | `$XDG_DATA_HOME/security-harness/metrics`<br>デフォルト `~/.local/share/security-harness/metrics` | `$XDG_CACHE_HOME/security-harness`<br>デフォルト `~/.cache/security-harness` |
| macOS | `~/Library/Application Support/security-harness/metrics` | `~/Library/Caches/security-harness` |
| Windows | `%LOCALAPPDATA%\security-harness\metrics` | `%LOCALAPPDATA%\security-harness\cache` |

LinuxはXDG Base Directory仕様に従うため、`XDG_DATA_HOME` と `XDG_CACHE_HOME` が設定されていればどちらもそれを尊重し、設定されていなければ `~/.local/share` と `~/.cache` にフォールバックします。どちらも `SH_METRICS_DIR` と `SH_REVIEW_CACHE_DIR` で直接上書きできます。

**`python` と `python3` について:** ほとんどのLinuxディストリビューションは `python3` を同梱しており、`python` はまったく存在しません。そのため、ここでの例では `python3` を使用しています。同梱のスクリプトには `#!/usr/bin/env python3` のシバンがあり、実行可能なので、`./scripts/sh-metrics.py report` はLinuxとmacOSで直接動作します。スキルは実行ごとに一度 `PY="$(command -v python3 || command -v python)"` を解決し、WindowsのGit Bashを含む3つのプラットフォームすべてをカバーします。

**完全にローカル。** どちらのスクリプトにもネットワークコードやレポート送信エンドポイントは含まれていません。トークンらしきものは書き込まれる前に伏せられます。ローカルファイルはissueに貼り付けられるからです。

### 無人での実行

任意であり、スキルの使用とは別の判断です。まずしばらく自分のPRで手動実行して、チームの前で語られる前に、自分のコードベースについて何を言うのかを知っておきましょう。

準備ができたら、[`references/pr-review-mapping.md`](https://github.com/dmdhrumilmistry/security-harness/blob/main/plugins/security-harness/references/pr-review-mapping.md) の「Enforcing the check on a repository」に、**あなたの**リポジトリ向けのコピー&ペースト可能なワークフローと、死んだジョブが必須チェックを `pending` のまま残すのを防ぐフェイルセーフがあります。

しきい値はデフォルトの `medium` のままです。既存の検出結果がマージをブロックすることは決してないので、スキャンされていないコードベースが初日に赤一色になることはありません - PRが実際に導入または悪化させたものだけが失敗させられます。

## 仕組み

1. **セットアップ** - 利用可能なツールを調査し、スコープを定義し、実行ディレクトリを作成します。
2. **偵察** (`sh-recon`) - Graftグラフを構築し、スタック/バージョンを検出し、SBOM + CVEを取得し、エントリポイント、信頼境界、危険なシンクを列挙します。
3. **ハント** (`sh-hunter` ×N、並列) - 関連するクラスごとに1つのハンターがその `sh-kb-*` ナレッジベースをロードし、攻撃者入力をソースからシンクまで追跡し、候補を記録します。共有の**試行台帳**が、エージェント同士が互いのプローブを繰り返すのを防ぎます。
4. **チェーン** (`sh-chainer`) - 検出結果をより高い深刻度の攻撃パスに構成します。
5. **検証** (`sh-verifier`) - まず反証し、次に証拠から悪用可能性を確認し、PoCを構築し、CVSSを割り当て、誤検出を削減します。
6. **レポート** (`sh-reporter`) - 成果物を生成します。

サブエージェントはファイル以外に何も共有しません。その契約は `plugins/security-harness/references/state-files.md` にあります。

## 拡張

共有テンプレート(いつハントするか · ソースとシンク · 検出レシピ · ペイロード/PoC · 誤検出フィルタ · CWE/OWASP · チェーンのヒント · 緩和策)に従って `skills/sh-kb-<class>/SKILL.md` を作成することで、新しい脆弱性クラスを追加できます。次に、そのスラッグを `references/finding-schema.json` の `class` enumと、`skills/sh-router/SKILL.md` のルーティングテーブルに追加します。

## ナレッジベースの自動更新

スケジュールされたGitHub Action(`.github/workflows/update-knowledge-base.yml`)が `sh-kb-*` ナレッジベースを最新に保ちます。**隔日で**(および手動の `workflow_dispatch` で)、エージェントを実行して、新しく信頼できる公開セキュリティ研究 - OWASP、PortSwigger Research、CWE/CAPEC、NIST、MDN、厳選されたGitHubリポジトリ、公開HackerOne開示 - を、小規模で出典の明確な改善に蒸留します。次に**2番目の敵対的レビューエージェント**が結果のdiffをスキャンして悪意のある/注入されたコンテンツを探し、PRは**そのレビュー担当が承認した場合にのみ自動マージされます**。

### 2つのワークフロー、3つのジョブ

PR作成はレビューとマージから意図的に分離されており、diffを書くものがそれを出荷することを決めるものには決してなりません。

**ステージ1 - [`update-knowledge-base.yml`](https://github.com/dmdhrumilmistry/security-harness/blob/main/.github/workflows/update-knowledge-base.yml)**
(スケジュールまたは手動)。1つのジョブ、`create-pr`:

1. **生成** - エージェントが許可リストのソースからKBを編集します。コミットもプッシュもなし。
2. **PRを開く** - 決定論的なステップが `automated/kb-update` ブランチでPRを開き(または更新し)、`awaiting-review` のラベルを付けます。
3. **引き渡し** - PR作成が成功すると、PR番号を付けてステージ2をディスパッチします。

**ステージ2 - [`kb-review-and-merge.yml`](https://github.com/dmdhrumilmistry/security-harness/blob/main/.github/workflows/kb-review-and-merge.yml)**
(ステージ1からディスパッチされるか、任意の自動PRに対して手動で実行)。2つのジョブ:

- **`review`** - *別の*エージェント実行がdiffを**敵対的に**検査し、プロンプトインジェクションの痕跡、スコープ外の編集、シークレット/持ち出し、PII、武器化されたエクスプロイト、許可リスト外のソース、またはハウススタイル違反を探します。**ウェブもシェルもなく**、**フェイルクローズド**です: 疑わしいもの、少しでも不確実なもの、または判定ファイルの欠落 → REJECT。判定はPRコメントとして投稿され、ラベルを制御します。
- **`merge`** - `APPROVE` の場合に**のみ**実行され、PRをマージします。`REJECT` はそれをスキップし、`blocked` ジョブが理由を報告します。

> **`pull_request` トリガーではなくディスパッチを使う理由:** `GITHUB_TOKEN` によって開かれたPRは `pull_request` ワークフローをトリガーしません。`workflow_dispatch` はその再帰ガードから免除される2つのイベントのうちの1つなので、ステージ1は確実に引き渡すことができます。

**自動マージとは、承認するエージェントが `main` にコードを着地させることを意味します。** それに対する制御:

- マージジョブは、クローズされたPR、フォークからのPR、またはヘッドブランチが `automated/*` の外にあるPR(ワークフロー内の `ALLOWED_HEAD_PREFIX`)を拒否します。
- GitHub自身の自動マージを優先するため、**ブランチ保護は依然として適用されます**。`main` に承認レビューを要求するルールがある場合、PRはキューに入り、マージされる代わりに人間を待ちます。自動マージがオフのリポジトリでのみ、即時マージにフォールバックします。
- 手動実行で `auto_merge` 入力を `false` に設定すると、マージせずにレビューできます。
- レビュー担当のプロンプトは、その判定が助言ではなく拘束力を持つことをエージェントに伝えます。

> ワークフローがPRを開けるように、リポジトリ設定の**「Allow GitHub Actions to create and approve pull requests」**(Settings → Actions → General → Workflow permissions)が必要です。自動マージにもかかわらず人間をループに入れたい場合は、`main` をプルリクエストと少なくとも1つの承認レビューを要求するブランチ保護ルールで保護してください - 自動マージのパスはそれを尊重します。

### プラグ可能なエージェント

両ステージは [`.github/actions/ai-agent`](https://github.com/dmdhrumilmistry/security-harness/blob/main/.github/actions/ai-agent/action.yml) を通じて実行されます。これは、設定した任意のエージェントにディスパッチする複合アクションです。Claude Code、OpenAI Codex、Gemini CLI、およびその他すべてのためのエスケープハッチ:

| `agent` | 実行内容 | 認証情報 |
|---|---|---|
| `claude`(デフォルト) | `anthropics/claude-code-action@v1` | `CLAUDE_CODE_OAUTH_TOKEN` または `ANTHROPIC_API_KEY` |
| `codex` | `codex exec --full-auto` | `OPENAI_API_KEY` |
| `gemini` | `gemini --yolo --prompt` | `GEMINI_API_KEY` |
| `custom` | あなたの `KB_AGENT_INSTALL` / `KB_AGENT_COMMAND` | それが何であれ必要なもの |

実行ごとに `workflow_dispatch` 入力から選択するか、リポジトリ変数を設定してデフォルトを変更します: ジェネレータには `KB_AGENT` と `KB_MODEL`、レビュー担当には `KB_REVIEW_AGENT` と `KB_REVIEW_MODEL`。ジェネレータとレビュー担当を**異なるエージェント**で実行することは、意味のあるハードニングのステップです: あるモデル向けに調整されたインジェクションが、2番目の独立したモデルに着地する可能性は低くなります。

`agent: custom` の場合、`KB_AGENT_COMMAND` をシェルコマンドに設定します。プロンプトは `$AGENT_PROMPT_FILE` で指定されたファイルに書き込まれ、`$AGENT_MODEL` がモデル入力を運びます。

ジェネレータがオープンウェブを読むため、プロンプトインジェクション対策:

- **ドメイン許可リスト。** `WebFetch` は `.github/kb-update/trusted-sources.md` の信頼できるドメインに制限されています(ワークフローの `--allowedTools` にも反映)。`WebSearch` はURLを発見できますが、実際にフェッチできるのは許可リストのドメインのみです。
- **コンテンツはデータであり、コマンドではない。** タスクプロンプト(`.github/kb-update/prompt.md`)は、フェッチされたすべてのバイトを信頼できない参照資料として扱い、ページに埋め込まれた指示を無視するようClaudeに指示します - HackerOneレポート本文(ユーザー生成)は最高リスク層としてフラグが立てられます。
- **ジェネレータにシェルもプッシュもなし; レビュー担当がゲート。** ジェネレータはファイルを編集することしかできません。独立したレビュー担当(`.github/kb-update/review-prompt.md`)が、フェッチされたコンテンツと `main` の間に立つものです - その明示的な承認なしには何もマージされません。
- **ジェネレータとレビュー担当に異なるエージェント。** 任意であり、ゲートの最強バージョンです: `KB_AGENT` と `KB_REVIEW_AGENT` を2つの異なるエンジンに設定します。

**セットアップ:**

- 使用するエージェントの認証情報を追加します(Settings → Secrets and variables → Actions): **`CLAUDE_CODE_OAUTH_TOKEN`**(デフォルト)、`ANTHROPIC_API_KEY`、`OPENAI_API_KEY`、または `GEMINI_API_KEY`。OAuthトークンは、従量制のAPIキーではなく、**あなたのClaudeサブスクリプションの使用制限**に対して認証します - ローカルで `claude setup-token` で生成し(アクティブなClaude Pro/Maxサブスクリプションが必要)、結果を貼り付けます。
- ワークフローがPRを開けるように、**「Allow GitHub Actions to create and approve pull requests」**(Settings → Actions → General → Workflow permissions)を有効にします。推奨: `main` にPRと承認レビューを要求するブランチ保護ルールを追加し、自動マージがオンでも人間なしには自動変更が着地できないようにします。
- 許可するソースを変更するには、`trusted-sources.md` の許可リスト**と**ワークフロー内の対応する `WebFetch(domain:...)` エントリを編集します - 両方を同期させておいてください。

各実行は、行ったことを `.github/kb-update/last-run-summary.md` に記録します。

## ロードマップ

- ~~Codex / Cursorミラーの配線。~~
  ✅ 出荷済み: `AGENTS.md`、Gemini CLI拡張、および `.agents/skills` と opencode 用の `scripts/sync-agent-skills.py`。[`docs/DISTRIBUTION.md`](https://github.com/dmdhrumilmistry/security-harness/blob/main/docs/DISTRIBUTION.md) を参照。
- ~~厳選された参照の上に、ナレッジベースのオプションのライブフェッチ拡張(PortSwigger/OWASP/CWE)。~~
  ✅ 上記のスケジュールされたナレッジベース更新プログラムとして出荷済み。
- `needs-runtime` 検出結果の実行時確認のためのオプションのDASTブリッジ。

## ライセンス

MIT
ツールをダウンロード