はじめに
Anthropicは2026年5月27日、Claude Codeにセキュリティ脆弱性をリアルタイムで検出・修正する公式プラグイン「security-guidance」をリリースしました。
このプラグインは、AIが書いたコードを別のAIが独立してレビューする仕組みで、SQLインジェクション・XSS・コマンドインジェクションなど約25種類の脆弱性パターンをセッション内で検出・修正します。コードレビューやCI/CDスキャンの前段として機能し、PRに到達するセキュリティ問題の量を削減することを目的としています。
この記事で学べること
- security-guidanceプラグインのインストール方法
- 3層レビューの仕組み(パターンチェック・ターン終了時レビュー・コミット時レビュー)
- カスタムルールの設定方法
- 他のセキュリティツールとの組み合わせ方
前提条件
- Claude Code CLI v2.1.144以降
- Python 3.8以上(
PATHに通っていること) - Gitリポジトリ内で作業していること
TL;DR
-
/plugin install security-guidance@claude-plugins-officialで即導入 - ファイル編集・ターン終了・コミット時の3段階でAIが自動セキュリティレビュー
- カスタムルールで自社の脅威モデルを追加でき、チーム全体に展開可能
security-guidanceプラグインとは
security-guidanceは、Claude Codeが生成したコードをリアルタイムで審査し、脆弱性があれば同一セッション内で修正する公式プラグインです。コードレビューやCI/CDスキャンの前段階として、AIが書いている段階でセキュリティ問題を摘み取る「最初の防衛線」を担います。
プラグインはClaude Code hooksの仕組みを活用して実装されており、Claude Codeのライフサイクルの各ポイントに介入します。
重要な設計思想として、コードを書いたClaudeと審査するClaudeは別インスタンスです。エンドオブターンレビューとコミットレビューでは、新たなコンテキストで審査用プロンプトを与えた独立したモデル呼び出しが行われるため、自己評価バイアスを排除しています。
このプラグインはすべての脆弱性を保証する完全なソリューションではなく、多層防御の一つの層として位置付けられている点に注意が必要です。
インストール方法
基本インストール
Claude Codeのセッション内で以下を実行します:
/plugin install security-guidance@claude-plugins-official
マーケットプレイスが見つからない場合は、先に登録します:
/plugin marketplace add anthropics/claude-plugins-official
インストール後、現在のセッションに即時適用します:
/reload-plugins
スコープは user スコープ を選ぶと、同一マシンのすべてのセッションで自動的に読み込まれます。
チーム・プロジェクト全体への適用
リポジトリに .claude/settings.json を追加することで、そのリポジトリをクローンした全員に自動適用されます:
{
"enabledPlugins": {
"security-guidance@claude-plugins-official": true
}
}
Claude Code on the Web(クラウドセッション)では、ユーザースコープのプラグインが引き継がれないため、プロジェクト設定への記述が必要です。組織全体に展開する場合は管理者がマネージド設定でenabledPluginsを設定します。
3層チェックの仕組み
security-guidanceは以下の3段階でコードを審査します:
| 層 | タイミング | 深さ | コスト |
|---|---|---|---|
| パターンチェック | ファイル編集時 | 高速・決定論的 | 無料 |
| ターン終了レビュー | Claude応答後 | モデルレビュー | 通常の使用料 |
| コミット・プッシュレビュー |
git commit/git push時 |
エージェント型深層レビュー | 通常の使用料(時間あたり上限20回) |
層1: ファイル編集時のパターンチェック
Claudeがファイルを編集するたびに、モデル呼び出しなしで高速パターンマッチを実行します。検出するパターン例:
-
動的コード実行:
eval(,new Function,os.system,child_process.exec -
安全でないデシリアライゼーション:
pickle -
DOMインジェクション:
dangerouslySetInnerHTML,.innerHTML =,document.write -
ワークフローファイル:
.github/workflows/配下の編集(リポジトリ権限に影響するため監視対象)
警告は1セッション中、同一ファイルの同一パターンに対して1回のみ表示されるため、会話が溢れることはありません。パターンチェックはモデル呼び出しを行わないため、コストは発生しません。
層2: ターン終了時のdiffレビュー
1ターン(ユーザーのメッセージ送信からClaudeの応答完了まで)が終わるたびに、そのターンで変更されたファイルのgit diffをセキュリティに特化した別モデルに送ります。レビューはバックグラウンドで実行されるため、Claudeの応答は遅延しません。
パターンマッチでは捉えられない以下のような問題を検出します:
- 認可バイパス
- 安全でない直接オブジェクト参照(IDOR)
- インジェクション(SQLインジェクション等)
- サーバーサイドリクエストフォージェリ(SSRF)
- 弱い暗号化
1ターンで最大30ファイルを対象に、連続して最大3回まで再プロンプトします。
層3: コミット・プッシュ時の深層エージェントレビュー
ClaudeがBashツールで git commit や git push を実行すると、変更コードの周辺(呼び出し元、サニタイザー、関連ファイル)まで読み込む深層エージェントレビューが起動します。コンテキストを広く読み込むことで、孤立して見ると危険だが実際は安全なパターンを誤検知しません。
この層はClaudeが自身のBashツールで実行したコミット・プッシュのみ対象です。ユーザー自身がターミナルで実行したコミットは対象外です。
カスタムルールの追加
モデルレビュー用ガイダンス
.claude/claude-security-guidance.md を作成し、自社の脅威モデルや審査チェックリストを記述します:
# Security guidance for this repo
- `customer_id`や`account_number`をINFOレベル以上でログに出力しない
- `/admin`配下のルートはすべてDBアクセス前に`require_role("admin")`を呼ぶ
- トークン比較には`===`の代わりに`crypto.timingSafeEqual`を使う
このファイルはモデルレビューの追加コンテキストとして読み込まれます。ガイダンスは加算的であり、特定の脆弱性クラスを無視する記述をしても、組み込みの検出は抑制されません。
ガイダンスファイルのスコープ別パス:
| スコープ | パス | 用途 |
|---|---|---|
| ユーザー | ~/.claude/claude-security-guidance.md |
そのマシンの全プロジェクトに適用 |
| プロジェクト | .claude/claude-security-guidance.md |
リポジトリにコミット |
| プロジェクトローカル | .claude/claude-security-guidance.local.md |
gitignoreされた個人設定 |
複数のファイルが存在する場合は連結されます(合計8KB上限)。
カスタムパターンの追加
.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_name |
string | 警告に表示される識別子 |
reminder |
string | Claudeのコンテキストに追加される警告文(最大1KB) |
regex |
string | Pythonの正規表現 |
substrings |
list | リテラル文字列のリスト(regexかsubstringsのいずれかを指定) |
paths |
list | 適用対象のglobパターン(オプション) |
exclude_paths |
list | 除外するglobパターン(オプション) |
最大50個のカスタムルールを設定できます。PyYAMLが利用できない場合は security-patterns.json(同一スキーマ)を使用してください。
設定・無効化オプション
各層を個別に制御する環境変数:
| 環境変数 | 効果 |
|---|---|
ENABLE_PATTERN_RULES=0 |
パターンチェックを無効化 |
ENABLE_STOP_REVIEW=0 |
ターン終了レビューを無効化 |
ENABLE_COMMIT_REVIEW=0 |
コミット・プッシュレビューを無効化 |
ENABLE_CODE_SECURITY_REVIEW=0 |
すべてのモデルレビューを無効化 |
SECURITY_GUIDANCE_DISABLE=1 |
プラグイン全体を無効化(アンインストール不要) |
SECURITY_REVIEW_MODEL |
ターン終了レビューで使用するモデルを変更 |
SG_AGENTIC_MODEL |
コミットレビューで使用するモデルを変更 |
一時的に無効化するにはセッション内で:
/plugin disable security-guidance@claude-plugins-official
完全に削除するには:
/plugin uninstall security-guidance@claude-plugins-official
プロジェクトの settings.json で有効化されている場合、無効化設定は settings.local.json に書かれるためチームメンバーには影響しません。
トラブルシューティング
公式ドキュメントによると、レビューが表示されない場合の主な原因:
- gitリポジトリ外で作業している: ターン終了・コミットレビューはgit状態が必要なためスキップ
- Anthropic認証がない: モデルレビューがスキップされ、パターンチェックのみ動作
-
PyYAMLが利用不可:
security-patterns.yamlが無視される(security-patterns.jsonを使用)
ランタイム診断ログは ~/.claude/security/log.txt に出力されます。
他のセキュリティツールとの組み合わせ
security-guidanceは多層防御の最前線に位置します:
| ステージ | ツール | カバー範囲 |
|---|---|---|
| セッション内 | security-guidance | Claudeが書いたコードの一般的な脆弱性 |
| オンデマンド |
/security-reviewコマンド |
現在のブランチへの一回限りのセキュリティパス |
| プルリクエスト時 | Code Review(Team/Enterpriseプラン) | コードベース全体のコンテキストを持つマルチエージェントレビュー |
| CI/CD | SAST・依存関係スキャナー | 言語固有のルール・サプライチェーンチェック |
各ステージは前段が見逃したものを補完します。security-guidanceの価値は、後段に到達するコードの量を減らすことにあります。
まとめ
Claude Code security-guidanceプラグインのポイント:
-
ゼロコンフィグで即導入:
/plugin installの1コマンドで有効化、追加設定不要 - 3段階の自動審査: 編集時(無料)・ターン終了時・コミット時の多層チェック
- 独立したレビュアー: コードを書いたClaudeと審査するClaudeが別インスタンス
- カスタマイズ可能: YAMLパターンとMarkdownガイダンスで自社固有のルールを追加
-
チーム展開が容易:
.claude/settings.jsonをコミットするだけ全員に適用
公式ドキュメントによると全プランで無料で利用できます。AIコーディングセッション内でセキュリティ問題を早期に摘み取り、PRレビューやCI/CDスキャンの負荷を減らす多層防御の最前線として機能します。

