Cerberus – AIエージェントのツールコールに対するローカルファイアウォール
Cerberusは、Claude Code、Codex、Cursor、ClineなどのAIコーディングエージェントのツールコールをインターセプトし、リスクスコアリングするローカルファーストのセキュリティゲートウェイです。秘密情報の流出、危険なコマンド、プロンプトインジェクション攻撃を防ぎます。外部APIを必要とせず、ユーザーのマシン上で完全に動作します。
Cerberusは、自律型AIコーディングエージェント(Claude Code、Codex、Cursor、Clineなど)向けのローカルファーストのセキュリティゲートウェイです。エージェントとマシンの間に位置し、すべてのツールコールを実行前にインターセプトし、4つのシグナルでリスクスコアリングを行い、許可、監査、人間の承認要求、またはブロックを決定します。すべてローカルで実行され、外部APIは不要で、データがデバイス外に出ることはありません。
問題点
自律型コーディングエージェントは、シェルコマンドの実行、ファイルの編集、ネットワーク呼び出しをマシンスピードで、しばしば無人で行います。誤ったステップ(rm -rf、意図しないgit push、.envファイルの漏洩、エージェントを騙して秘密を盗み出す悪意のあるREADMEなど)が発生した場合、人間が介入する余地はありません。Cerberusは、エージェントが実際に行動するツール境界にチェックポイントを配置します。
動作の仕組み
PreToolUse → インターセプト → ポリシー+行動+コンテンツ+インジェクション → リスクエンジン → 許可/監査/人間の承認要求/ブロック。PostToolUseでは、シークレット検出とインジェクション検出を行い、セッションの汚染状態を更新します。4つの決定論的シグナルが加重リスクスコアに集約され、絶対禁止事項は上書きできないハードフロアが設定されています。
保護内容
- 秘密情報の流出:コンテキストにロードされた秘密を検出し、アウトバウンドペイロードを内容一致でチェック。実際に鍵を運ぶ呼び出し(生、base64、hex、URLエンコード)をインターセプトし、出典(例:.env:4 · sha256:… · 97%)を記録しますが、秘密自体はログに記録しません。
- 過剰な権限:すべての呼び出しをチェック。未知のツールはデフォルトで拒否。機密パス(~/.ssh、~/.aws、credentials、/etc/passwd)を保留。破壊的なコマンド(rm -rf、Remove-Item -Recurse、chmod 777、kill -9)はブロックまたは保留。
- 危険な外部通信:宛先ポリシーに基づき、信頼できるホスト(レジストリ、GitHub、OpenAI/Anthropic)は自動許可。ペーストサイト、webhookキャッチャー、生IP宛先は保留。
- ツールの悪用:暴走ループ、ツール呼び出しレート/繰り返しの検出。
- プロンプトインジェクション:ツール結果内のインジェクションを検出し、次のアウトバウンド呼び出しをゲート(ヒューリスティック分類器、オプションでローカルDeBERTaモデル)。LLMプロンプトではなくツール呼び出しを見るため、インジェクションの悪用(アウトバウンド)を捕捉し、インジェクション自体は捕捉しません。
主な機能
- ターミナルファースト承認:保留された呼び出しはエージェントのネイティブ権限プロンプト(Claude Code/Cursor)に表示されるか、cerberus approve/ローカルダッシュボードで処理。
- フォレンジックダッシュボード:セッションごとのタイムライン、リスク要因の内訳、リスクがどのように蓄積されたかをステップ実行できるReplayプレーヤー。
- マルチエージェント:1つのアダプターレイヤーでClaude Code、Codex、Cursor、Clineをサポート。
- ポリシーはデータとして:ルールとリスク重みはコードではなくYAMLで編集可能。
- ローカルファースト:127.0.0.1にバインド、外部APIなし、テレメトリーなし。秘密の値はディスクやログに書き込まれません。
クイックスタート
グローバルインストール:npm i -g @cerberussec/core、その後cerberus initでCerberusをエージェントに配線(Claude Code、Codex、Cursor、Clineをサポート)。ゲートウェイとダッシュボードを起動:cerberus engine、その後http://127.0.0.1:9000/を開く。エージェントを通常通り使用すると、ツールコールがCerberusを経由するようになります。デフォルトでは、保留された呼び出しはClaude Codeのネイティブ権限プロンプトで承認され、セッションを離れる必要はありません。
アーキテクチャ
PreToolUseフック → /interceptが唯一のハードな執行ポイント(許可/拒否/承認要求、または人間の承認を要求する場合はソケットを開いたまま保持)。PostToolUseフック → /inspectは読み取り専用で、セッションの汚染状態を更新し、次のアクションが完全なコンテキストで判断されるようにします。エンジンコアはエージェント非依存であり、アダプターレイヤー(--agent)のみがエージェントごとに異なります。
位置づけと限界
Cerberusはツール境界上のランタイムゲートウェイです。最も得意とするのは秘密情報の流出防止と権限のチェックポイントです。LLMプロンプトではなくツール呼び出しを見るため、プロンプトインジェクションの悪用を捕捉しますが、インジェクション自体は捕捉しません。データパイプライン/RAGポイズニングはカバーしません。秘密の一致は高信頼性ですが絶対ではありません(新しい秘密形式、呼び出し間のエンコーディング)。正直なデフォルトを堅持し、誤った保証はしません。
ローカルファーストとライセンス
外部API、APIキーは不要。データがマシンから出ることはありません。オプションのインジェクションモデル(@cerberussec/injection-model、ProtectAI DeBERTa、Apache-2.0)は、内蔵のヒューリスティック分類器をアップグレードします。コアはオープンソースでクリーン(Apache/MIT互換の依存関係)。Meta Prompt-GuardはLlamaライセンスのため、意図的にコアから除外されています。