deepsec について
deepsecは、リポジトリのセキュリティレビューを行うAI脆弱性スキャンスキルです。既存コードを指定範囲で調査し、重要度付きの検出結果を再検証、分類、出力できます。
主な機能
- 01範囲を指定したリポジトリスキャン
- 02正規表現による候補ファイル選定
- 03AIによる調査と重要度評価
- 04検出結果の再検証・分類・出力
活用シーン
- 01未コミット変更の脆弱性確認
- 02mainとの差分のレビュー
- 03既存コードベースのセキュリティ評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vercel-labs/ deepsec --skill deepsecインストール後、Claude Code で/deepsecを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.agents/skills/technical-writer/references/content-patterns.mdtechnical-verification.mdeditorial-standards.md.deepsec/AGENTS.mdREADME.md.gitignore.deepsec/data/deepsec/SETUP.mdINFO.md.deepsec/data/deepsec/files/.env.local.json.deepsec/data/deepsec/files/.github/workflows/release.yml.jsondeepsec.yml.jsonci.yml.jsone2e-live-sandbox.yml.json.deepsec/data/deepsec/files/e2e/vitest.config.ts.json.deepsec/data/deepsec/files/packages/core/src/paths.ts.jsonplugin.ts.jsontypes.ts.jsonrun.ts.jsonschemas.ts.json.deepsec/data/deepsec/files/packages/deepsec/src/cli.ts.jsonpr-comment.ts.jsondata-commit.ts.jsonfile-sources.ts.json.deepsec/data/deepsec/files/packages/deepsec/src/commands/metrics.ts.jsonexport.ts.jsonprocess.ts.jsoninit.ts.jsonreport.ts.jsonsandbox-all.ts.jsonscan.ts.json詳細
/deepsec — deepsec でこのリポジトリをスキャンする
deepsec は AI を活用した脆弱性スキャナーです。
- 最新の AI モデルは、セキュリティコードレビューに優れています。
- ほとんどのレビューソリューションは、プルリクエストでしか実行されません。
- そのため、レガシーコードの大半はレビューされておらず、6 か月前のコードは、より旧式のモデルによってレビューされています。
- deepsec はその代わりに、スケールされた VM ファンアウトを使用して、既存のコードをすべてセキュリティレビューします。
- Vercel の deepsec はオープンソースで、自社のインフラストラクチャで実行でき、強力なエージェントのサンドボックス化をサポートします。
高速な正規表現スキャンで候補ファイルにフラグを付けた後、AI エージェントが各候補を詳しく調査し、重大度評価を付けて検出結果を記録します。検出結果は後から再検証、トリアージ、エクスポートできます。リポジトリに追加されるものはすべて、単一の .deepsec/ ワークスペース(設定、インストール済みパッケージ、プロジェクトごとのデータ)に格納されます。実際の AI エージェントを実行して処理するため、調査するコード量に応じて費用が発生します。
ユーザーが /deepsec を実行した場合や、スキャンを依頼した場合は、この手順書に従ってください。
1. まず対象範囲を確認する
処理する対象範囲をユーザーに尋ねてください。利用可能であれば構造化質問ツール(Claude Code の AskUserQuestion など)を使い、なければ通常のテキストで尋ねます。
- 未コミットの変更 — 作業ツリーと未追跡ファイル
- main との差分 —
origin/mainとの差分(originリモートがない場合はmainを使用) - コードベース全体 — 費用のかかる選択肢であることを警告します。AI 処理では候補ファイルをすべて調査するため、大規模なリポジトリでは実費が発生する可能性があります。
この後の手順を自動で実行できるよう、ほかの作業を始める前に確認してください。
2. オンボーディング状態を確認する
リポジトリのルートから確認します。
.deepsec/deepsec.config.tsがない → オンボーディングされていません。手順 3 を最後まで実行します。.deepsec/は存在するが.deepsec/node_modules/deepsecがない場合、または前回のセットアップが中断された場合 → 手順 3 の init コマンドを再実行します。チェックポイントから再開し、最初からやり直すのではなくインストールを修復します。- それ以外 → オンボーディング済みです。手順 4 に進みます。
3. 全体処理を実行せずにオンボーディングする
オンボーディングでは通常、リポジトリ全体を対象に AI 処理を実行して完了します。ユーザーはすでに対象範囲を選択しているため、カバレッジフェーズの後でセットアップを止めてください。これにはインストール、ログイン、脅威モデル、マッチャーの生成、最後の正規表現スキャンが含まれますが、リポジトリ全体に対する AI の process フェーズは省略されます。対象範囲を指定した処理は、手順 4 で行います。
リポジトリのルートから、読み取り専用のプランを確認してからセットアップを実行します。
npx -y deepsec init --plan --output json
npx -y deepsec init --yes --through coverage --output jsonl
すべての出力行を JSON として解析してください。needs_input イベントが発生した場合は、対応策を勝手に考えず、提示されたメッセージとアクションをユーザーに表示してください。特に、VERCEL_AUTH_REQUIRED では通常、ユーザーに npx vercel login の実行を求めます。実行後、.deepsec 内から返されたリンクアクションに従い(プロジェクトを選択する必要がある場合は npx vercel link を使用)、同じ init コマンドを再実行してください。終了コード 2 は入力が必要であることを示します。終了コード 3 は費用または所要時間の上限に達して再開可能な実行が停止したことを示します。同じコマンドを再実行すると続きから再開されます。認証情報の値を決して公開しないでください。また、--yes フラグ自体を使う場合を除き、ユーザーに代わって --yes の確認を回避しないでください。対話型ログインを自分で開始してはいけません。
4. 対象範囲を指定して処理を実行する
.deepsec/ 内から実行してください(設定ローダーが deepsec.config.ts を探すのは、カレントディレクトリまたはその祖先のみです。手順 3 の後は、npx deepsec でそこにインストールされたコピーが解決されます)。
| 対象範囲 | コマンド |
|---|---|
| 未コミットの変更 | cd .deepsec && npx deepsec process --diff-working |
| main との差分 | cd .deepsec && npx deepsec process --diff origin/main |
| 手順 3 の直後にコードベース全体 | cd .deepsec && npx deepsec process(セットアップ時の最後のスキャンで候補セットはすでに生成されています) |
| オンボーディング済みのコードベース全体 | cd .deepsec && npx deepsec scan && npx deepsec process |
5. 結果を解釈する
- 直接モード(
--diff*)の終了コード:0= 新たな検出事項なし、1= 新たな検出事項が1つ以上(エラーではありません)、それ以外 = 実行時エラーです。 変更されたファイルに既存の検出事項があっても、ゲートの判定対象から除外されます。 - 検出事項をユーザーに要約して伝えたうえで、次の追加操作を提案してください(すべて
.deepsec/内から実行します):npx deepsec report、npx deepsec revalidate、npx deepsec export --format md-dir --out ./findings。
さらに詳しく
オンボーディング後、完全なドキュメントがインストール済みパッケージの
.deepsec/node_modules/deepsec/dist/docs/ に含まれます。getting-started.md、
reviewing-changes.md(直接モード、終了コード、CI ゲート)、
configuration.md、models.md などがあります。上記のコマンドを変更する前に、関連するドキュメントを確認してください。フラグとデフォルト値はリリースごとに変わります。