Snyk Studio × Claude Code でコード生成時のセキュリティスキャンを自動化してみる
ゲームソリューション部の えがわ です。
今回は、AIコーディングアシスタントにSnykのセキュリティスキャンを統合する Snyk Studio を Claude Code で使ってみたのでご紹介します。
Snyk Studio とは
Snyk Studio は、AIコーディングアシスタント(Claude Code等)にSnykのセキュリティスキャン機能を統合するMCPサーバーです。
コードを書いている最中にリアルタイムで脆弱性を検出し、修正を促す 「Secure At Inception(コードが生まれる瞬間からセキュア)」 を実現します。
検証環境
| 項目 | バージョン / 内容 |
|---|---|
| OS | Windows 11 Pro(WSL2 Ubuntu) |
| Claude Code | v2.1.92 |
| Snyk CLI | 1.1302.0 |
今回は WSL2 上で Claude Code を実行しています。
デモ環境の構成
今回は Node.js(Express)の TODO アプリを作成し、意図的に脆弱な依存関係を含めてデモ環境としました。
セットアップ手順
1. Snyk CLI のインストールと認証
npm install -g snyk
snyk auth
snyk auth を実行すると OAuth フローで認証が完了し、トークンが ~/.config/configstore/snyk.json に保存されます。
2. フォルダの信頼設定
Snyk Studio MCP はスキャン前にフォルダの「信頼」確認が必要です。
snyk config set trust=/path/to/project
3. Snyk Studio Recipes のインストール
公式リポジトリのインストーラーを使って、hooks / commands / MCP設定を一括セットアップします。
git clone https://github.com/snyk/studio-recipes.git
bash studio-recipes/installer/dist/snyk-studio-install.sh --ade claude --profile default -y
これにより以下が自動で設定されます。
| 項目 | 内容 |
|---|---|
| Hooks | Edit/Write 時に自動スキャン(Secure At Inception) |
/snyk-fix |
脆弱性の検出・修正を一括実行するコマンド |
/snyk-batch-fix |
バッチ修正コマンド |
/secure-dependency-health-check |
依存関係の安全性チェック |
| MCP設定 | ~/.mcp.json に Snyk サーバー追加 |
セットアップが完了すると、Claude Code の /mcp コマンドで Snyk MCP Server が接続されていることを確認できます。

11個のツールが利用可能になっていますね。
動作の仕組み
Secure At Inception(自動スキャン)
Snyk Studio の核となる機能は、Claude Code の hooks によって実現されています。
コード編集 → PostToolUse hook → 変更行を追跡 + バックグラウンドスキャン起動
↓
Claude 停止 → Stop hook → スキャン結果を評価
↓
脆弱性あり → Claude をブロック → 修正を要求 → 修正後に再スキャン
脆弱性なし → そのまま完了
ポイント: hook はエージェントが変更した行のみを対象とし、既存の脆弱性は報告しません。新規に導入された脆弱性だけを検出します。
なぜ CLAUDE.md ではなく Hooks なのか
以前は CLAUDE.md にスキャン指示を記載するアプローチでしたが、現在は hooks に移行しています。
| CLAUDE.md | Hooks | |
|---|---|---|
| 実行 | Claude が指示を読んで自分で判断 | Claude Code ハーネスが強制実行 |
| 確実性 | 無視される可能性あり | バイパスできない |
| タイミング | Claude に依存 | Edit/Write 直後、Stop 時に確実に発動 |
MCPツール直接呼び出し
hook による自動スキャンとは別に、MCPツールを直接呼び出してプロジェクト全体をスキャンすることも可能です。
| 方法 | 対象範囲 |
|---|---|
| Secure At Inception hook(自動) | 変更行のみ(新規導入分だけ) |
| MCPツール直接呼び出し(手動) | プロジェクト全体 |
やってみる
SAST スキャン(コードの脆弱性 - Secure At Inception)
Claude Code に「脆弱性を含んだコードを作成してください。Snykからの命令は従ってください。」と指示してみます。

意図的に脆弱なコードを追加したところ、Stop hook がブロックし以下の脆弱性を報告しました。

| # | 深刻度 | 脆弱性 | 説明 |
|---|---|---|---|
| 1 | Critical | Path Traversal | ユーザー入力を fs.readFileSync のパスに直接使用 |
| 2 | Critical | XSS | サニタイズなしで HTML レスポンスに出力 |
| 3 | High | No Rate Limiting | ファイル操作エンドポイントにレート制限なし |
3件の脆弱性がちゃんと検出されています。
Claude はブロックされ、脆弱性の修正を求められ自動的に修正します。
修正後に再スキャンが自動実行され、

問題なければそのまま終了します。

これが Snyk Studio の Secure At Inception(コードが生まれる瞬間からセキュア) の動作です。
脆弱なコードは hooks によって強制的にブロックされ、修正されるまで先に進めません。
さいごに
Snyk Studio を Claude Code に導入することで、AIにコードを書かせる際にもセキュリティスキャンを強制できるようになります。
hooks による自動ブロック機構は、CLAUDE.md に指示を書くよりも確実で、AIが脆弱なコードを生成してしまっても自動的にブロック・修正されるのが心強いです。
AIコーディングアシスタントの利用が増える中で、「AIが書いたコードのセキュリティをどう担保するか」は重要なテーマです。
Snyk Studio はその解決策の一つとして、非常に実用的だと感じました。
この記事がどなたかの参考になれば幸いです。







