メインコンテンツへスキップ
security guidance プラグインは、Claude が作業中に自身のコード変更を一般的な脆弱性についてレビューし、同じセッション内で見つかった問題を修正します。このプラグインは、インジェクション、安全でないデシリアライゼーション、安全でない DOM API などの問題をコードがプルリクエストに到達する前にキャッチし、下流の人間レビュアーが行うセキュリティレビューの量を削減します。 インストール後、プラグインは自動的に実行されます。呼び出すものはなく、覚えておく必要のある個別のコマンドもありません。 このプラグインは、プルリクエストで実行される Code Review のセッション内コンパニオンです。このプラグインは PR に到達するものを削減します。Code Review はそれをキャッチします。プラグインがオンデマンドレビューと CI スキャンとどのように層状になるかについては、これが他のセキュリティツールとどのように適合するか を参照してください。

前提条件

  • Claude Code CLI バージョン 2.1.144 以降
  • PATH 上の Python 3.8 以降。プラグインは python3pythonpy -3 をこの順序で試します
  • 作業するディレクトリ用の git リポジトリ。ターン終了とコミットレビューは git 状態に対して diff を行い、リポジトリ外では無音でスキップします。編集ごとのパターンチェックはどこでも機能します
初回実行時、プラグインは ~/.claude/security/ の下に仮想環境を作成し、Claude Agent SDK をインストールします。これには pip とネットワークアクセスが必要です。そのインストールが失敗した場合、コミットレビューは agentic なものではなく、単一ショットレビューにフォールバックします。Windows では仮想環境ステップはスキップされるため、agentic コミットレビューは claude-agent-sdk が既にインポート可能な場合にのみ実行され、そうでない場合は同じようにフォールバックします。

プラグインをインストールする

Claude Code セッションで、公式 Anthropic マーケットプレイス からインストールします:
/plugin install security-guidance@claude-plugins-official
インストールはスコープを求めます。ユーザースコープを選択して、プラグインをユーザー設定に書き込み、このマシンで開始するすべての新しいローカルセッションで読み込まれるようにします。Claude Code がマーケットプレイスが見つからないと報告した場合、まず /plugin marketplace add anthropics/claude-plugins-official を実行してから、インストールを再試行してください。 次に、現在のセッションで /reload-plugins を使用して有効化します。これはプラグインの変更を再起動なしで適用します:
/reload-plugins

クラウドセッションと共有リポジトリで有効化する

ユーザースコープのプラグインは、Anthropic インフラストラクチャで実行されるため、ウェブ上の Claude Code には引き継がれません。そこで有効化するか、リポジトリをクローンするすべてのユーザーに対して有効化するには、プロジェクトのチェックイン設定で宣言します:
.claude/settings.json
{
  "enabledPlugins": {
    "security-guidance@claude-plugins-official": true
  }
}
管理者は、管理設定enabledPlugins を設定することで、組織全体でプラグインを有効化できます。

プラグインがチェックする内容

プラグインは 3 つのポイントで Claude の作業をレビューし、それぞれ異なる深さです: 各レイヤーは 独自のルールを追加 することで拡張できます。組み込みチェックは個別に削除することはできませんが、各レイヤーは 独立して無効化 できます。

各ファイル編集時

Claude がファイルに書き込むと、プラグインは新しいコンテンツをスキャンして既知のリスキーなパターンを探します。これはモデル呼び出しのないパターンマッチなので、使用コストは追加されません。 パターンカテゴリの例:
  • 動的コード実行:eval(new Functionos.systemchild_process.exec
  • 安全でないデシリアライゼーション:pickle
  • DOM インジェクション:dangerouslySetInnerHTML.innerHTML =document.write
  • ワークフローファイル:.github/workflows/ 下の編集。リポジトリレベルの権限を付与できます
チェックは編集が完了した後に実行され、警告を Claude の次のステップのコンテキストに追加します。各警告はセッションごとにパターンごとにファイルごとに 1 回発火するため、同じファイル内の繰り返しマッチは会話をあふれさせません。 security-patterns.yaml ファイルを使用して、このレイヤーに 独自のパターンを追加 できます。

各ターンの終了時

ターンは Claude が応答する 1 ラウンドです:メッセージを送信し、Claude が作業して返信し、ターンが終了します。各ターンの後、プラグインはターン中に作業ツリーで変更されたすべてのもの(Claude の編集ツール、Bash コマンド、サブエージェントからの変更を含む)の git diff を計算し、セキュリティに焦点を当てた別の Claude レビューに送信します。レビューはバックグラウンドで実行されるため、Claude の返信は遅延しません。レビューが問題を見つけた場合、Claude は結果を使用して再度プロンプトされ、フォローアップとして対処します。 これは文字列マッチでは捕捉できない問題をキャッチします。例えば:
  • 認可バイパス
  • 安全でない直接オブジェクト参照
  • インジェクション
  • サーバー側リクエストフォージェリ
  • 弱い暗号化
セッションで直接、結果と Claude の解決策の両方が表示されます。レビューはターンごとに最大 30 個の変更されたファイルをカバーし、最大 3 回連続で発火してからあなたに戻ります。

Claude が行う各コミットまたはプッシュ時

Claude が Bash ツールを通じて git commit または git push を実行すると、プラグインはバックグラウンドで変更の深い agentic レビューを実行します。このレビューは、呼び出し元、サニタイザー、関連ファイルを含む周囲のコードを読んで、結果が実際のものであるかどうかを判断してから報告します。追加のコンテキストは、分離されたときは危険に見えるが、コードベースでは安全なパターンの偽陽性を低く保ちます。 このレイヤーは、Claude が Bash ツールを通じて行うコミットとプッシュでのみ発火します。独自のシェルから実行するコミット(セッション内の ! シェルエスケープを含む)はレビューされません。コミットとプッシュレビューはローリング 1 時間あたり 20 に制限されています。コミットレビューの結果がターン終了レビューが既に報告したものと重複する場合、Claude は再度プロンプトされないため、クリーンなコミットはこのレイヤーから目に見える出力を生成しません。

レビューの独立性と制限

プラグインは、コードを書いた同じ Claude インスタンスに自分自身を採点するよう求めません。編集ごとのチェックは、モデルが関与しない決定論的な文字列マッチです。ターン終了とコミットレビューは、新しいコンテキストとセキュリティに焦点を当てたプロンプトを持つ別の Claude 呼び出しとして実行されます:レビュアーは diff から開始し、元のアプローチに投資がなく、問題を見つけるだけの指示を受けます。 どのレイヤーも書き込みやコミットをブロックしません。結果は書き込み Claude に指示として到達し、Claude は会話で対処し、レビューモデルは問題を見落とす可能性があります。プラグインを完全なセキュリティソリューションではなく、多層防御の 1 つのレイヤーとして扱ってください。これが他のセキュリティツールとどのように適合するか を参照してください。

独自のルールを追加する

プラグインには 2 つの拡張ポイントがあります:モデルバックアップレビュー用の Markdown ガイダンスファイルと、編集ごとの文字列マッチ用の YAML または JSON パターンファイルです。どちらも加算的です。チェックを追加できますが、これらのファイルから組み込みのものを無効化することはできません。

モデルバックアップレビュー用のガイダンスを追加する

プロジェクトに .claude/claude-security-guidance.md を作成し、脅威モデルとレビューチェックリストを平文で説明します。モデルバックアップレビューは、組み込みの脆弱性チェックリストと一緒に追加のコンテキストとして読み込みます。 以下の例は、ロールゲートされた管理ルートとカスタマーデータロギングポリシーを持つウェブサービス用です:
.claude/claude-security-guidance.md
# このリポジトリのセキュリティガイダンス

- INFO レベル以上で `customer_id` または `account_number` をログに記録しないでください。
- `/admin` 下のすべてのルートは、データベース読み取り前に `require_role("admin")` を呼び出す必要があります。
- `===` の代わりに `crypto.timingSafeEqual` をトークン比較に使用してください。
これらのルールはレビュアーのガイダンスであり、決定論的なガードレールではありません。プラグインは違反を Claude が修正するための結果として表示しますが、書き込みをブロックしたり、すべての違反がキャッチされることを保証しません。ガイダンスは加算的のみです:脆弱性クラスを無視するように言うルールはそれらの結果を抑制しません。ハード実装の場合、プラグインを 編集をブロックするフック または CI チェックと組み合わせてください。

カスタム編集ごとのパターンを追加する

.claude/security-patterns.yaml を作成して、編集ごとのパターンチェック に正規表現またはサブストリングルールを追加します。これらは組み込みパターンと一緒に決定論的な文字列マッチとして実行されます:
.claude/security-patterns.yaml
patterns:
  - rule_name: internal_api_key
    substrings: ["sk_live_", "AKIA"]
    reminder: "ハードコードされた API キープレフィックス。シークレットマネージャーから認証情報を読み込んでください。"
  - rule_name: tenant_unfiltered_query
    regex: "\\.objects\\.all\\(\\)"
    paths: ["**/src/tenants/**"]
    reminder: "マルチテナントコードは org_id でフィルタリングする必要があります。"
フィールドタイプ説明
rule_namestring警告に表示される識別子
reminderstringClaude のコンテキストに追加される警告テキスト、1 KB でキャップ
regexstring編集されたコンテンツに対してマッチされる Python 正規表現
substringslistリテラルサブストリング;これまたは regex を提供してください
pathslistオプションのグロブパターン;ルールはマッチするファイルにのみ適用されます。グロブはフルファイルパスに対してマッチするため、プロジェクト相対パターンの前に **/ を付けてください
exclude_pathslistスキップするオプションのグロブパターン;paths と同じマッチング
プラグインは、同じスキーマで .claude/security-patterns.yml.claude/security-patterns.json も読み込みます。JSON はすべての Python インストールで機能します。YAML フォームは PyYAML をインポート可能にする必要があり、プラグインはそれをインストールしません。プラグインは最大 50 個のカスタムルールを読み込み、壊滅的なバックトラッキングの傾向がある正規表現をスキップします。

ルールファイルの検索場所

プラグインは、プラグインがどのように有効化されたかに関係なく、同じ場所で claude-security-guidance.mdsecurity-patterns.yaml を探します:
スコープパス注記
ユーザー~/.claude/claude-security-guidance.mdマシン上のすべてのプロジェクトに適用されます
プロジェクト.claude/claude-security-guidance.mdリポジトリでチェックインされます
プロジェクトローカル.claude/claude-security-guidance.local.mdGitignored、個人的なオーバーライド用
プラグインは存在するすべての場所を読み込み、ガイダンスファイルの合計キャップ 8 KB で連結します。管理者は、デバイス管理を通じて ~/.claude/ にユーザースコープファイルをプッシュすることで、組織全体のルールを配布できます。同じパスが security-patterns.yaml に適用されます。

使用コスト

編集ごとのパターンチェック はモデル呼び出しを行わず、コストを追加しません。ターン終了コミット レビューはそれぞれ、他の Claude リクエストと同様に 使用 にカウントされる追加のモデル使用を費やします。コミットレビューは agentic であり、コミットごとに複数のモデルターンを取る可能性があり、ローリング 1 時間あたり 20 レビューに制限されています。ターンごとにファイルを変更する 1 つのレビュー呼び出しと、コミットごとに 1 つの深いレビューを期待してください。どちらも上記のキャップの対象です。 両方のモデルバックアップレビューはデフォルトで Claude Opus 4.7 を使用します。SECURITY_REVIEW_MODEL を設定して、ターン終了レビュー用に別のモデルを選択し、SG_AGENTIC_MODEL をコミットレビュー用に設定します。 プラグインはすべてのプランで利用可能です。

無効化またはアンインストール

残りを保持しながら個別のレイヤーをオフにするには、マッチング環境変数を設定します:
変数効果
ENABLE_PATTERN_RULES=0編集ごとのパターンチェック を無効化
ENABLE_STOP_REVIEW=0ターン終了 diff レビュー を無効化
ENABLE_COMMIT_REVIEW=0コミットとプッシュレビュー を無効化
ENABLE_CODE_SECURITY_REVIEW=0すべてのモデルバックアップレビューを一度に無効化
SECURITY_GUIDANCE_DISABLE=1アンインストールせずにプラグイン全体を無効化
ユーザースコープでプラグインを一時停止するには:
/plugin disable security-guidance@claude-plugins-official
ユーザースコープから削除するには:
/plugin uninstall security-guidance@claude-plugins-official
プラグインがプロジェクトの .claude/settings.json を通じて有効化された場合、/plugin から無効化すると、チェックインファイルを編集するのではなく、.claude/settings.local.json にオーバーライドを書き込むため、プラグインはあなたにとってオフのままで、チームメイトは影響を受けません。管理設定 を通じて有効化された場合、管理者のみがそれを無効化できます。

プラグインが Claude Code とどのように統合されるか

プラグインは完全に hooks 上に構築されています。これは Claude のループの特定のポイントで独自のコードを実行するメカニズムです。登録されます:
フックイベント目的
SessionStartプラグインの Python 環境をブートストラップ
UserPromptSubmitターン終了レビューが diff を行う作業ツリーベースラインをキャプチャ
PostToolUse on EditWriteNotebookEdit編集ごとのパターンマッチ
Stopターン終了 diff レビュー、バックグラウンドで実行
PostToolUse on Bashgit commitgit push にフィルタリングコミットとプッシュレビュー、バックグラウンドで実行
独自のフックを構築する場合、プラグインのソース はフックから別のモデル呼び出しを実行し、結果をセッションにフィードバックする実装例です。

これが他のセキュリティツールとどのように適合するか

プラグインは多層防御アプローチの 1 つのレイヤーです。コードがまだエディタにある間に最も早く問題をキャッチしますが、保証ではなく、後の確認を置き換えません。典型的なスタック:
ステージツールカバーするもの
セッション内Security guidance プラグインClaude が書くコードの一般的な脆弱性。同じセッション内で修正
オンデマンド/security-review現在のブランチでの 1 回限りのセキュリティパス。要求時に実行
プルリクエストCode Review、Team および Enterprise プラン完全なコードベースコンテキストを持つマルチエージェント正確性とセキュリティレビュー
CI既存の静的分析と依存関係スキャナー言語固有のルール、サプライチェーンチェック、プラグインが試みないポリシー実装
各後のステージは、前のものが見落とすものをキャッチします。プラグインの価値は、それらに到達するボリュームを削減することであり、それらの必要性を排除することではありません。

トラブルシューティング

プラグインはランタイム診断を ~/.claude/security/log.txt に書き込みます。レビューが表示されない場合は、まずそこを確認してください。 レビューレイヤーが会話にメッセージなしでスキップする一般的な理由:
  • ディレクトリが git リポジトリではない:ターン終了とコミットレビューは git 状態を必要とし、リポジトリ外ではスキップします
  • セッションに Anthropic 認証がない:モデルバックアップレビューはスキップされ、編集ごとのパターンチェックのみが実行されます
  • security-patterns.yaml ファイルが存在するが PyYAML がインポート可能ではない:ファイルは無視されます。代わりに security-patterns.json を使用してください
このページが触れるピースについてさらに深く掘り下げるには: