Claude Code には、リポジトリ全体や差分の脆弱性を調べる Claude Security プラグインがあります。複数の Claude エージェントが構成を把握し、脅威モデルを組み立て、脆弱性を探し、報告に書く前に各指摘を別のエージェントが独立して検証する、という流れでスキャンが進みます。見つかった指摘は、そのままパッチ(差分ファイル)にして、自分でレビューしてから適用できます。
このページでは、インストールからスキャンの実行、レポートの読み方、パッチの作り方までを順に説明します。適用は必ず自分で行う設計なので、勝手にコードが書き換わることはありません。
このページは、公式ドキュメントの Scan your codebase for vulnerabilities と、Claude Academy の Getting started with Claude Security をもとにした非公式の日本語解説です。最新の仕様は必ず公式をご確認ください。
前提条件とインストール
プラグインを動かすには、次の4つが必要です。
- 有料プラン。スキャンは複数のエージェントを束ねる「ダイナミックワークフロー」を使うためです。Pro プランの場合は
/configの「Dynamic workflows」の行から有効にします。 - Python 3.9 以降が
python3という名前でPATHから呼べること。python3 --versionで確認できます。プラグインの道具は Python の標準ライブラリしか使わないので、追加のインストールは要りません。 - Linux・macOS・Windows のいずれか。
- Git。差分のスキャンと、指摘をパッチにする処理で使います。この2つは Git 以外のバージョン管理には対応していません。リポジトリ全体のスキャンだけなら、バージョン管理されていないディレクトリでも動きます。
インストールは Claude Code のセッションの中から、公式マーケットプレイスに対して行います。
/plugin install claude-security@claude-plugins-official
コマンドを打つとプラグインの詳細が開くので、そこでインストール範囲(スコープ)を選ぶとインストールが始まります。
失敗したときは、表示されたメッセージで対処が変わります。Marketplace "claude-plugins-official" not found と出た場合は、先に /plugin marketplace add anthropics/claude-plugins-official でマーケットプレイスを追加してから、もう一度インストールします。マーケットプレイスにプラグインが見つからないと出た場合は、プラグイン名の打ち間違いを確認してください。
インストール後のまとめに Run /reload-plugins to activate. と出ていたら、そのコマンドで今のセッションに反映させます。削除したいときは /plugin メニューからアンインストールするか、ターミナルで claude plugin uninstall claude-security を実行します。
スキャンを実行する
プラグインが増やすコマンドは /claude-security の1つだけです。実行するとメニューが開き、「コードベースをスキャン」「変更点をスキャン」「パッチを提案」の3つの仕事から選べます。基本の流れは次のとおりです。
/claude-securityを実行して Scan codebase を選びます。- スキャンする範囲を選びます。プラグインは先にリポジトリを読み、リポジトリ全体か、絞った範囲かを、それぞれのファイル数と相対的なコストつきで示します。判断が付かなければ「I don't know」と答えると、リポジトリの規模に合わせた既定の範囲を選んでくれます。
- 実行を確認します。スキャンは時間がかかることがあり、トークンもかなり使い、終わるまで Claude Code を開いたままにしておく必要があります。確認するまで何も始まりません。
- 進行中は各段階が始まるたびに報告が出ます。詳しい様子は
/workflowsで見られます。 - 結果はリポジトリの中の、日時が入ったディレクトリに書き出されます。
メニューを開かずに、/claude-security scan my branch のようにコマンドの引数で直接頼むこともできますし、「scan commit abc1234」のような普通の言い方でも通じます。スキャンのエージェントが1手ごとに許可を求めずに進めるので、auto モードと相性がよいとされています。
変更点だけをスキャンする
ブランチに、分岐元には無いコミットがあるとき、メニューはその差分だけをスキャンする選択肢を出します。マージ前にブランチを点検したいときに使えます。開いているプルリクエストや、単一のコミットを指定することもできます。
対象になるのはコミット済みの変更だけです。作業中の編集を含めたいときは、先にコミットするかスタッシュするか、あるいは作業ツリーを読むリポジトリ全体のスキャンを使ってください。差分のスキャンには Git リポジトリが必要ですが、全体スキャンはバージョン管理されていないディレクトリでも動きます。
大きなリポジトリでは範囲を絞る
大きなリポジトリでは、木全体を一度に見るのではなく、API 層や認証まわりといった絞った範囲を1つずつ選ぶほうが向いています。選んだ範囲に合わせて実行の規模が決まり、レポートのカバー範囲の節に、何を見て何を見ていないかが書かれます。別の範囲はいつでも追加でスキャンできます。
レポートの読み方
スキャンのたびに、リポジトリの中へ CLAUDE-SECURITY-<timestamp>/ という日時つきのディレクトリが作られ、その中に結果が入ります。
CLAUDE-SECURITY-RESULTS.md… 人が読むレポート。指摘ごとにF1のような ID、影響、悪用の筋書き、深刻度、確信度、推奨される対応が載ります。CLAUDE-SECURITY-RESULTS.jsonl… 同じ内容を機械が読める形にしたもの。1行1件の JSON です。CLAUDE-SECURITY-RESULTS.sarif… 同じ内容を SARIF 2.1.0 形式のログにしたもの。GitHub のコードスキャンをはじめ、この標準を読める道具に渡せます。指摘は CWE の分類に紐づけられます。CLAUDE-SECURITY-REVISION-<commit>.json… どのコミットを、どの強度(effort)で、未コミットの変更を含めて見たのか、どこまで検証したのかを記録した刻印です。レポートが「どのコードについてのものか」を必ず特定できるようにするためのものです。バージョン管理の外でスキャンした場合は、コミットの代わりにUNVERSIONEDが入ります。
スキャンがチェックアウトに加える変更は、このディレクトリだけです。ディレクトリは自分用の .gitignore を持っているので、うっかり git add をしてもレポートがコミットに紛れ込みません。監査の記録として履歴に残したい場合は、その .gitignore を消してから普通にコミットします。
読み方で押さえておきたい点が2つあります。1つは、レポートに載る指摘は独立した検証役のエージェントが分析したあとのものだけだということです。そのぶんレポートは短くなり、読む価値のあるものが残ります。もう1つは、スキャンが非決定的だという点です。同じコードを2回スキャンしても、出てくる指摘が違うことがあります。だから定期的に回し、どのレポートがどのコードと設定についてのものかは、刻印のファイルで突き合わせてください。
見つかった問題をパッチにする
修正の流れは、/claude-security のメニューから Suggest patches を選ぶか、「fix finding F3」のように普通の言い方で頼むと始まります。そのあと、レポートのどの指摘に対応するかを選びます。
パッチはコミット済みのコードに対して作られ、レポートが今のコードをまだ正しく説明していることが前提になります。指摘した箇所のコードがすでに変わっている場合、その指摘は注記つきで飛ばされ、古いレポートから当てるのではなく、新しくスキャンし直すことを勧められます。パッチの下書きはリポジトリの作業用の複製の中で作られるので、自分で適用するまで元のファイルは触られません。
納品の前に、各パッチは書いたのとは別のエージェントがレビューします。テストがあるコードならプロジェクトのテストを変更に対して走らせ、差分そのものも読み直して、新しく持ち込まれたものが無いかを見ます。パッチが書き出されるのは、そのレビューが「その1件の指摘に対応している」「新しい脆弱性を持ち込んでいない」「それ以外の挙動は変えていない」の3つすべてを保証できたときだけです。3つを保証できないときは、パッチの代わりに理由を書いた短い注記が返ります。
パッチが自動で当たることはない
適用するかどうかは常に自分の判断です。パッチはレポートの patches/ フォルダに、指摘1件につき F<n>.patch という形で書き出され、隣に変更内容を説明した注記が置かれます。シェルから当てる場合は次のようにします。
git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch
Claude に適用とプルリクエストの作成まで頼むこともできます。パッチを当てる対象のコードにテストが無い場合は、その旨がパッチの注記に書かれるので、レビューがテストなしで行われたことが分かります。パッチは1件ずつ別のプルリクエストで当てるのが勧められています。個別にレビューとテストができるからです。
他のセキュリティ機能との使い分け
Claude Security プラグインは、多層の守りのうち「必要なときに深く掘る層」です。Claude Code には似た役割の機能が複数あるので、公式ドキュメントの整理に沿って並べます。
| いつ | 使うもの | 見る範囲 |
|---|---|---|
| セッション中 | セキュリティガイダンスのプラグイン | Claude が書いているコードのよくある脆弱性を、その場で直す |
| 必要なとき・1回通し | /security-review | いまのブランチに対する1回きりのセキュリティ確認 |
| 必要なとき・深く | Claude Security プラグイン | リポジトリまたは差分の多エージェントスキャン。指摘は独立に検証され、パッチまで作れる |
| プルリクエスト時 | Code Review(Team・Enterprise プラン) | コードベース全体を踏まえた、正しさとセキュリティの多エージェントレビュー |
| マネージド | Claude Security 製品(Enterprise プラン) | 接続したリポジトリを継続的に見るホスト型のスキャン |
| CI | 既存の静的解析・依存関係スキャナ | 言語ごとのルール、サプライチェーンの確認、ポリシーの強制 |
プラグインはセッションの中でローカルに動き、Claude Code で使えるモデルをそのまま使い、1回のスキャンがプランの利用量に計上されます。リポジトリを継続的に監視するマネージドのサービスが要る場合は、Enterprise プランの Claude Security 製品のほうを見てください。逆に、GitLab や Bitbucket にあるリポジトリ、外から接続できないネットワークの中のリポジトリのように、マネージド製品が届かないコードには、プラグインのほうが届きます。
プラグインは既存のセキュリティ道具を置き換えるものではありません。静的解析や依存関係スキャン、コードレビューと並べて使うことが勧められています。プラグインは人間のセキュリティ研究者のようにコードを推論するので、それらの決まった規則による検査を補う位置づけです。
困ったときは
メニューを開くと Python の警告が出る場合は、python3 の 3.9 以降が PATH に無いことが原因です。まったく見つからないときは、Python が入るまでプラグインは動かない旨が出ます。PATH の先頭にある python3 が古いときは、見つかったバージョンが警告に出ます。Python 3 を入れるか、新しい python3 を PATH の先に置いてから、新しいセッションを開き直してください。
Fable 系のモデルでスキャンすると safeguards flagged this message という通知が出ることがあります。Fable のサイバーセキュリティ用の安全分類器が一部の要求に印を付けるためで、Claude Code は印の付いた要求を自動のモデルフォールバックで Opus 系のモデルに回して実行し直します。これは想定どおりの動きで、スキャン自体は問題なく完了するとされています。