記事一覧に戻る
Anthropic が Claude Code 公式プラグイン「security-guidance」を公開——3 段階チェックで PR 前に脆弱性を修正、社内実績で関連コメント 30〜40% 削減

Anthropic が Claude Code 公式プラグイン「security-guidance」を公開——3 段階チェックで PR 前に脆弱性を修正、社内実績で関連コメント 30〜40% 削減

ZenChAIne·
Claude CodeAI SecurityPlugin

はじめに

Anthropic は 2026 年 5 月 27 日(PC Watch 報道)、Claude Code の公式プラグイン security-guidance を公開しました(公式 X 発信は 5 月 26 日)。これは Claude が コードを書いている最中に 一般的な脆弱性を検出し、同じセッション内で自動的に修正させる仕組みです。

「PR を出してから人間がセキュリティレビューする」のではなく、書いた瞬間から PR 到達前にループ内で直す という設計が新しいポイントです。Anthropic 社内ロールアウトでは、このプラグインを使った PR のセキュリティ関連コメントが 30〜40% 減少 したと公表されています。

この記事のポイント

  • security-guidance は Claude Code 2.1.144+ で動く公式プラグイン。/plugin install security-guidance@claude-plugins-official でインストール
  • 3 段階レビュー: ① per-edit パターンマッチ(無料)→ ② end-of-turn diff レビュー(モデル呼出)→ ③ commit エージェントレビュー(深い文脈読み)
  • ① は eval / pickle / dangerouslySetInnerHTML / .github/workflows/ 編集などのリスクパターンを正規表現で検出
  • ② は authorization bypass / IDOR / injection / SSRF / 弱い暗号などモデルでないと拾えない問題を捕捉
  • ③ は周辺コード(呼び出し元・サニタイザ)まで読んで誤検知を抑える
  • 組織固有ルールは .claude/claude-security-guidance.md.claude/security-patterns.yaml で追加可能
  • 全プランで無料、Anthropic 社内実績で PR のセキュリティ関連コメント 30〜40% 削減

security-guidance プラグインとは何か?

security-guidance は、Claude Code が書いたコードの脆弱性を 3 つのライフサイクル点で自動レビュー し、検出した問題を 同じセッションでそのまま修正させる プラグインです。/plugins コマンドから開く公式マーケットプレイス(claude-plugins-official)に登録されています。

Anthropic 公式ドキュメントの位置づけは次の通りです。

段階ツールカバー範囲
セッション内security-guidance プラグイン(本記事)Claude が書くコード中の一般的脆弱性、同じセッションで修正
オンデマンド/security-review現ブランチに対する一回限りのセキュリティスキャン
PR 時Code Review(Team / Enterprise プラン)マルチエージェントによる正確性 + セキュリティレビュー
CI 段階既存の SAST / 依存スキャナ言語固有ルール、サプライチェーン

つまり「最も早い段階で芽を摘んで、後段のレビュー負担を減らす」というレイヤーです。

3 段階チェックの中身

プラグインは Claude Code の hooks 機能で動いており、3 つのフックポイントで深さの違うチェックを走らせます。

① On each file edit — per-edit パターンマッチ(無料)

Claude が Edit / Write / NotebookEdit ツールでファイルを書いた直後に、モデル呼び出しなしの正規表現/部分文字列マッチ で危険パターンをスキャンします。コストはゼロです。

ビルトインで拾うパターン例:

  • 動的コード実行: eval( / new Function / os.system / child_process.exec
  • 安全でない逆シリアル化: pickle
  • DOM インジェクション: dangerouslySetInnerHTML / .innerHTML = / document.write
  • ワークフローファイル: .github/workflows/ 配下の編集(リポジトリ権限を付与し得るため)

検出された警告は、Claude の次ステップ用コンテキストに追記されます。同じファイルの同じパターンは セッション内で 1 回だけ通知 されるので、繰り返し警告で会話が埋まりません。

② At the end of each turn — end-of-turn diff レビュー

Claude が応答を返してターンが終わるたびに、そのターン中にワークツリーで変更されたすべての diff を、別の Claude インスタンスにセキュリティ視点でレビューさせます。これは Claude の Edit ツール、Bash コマンド、サブエージェントによる変更を含む全範囲が対象です。

このレビューは バックグラウンド実行 なので Claude の返答は遅延しません。問題が見つかれば Claude が再プロンプトされ、フォローアップとして修正します。

ここで捕捉される、文字列マッチでは見えない問題例:

  • Authorization bypass / Insecure Direct Object References(IDOR)
  • Injection / SSRF(サーバーサイドリクエストフォージェリ)
  • 弱い暗号(脆弱なアルゴリズム選択など)

制限: 1 ターンで最大 30 ファイル分のレビュー、連続 3 回まで(その後はユーザーにコントロールを返す)。

③ On each commit or push — agentic コミットレビュー

Claude が Bash ツールから git commit または git push を実行すると、周辺コード(呼び出し元、サニタイザ、関連ファイル)まで読み込む agentic レビュー がバックグラウンドで走ります。文脈を踏まえて判断するため、孤立して見ると危険だが文脈上は安全 なケースで誤検知が大きく下がります。

注意点:

  • このレビューは Claude が Bash 経由で実行したコミット/プッシュのみ が対象。あなた自身が手元のシェルで打ったコミット、! シェルエスケープでのコミットは対象外
  • 1 時間あたり最大 20 レビューでキャップ
  • end-of-turn レビューと内容が重複した場合は Claude を再プロンプトしないため、クリーンなコミットでは「無音」

レビューの独立性

per-edit はモデルなしの決定論的マッチ。end-of-turn と commit のレビューは コードを書いた Claude インスタンスとは別の Claude 呼び出し で、新規コンテキスト + セキュリティ特化プロンプトを使います。レビュアーは元の実装方針に「思い入れ」を持たず、問題を探すことだけを指示されます。

3 段階のいずれもファイル書き込みやコミットを ブロックはしません。検出結果は Claude に指示として渡され、Claude が会話内で修正します。レビューモデルも見落としは起こり得るため、「defense in depth の 1 レイヤー」 と捉えるのが安全です。

インストールと有効化

前提条件

  • Claude Code CLI 2.1.144 以降
  • Python 3.8 以降python3 / python / py -3 の順で探す)
  • 作業ディレクトリが git リポジトリ(end-of-turn と commit のレビューに必要、per-edit は git 外でも動く)
  • 初回起動時に ~/.claude/security/ 配下に venv を作成し Claude Agent SDK を pip install(ネットワーク必須)。失敗すると commit レビューが agentic ではなくシングルショットレビューにフォールバック
  • Windows では venv ステップを省略するため、claude-agent-sdk が既に importable でないと agentic レビューは動かずシングルショットフォールバック

インストールコマンド

Claude Code セッション内で以下を実行します。

bash
/plugin install security-guidance@claude-plugins-official

インストール時に User scope を選ぶと、このマシンで開く全セッションに自動ロードされます。マーケットプレイスが見つからないと言われた場合は次を先に実行してください。

bash
/plugin marketplace add anthropics/claude-plugins-official

インストール後は /reload-plugins で再起動なしに現セッションに有効化できます。

Claude Code on the web / 共有リポジトリで有効にする

/plugin install で入れた user-scoped プラグインは Anthropic インフラ側で動く Claude Code on the web には引き継がれません。チーム全員に効かせたい場合は .claude/settings.json に書きます。

json
{
  "enabledPlugins": {
    "security-guidance@claude-plugins-official": true
  }
}

組織管理者は managed settings の enabledPlugins で組織全体に強制配布できます。

カスタムルールで組織固有の脆弱性パターンを追加する

プラグインには 2 つの拡張ポイント があります。ビルトインチェックを無効化することはできませんが、独自ルールは追加できます。

モデルレビュー向けのガイダンス追記(.md

プロジェクトルートに .claude/claude-security-guidance.md を置くと、end-of-turn と commit のレビュー時にビルトインのチェックリストと並んで参照されます。

markdown
# Security guidance for this repo
 
- `customer_id``account_number` を INFO 以上で `log` しない
- `/admin` 配下のルートは DB 読み取り前に `require_role("admin")` を呼ぶ
- トークン比較は `===` ではなく `crypto.timingSafeEqual` を使う

ルックアップ場所(全て読み込んで連結、合計 8 KB cap):

Scopeパスメモ
User~/.claude/claude-security-guidance.mdこのマシンの全プロジェクトに適用
Project.claude/claude-security-guidance.mdリポジトリにコミット
Project local.claude/claude-security-guidance.local.mdgitignore、個人用上書き

管理者は MDM でユーザースコープファイルを配布することで組織共通ルールを浸透できます。

per-edit パターンの追加(.yaml

.claude/security-patterns.yaml(または .yml / .json)で正規表現/部分文字列ルールを追加できます。

yaml
patterns:
  - rule_name: internal_api_key
    substrings: ["sk_live_", "AKIA"]
    reminder: "Hardcoded API key prefix. Load credentials from the secret manager."
  - rule_name: tenant_unfiltered_query
    regex: "\\.objects\\.all\\(\\)"
    paths: ["**/src/tenants/**"]
    reminder: "Multi-tenant code must filter by org_id."

スキーマ要点:

フィールド説明
rule_namestring警告に表示される識別子
reminderstringClaude のコンテキストに追記される警告文(1 KB cap)
regexstringPython 正規表現
substringslist文字列リテラル(regex のいずれか必須)
pathslist適用対象 glob(プロジェクト相対なら **/ プレフィックス必須)
exclude_pathslist除外 glob

最大 50 ルールまで、catastrophic backtracking しそうな regex は自動スキップされます。YAML は PyYAML を要求しますが、JSON はどの Python 環境でも動きます。

使用コストと無効化

コスト

  • per-edit: モデル呼び出しなし、コストゼロ
  • end-of-turn: 通常のモデル使用としてカウント。1 ターンで 1 回程度
  • commit: agentic で複数ターン消費しうる、1 時間あたり 20 回まで

デフォルトモデルは Claude Opus 4.7 です(end-of-turn / commit とも)。SECURITY_REVIEW_MODEL で end-of-turn を、SG_AGENTIC_MODEL で commit を別モデルに切り替え可能。プラグインは 全プランで利用可能(無料)。

レイヤーごとの無効化

環境変数効果
ENABLE_PATTERN_RULES=0per-edit パターンチェックを無効化
ENABLE_STOP_REVIEW=0end-of-turn diff レビューを無効化
ENABLE_COMMIT_REVIEW=0commit / push レビューを無効化
ENABLE_CODE_SECURITY_REVIEW=0モデルベースレビューをまとめて無効化
SECURITY_GUIDANCE_DISABLE=1プラグイン全体を一時停止(アンインストール不要)

完全な停止 / 削除:

bash
/plugin disable security-guidance@claude-plugins-official
/plugin uninstall security-guidance@claude-plugins-official

プロジェクトの .claude/settings.json で有効化されている場合、/plugin disable.claude/settings.local.json に override を書き込むので、チェックインされたファイルを編集せず自分だけ無効化 できます。

よくある質問

Q. 既に CI で SAST を回しているのに必要ですか?

A. プラグインは CI を置き換えるものではなく、CI に到達する前段に置く ものです。CI の static analysis や依存スキャナは引き続き必要ですが、プラグインで早期に直すことで CI が catch する量を減らせます。Anthropic 社内では PR のセキュリティ関連コメントが 30〜40% 減少したと公表しています。

Q. プラグインが書き込みやコミットをブロックすることはありますか?

A. ありません。3 段階のいずれもブロックではなく、Claude への指示として渡されます。ハード強制 が必要な場合は、別途 hooks で書き込みをブロックするか、CI チェックで止めるのが推奨です。

Q. レビュー対象は Claude が書いたコードだけですか?

A. end-of-turn レビューは そのターン中にワークツリーで変更された全 diff(Claude の Edit ツール、Bash コマンド、サブエージェント由来を含む)が対象です。commit レビューは Claude が Bash 経由で実行したコミット/プッシュのみ。あなた自身が手元シェルで打ったコミットは対象外です。

Q. レビューが動かない場合の確認方法は?

A. ~/.claude/security/log.txt に診断ログが書かれます。よくある原因: ① git リポジトリではない(per-edit のみ動く)、② Anthropic 認証がない(モデルベースレビューがスキップ)、③ security-patterns.yaml を置いたが PyYAML が import できない(.json で代用可能)。

Q. 組織独自のルールを全員に配布したいです

A. .claude/claude-security-guidance.md をリポジトリにコミットすればチームで共有できます。マシン全体に配るなら ~/.claude/claude-security-guidance.md を MDM で配布する手があります。組織管理者は managed settings の enabledPlugins でプラグイン自体を強制有効化も可能です。

まとめ

security-guidance プラグインは、Claude Code の 「書いた瞬間 → ターン終了 → コミット」 という 3 つのライフサイクル点に hooks で挟まったレビュアーで、PR 到達前に脆弱性をループ内で直してしまう設計です。per-edit のパターンマッチは無料で誤検知も少なく、end-of-turn と commit のモデルレビューは authorization / injection / 弱い暗号など文脈を要する問題を別 Claude インスタンスで拾います。

社内実績の「セキュリティ関連 PR コメント 30〜40% 削減」は、PR レビュアー側の負荷削減と開発速度の両方に効く数字です。/plugin install security-guidance@claude-plugins-official で今すぐ試せます。ZenChAIne でも、本連載の Spec 駆動開発(spec-review / review_rules.md)と組み合わせ、書いている最中(このプラグイン)→ PR 時(spec-review)→ CI(既存 SAST) の多層防御として運用することを検討しています。

参考ソース