Lagune と Deepsec(v2.2.1)は、AI 支援開発の時代のセキュリティという同じ課題に対する、2 つの防御的な答えです。仕組みが重なる部分はあっても、前提も、始まりから終わりまでの流れも、ユーザーへの見せ方も、意図して異なるように作られています。
Lagune は Deepsec の影響を受けているのでしょうか?いいえ。Lagune はゼロから書かれたもので、Spec-Driven Development と Security Hardening から着想を得ています。2 つのプロジェクトはそれぞれ独立して開発されたもので、ここでの比較は、ユーザーが両者の違いを理解するためのものです。
概要
| 観点 | Lagune | Deepsec |
|---|---|---|
| 種類 | リファレンス実装を備えた方法論(SDH) | 製品:エージェントで動く脆弱性スキャナー |
| 軸 | セキュリティ原則とオンデマンドの知識がエージェントを動かし、決定論的なフックが土台を支える | 広く張った正規表現の網が、必須の AI 調査に候補を送り込む |
| 生み出すもの | 堅牢化されたコード、証明、追跡される検出事項のチェーン | 深刻度順に並べ、トリアージした検出事項のレポート |
| コードに手を加えるか | はい:harden がコードを編集する | いいえ:静的解析のみで、検出事項と推奨事項のテキストを出力する |
| 実行環境 | すでに使っているエージェントとモデルで動き、モデルのクラスは問わない | 独自のモデルパイプラインで動き、デフォルトはフロンティアクラスのモデル |
| 導入 | プラグインを 1 つインストールするか npx skills add を実行したら、あとはふだんの言葉で操作するだけで、新たに立ち上げるツールは不要 | .deepsec/ ワークスペースを用意し、依存関係をインストールして、モデルのキーを追加する |
仕組み
Lagune はエージェントが起点です。エージェントが作業を進め、コードの実態に合わせて必要な知識をオンデマンドで取り込み、機械的に判定できる部分は決定論的なフックに任せます。
Deepsec は決定論的な処理が起点です。広範なスキャンが候補を指摘し、その候補が、必須のモデルに調査と判断の対象を示します。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 順序 | セキュリティ原則とコードに合致した知識がエージェントを導き、エージェントは一部をフックに任せて、残りを自ら判断する | マッチャーが候補を指摘し、モデルがそれぞれを調査して判断する |
| 決定論的な処理の役割 | 判定を返すか、エージェントの狙いを定める多言語対応のフックで、カテゴリの知識と組み合わせて使う | 候補を指摘し、必須のモデルの判断に回すマッチャー |
| 開発フロー | /lagune がコーディング中にその場で安全に構築する | コードをレビューするだけで、書きはしない |
| 監査フロー | charter → detect → plan → harden → verify | scan → process → triage → revalidate → report |
| AI の役割 | 知識をもとに推論し、修正を適用して、それが有効であることを証明する | すべての候補を調査し、検出事項を報告する |
ライフサイクル
Lagune は、コードを書く前、書いている最中、書いた後のいずれでも機能します。Deepsec は、コードができてからリポジトリをレビューします。
| タイミング | Lagune | Deepsec |
|---|---|---|
| コードを書く前 | charter が、示された意図からセキュリティポリシーを作り出す | 既存のコードから始める:init にはディレクトリが必要 |
| 開発中 | /lagune がその場で、デフォルトで安全な形に作り上げ、成果物は残さない | 開発中ではなく、開発後にレビューする |
| 既存のコード | detect → plan → harden → verify | scan → process(中核のフロー) |
| 継続的なレビュー | 範囲ごとにフェーズを再実行する。既製の CI ゲートはない | インクリメンタルな再スキャンと、CI の終了ゲートになる process --diff |
検出レイヤー
両者の決定論的なレイヤーは、性質が正反対です。一方は判定し、もう一方は指摘します。
| 観点 | Lagune | Deepsec |
|---|---|---|
| グループ分け | カテゴリごとにまとめたフックと専門知識 | パターンやフレームワークごとのマッチャー |
| 出力 | 明示的な判定(finding / review / advisory)と分類ラベル | 判定のない候補(slug、行、コードスニペット、マッチしたパターン) |
| チューニング | 適合率重視:コメントを認識し、プレースホルダーとウィンドウのガードを備える | 再現率重視:網を広く張り、誤検知は後から AI が取り除く |
| 深さ | 両者が共通して扱う種類では、より深い | より広いが、両者が共通して扱う種類では浅い |
| 誤検知 | 発生源で低く抑え、そのうえでコンテキストに照らして判断する | 意図的に多めに出し、revalidate の工程で削る |
知識と判断
どちらも、正規表現では表せないセキュリティの知識を備えています。違いは、その知識がどこにあり、誰が形づくれるかです。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 形式 | 編集できる Markdown のモジュールで、一部は決定論的なフックに裏付けられている | 短いプロンプトと技術ごとの要点で、モデル自身の知識に頼る |
| 選び方 | コードと照合し、該当するコンテキストがあるときだけ読み込む | すべての AI バッチに注入し、検出した技術の要点も加える |
| 誰が書くか | ユーザーがモジュールを編集し、specialize で新しいモジュールを追加する | プロンプトはメンテナーが管理し、ユーザーは INFO.md を記入する |
| 判断の担い手 | フックが土台となる部分を判定し、残りはエージェントが知識をもとに判断する | 集中型:1 つの AI プロセッサーがすべての候補を判断する |
| 再利用 | 1 つのモジュールが detect と verify の両方を導く | 1 つのプロンプトが、唯一の process ステージを動かす |
検出事項とクローズ
両者がもっとも大きく異なるのは、解決した検出事項がその後どうなるかです。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 深刻度 | 露出度と事の重大さに応じて調整した CVSS v4.0 スコア | AI が付ける深刻度に加え、悪用可能性と影響による P0 / P1 / P2 のトリアージ |
| 判定 | Risk closed、Risk not closed、Cannot tell from the code のいずれか | true-positive、false-positive、fixed、uncertain、accepted-risk、duplicate |
| 保存のしかた | 作業中のチェーンは現状と照合して更新し、クローズした検出事項は履歴に要約する | ファイルごとの追記専用の記録で、何も削除しない |
| 最終状態 | クローズ可能:証明済みの検出事項はクローズされ、チェーンを静止状態にできる | すべての検出事項を永久に保持し、解決後はビューから非表示にする |
| 履歴の詳しさ | どんなリスクだったかの簡潔な要約 | どう修正したかを含む、判定の全経緯 |
コスト
| 観点 | Lagune | Deepsec |
|---|---|---|
| 決定論的な土台 | 無料:フックは AI もキーも使わずに動き、その時点で判定を出す | 無料:scan は AI なしで動くが、単体では判定を出さない |
| 一般的な費用 | すでに使っているエージェントの費用に含まれ、ローカルモデルなら $0 で済み、ほかは契約中のプランの料金か、API 利用なら反復ごとの課金 | 100 から 2,000 ファイルで 1 回あたり約 $25 から $1,200、規模が大きいとさらに高額 |
| 最安の方法 | 無料のローカルモデルを含め、どのモデルでもサイクルを完結できる | より安い有料クラスのモデルもあるが、検出事項を得るには有料の AI ステージが必要 |
拡張性とガバナンス
それぞれ、相手が閉じているレイヤーを開いています。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 拡張できるもの | モジュールを編集するか、specialize で新しく追加する | マッチャー、エージェント、通知機能、所有者情報を追加する |
| ポリシー層 | セキュリティ原則がすべてのフェーズを律し、バージョン管理される | 設定は運用面のもの(マッチャー、モデル、パス) |
| 名前による上書き | 改良したモジュールが、同名の組み込みモジュールに優先する | マッチャーの slug が衝突すると、自分のマッチャーが優先される |
インターフェース
Deepsec は、セキュリティ組織向けのアウトプットを生成します。Lagune は、実行している本人に向けてリアルタイムのビューを表示します。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 人が見る画面 | チェーン全体をわかりやすい言葉で示す、ローカルのリアルタイムダッシュボード | レポート、エクスポート、メトリクス、PR コメントの各ファイルと、ドキュメントサイト |
| 責任の所在 | 関係するファイルと、適用された専門知識を示す | 担当者の候補を割り振る:オンコール担当、マネージャー、コミッター |
| 再現可能な証明 | prove が実行可能なテストと、開示用のセキュリティアドバイザリを作成する | 設計上あくまで静的で、対象を実行することはない |
| ツール自身の防御 | ダッシュボードのローカル書き込み API を堅牢化する | 信頼できない対象コードに備えて、自身の AI 実行を堅牢化する |
規模とデプロイ
| 観点 | Lagune | Deepsec |
|---|---|---|
| インストール | エージェントのプラグインか skills CLI から 9 つのコマンドを導入するだけで、ひな形は何も生成しない | 独自のパッケージと依存関係を持つ .deepsec/ ワークスペース |
| 規模の方向性 | 任意の範囲に絞り込める:1 つのコンテキスト、1 ファイルからプロジェクト全体まで | リポジトリ全体をスキャンし、大規模なモノレポにも対応する |
| 分散実行 | ローカルのみで、唯一のサーバーはループバックにバインドする | 必要に応じて Vercel Sandbox のワーカー VM に分散できる |
ユーザー体験
それぞれが実行する人をどう迎えるか、つまり初回の実行に何が必要で、操作する人がどう狙いを定めるかです。
使い始め
Lagune は、すでに開いているエージェントを通じて動きます。Deepsec は、まず独自のワークスペースとモデルへのアクセスを用意します。
| 観点 | Lagune | Deepsec |
|---|---|---|
| 最初のコマンド | プラグインのインストールか npx skills add wellwelwel/lagune、そのあとエージェントで /lagune-* | npx deepsec init、続いて cd .deepsec、pnpm install、scan、process |
| 実行に必要な認証情報 | 別途キーは不要で、今使っているエージェントをそのまま使う | モデルのキー(例:AI Gateway、有効期限 12 時間の Vercel OIDC トークン、Anthropic のトークン) |
操作のしかた
どちらも指示を受け付けます。Lagune は、フェーズごとに入力の形を読み取ります。Deepsec は、同じ調査を実行する対象のファイルを絞り込みます。
| 観点 | Lagune | Deepsec |
|---|---|---|
| プロジェクト全体 | 入力なしでフェーズを実行すると、範囲全体をスキャンする | scan と process がリポジトリ全体をスキャンする |
| 一部分 | どのフェーズも、指定したファイルやディレクトリに範囲を絞れる | --files、--files-from、--diff で実行範囲を絞る |
| 特定の懸念 | フェーズを、説明した懸念に絞り込める | 調査用のプロンプトは固定 |
| 優先度の区分 | harden と verify を緊急、重要、警告、注意のいずれかに絞り込める | 検出事項のラベル付けは実行後 |
| 単一の値 | フックが 1 つのコードスニペット、パターン、URL を直接スコアリングする(--pattern、--url) | 作業の単位はファイル |
よくある質問
Lagune はエージェントが起点で、コードを書く前、書いている最中、書いた後のいずれでも機能します。コードを書く前にポリシーを定め、開発中はその場で堅牢化し、すでに書かれたコードは監査、堅牢化、検証します。Deepsec は決定論的な処理が起点です。広範な正規表現スキャンの結果を必須のフロンティアモデルによる調査に送り、その調査が既存のコードをレビューして検出事項を報告しますが、コードは変更しません。
Lagune はフロー全体を無料のローカルモデルで $0 で実行でき、決定論的なフックは AI をまったく使わずに判定を出します。Deepsec のスキャンは無料ですが判定を出さないため、検出事項を得るには必ず有料の AI ステージが必要です。
Lagune は変更します。harden がコードに修正を適用します。Deepsec は変更しません。静的解析のみを行い、検出事項と推奨事項のテキストを出力して、それを人やエージェントが別途適用します。
