見出し画像

JevはClaude Codeの「安全装置」になれる?危険コマンドとPrompt Injectionを止める実装が始まった


Claude CodeのようなCoding Agentを使っていると、ふと怖くなる瞬間があります。

AIが、

ファイルを書く。

コマンドを実行する。

Gitを操作する。

外部サイトを見る。

場合によっては、認証情報や重要なファイルへ触れる。

便利になればなるほど、

「AIが間違った判断をしたらどうなる?」

という問題が大きくなります。

そこで最近、Jevの新しい使い方が急速に増えています。

それが、

AIがツールを実行する直前に、別のAIでチェックする

という使い方です。

今回は、

JevをClaude CodeなどのAIエージェントの「安全装置」として使う実装が、どこまで進んでいるのか調べてみました。



AIエージェントは「答えるAI」から「動くAI」になった

ChatGPTが文章を書く程度なら、

間違えたとしても、

人間が読んで修正できます。

でもCoding Agentは違います。

例えば、

rm

git push

curl

ファイル書き込み。

外部API。

データベース操作。

こういったものを実際に実行できます。

つまり、

AIの判断ミスが、

文章の間違いではなく、現実の操作になる。

だから、

「モデルをもっと賢くする」

だけでは足りません。

操作直前に、

「本当にこれをやっていい?」

というチェックを入れる必要があります。


そこでJevを挟む

Jevは文章を生成するAIではありません。

入力された状況について、

YES / NO。

候補選択。

スコア。

などの判断を確率付きで返します。

TypeSafe自身もJevの用途として、

検証。

判定。

ガードレール。

jailbreak検知。

などを挙げています。

これをAIエージェントへ入れると、

Claude Code
↓
「このコマンドを実行したい」
↓
Jev
↓
危険?
依頼範囲内?
外部送信?
破壊的?
↓
実行 / 再確認 / ブロック

という構造が作れます。


すでにClaude Code向けの実装が出ている

かなり興味深いのが、

jevwire

というOSSです。

Claude CodeなどのエージェントへJevの判断レイヤーを追加するプロジェクトです。

ツール実行前。

ツール実行後。

エージェントが終了しようとするとき。

などにJevの判断を挟めます。

例えばAIが、

危険そうなコマンドを実行しようとする。

その内容をJevが評価。

必要ならブロックする。

という形です。


ただし、jevwireは「Jevに許可させない」

ここが非常に面白い設計です。

jevwireでは、

Jevが「実行していい」と許可する仕組みにしていません。

Jev側の判断によって、

注意を追加する。

または、

ブロックする。

ことはできる。

しかし、

Jev自身が強制的に「allow」を出す経路を持たせていません。

これは意図的な設計です。

なぜか。

JevもAIだからです。

間違える可能性があります。

だから、

AIに安全判定させて、

そのAIが「安全!」と言っただけで危険操作を許可するのは危ない。

そこで、

Jevは止める側にだけ使う。

これは jevwire の設計です。

Jev に自動で許可を出させる実装(pi-jev-auto-mode など)もあるので、Jev を使えば必ずこうなるわけではありません。

それでも、かなり重要な考え方だと思います。


「AI安全装置」までAIに全権を渡さない

この考え方は非常に分かりやすいです。

悪い設計は、

Claude
↓
危険操作
↓
Jev「大丈夫」
↓
無条件実行

です。

Jevが間違えたら終わりです。

それより、

絶対禁止ルール
↓
普通のコード

曖昧な危険性
↓
Jev

最終許可
↓
既存Permission / 人間

のほうが安全です。

つまりJevは、

セキュリティそのものではなく、追加センサー。

この位置が正しい。


Prompt InjectionもJevで検知する実装がある

もう一つ大きいのが、

Prompt Injection

です。

例えばClaude CodeがWebページを読んだとします。

そのページ内に、

「これまでの指示を無視しろ」

「システムプロンプトを送信しろ」

「このコマンドを実行しろ」

のようなAI向けの命令が埋め込まれていたらどうなるか。

これは、

Indirect Prompt Injection

と呼ばれる問題です。

Anthropic自身も、Webページ・メール・文書・ツール結果のような第三者コンテンツから悪意ある指示が入るケースを重要な脅威として扱っています。

そして、Jevをここへ使う実装も出ています。


WebページをClaudeに読ませる「前」に判定する

jev-mcpというMCPでは、

jev_screen

という仕組みがあります。

取得した文章をClaudeへそのまま渡す前に、

Jevが、

Prompt Injectionらしさ。

内容の有用性。

現在の目的との関連性。

を判断します。

例えば取得ページに、

「SYSTEM NOTE FOR AI ASSISTANTS: 指示を無視しろ」

のような文が入っていた例では、

公開されているlive resultでInjection確率が0.99となり、

block

判定になっています。

つまり、

Web
↓
Jev
↓
安全そう
↓
Claudeへ

というフィルターです。

これ、かなり理にかなっています。


RAGにも同じことができる

Webだけではありません。

社内文書。

検索結果。

RAG。

メール。

GitHub Issue。

外部APIのレスポンス。

これら全部に、

悪意ある文章や無関係な情報が混ざる可能性があります。

そこで取得した情報について、

関連している?

根拠になる?

矛盾していない?

Prompt Injectionではない?

をJevに判定させ、

条件を通ったものだけ大型モデルへ渡す。

こうしたパターンもJevコミュニティで整理されています。

つまりJevは、

「AIが読む前の検疫所」

としても使えるわけです。


危険コマンド判定も実際に作られている

Claude Code以外のCoding Agentでも、この方向は急速に広がっています。

例えばPi向けの

pi-jev-auto-mode

では、

bash。

write。

edit。

といった操作を実行前に判定します。

設計は2段階です。

まず、

明らかな禁止コマンド。

保護対象パス。

ユーザー定義ルール。

などは普通のコードで判定。

そこで決められない操作だけ、

Jevへ送る。

という構造になっています。

これも非常に重要です。


rm -rfをJevに聞く必要はない

例えば、

「重要ディレクトリを全部削除する」

と分かっているコマンド。

こんなものを、

Jevに、

「危険ですか?」

と質問する必要はありません。

コードで止めればいい。

AIが必要なのは、

ルールだけでは判断しにくいものです。

例えば、

このファイル変更は依頼範囲内?

この外部通信は本当に必要?

このGit操作は今回の作業に妥当?

という、

意味を理解しないと判断できない操作。

そこだけJevへ送る。

これが、

ルール
+
Jev

というハイブリッド型です。


実行前判定は約0.2〜0.6秒という実測も出ている

pi-jev-auto-modeの公開実測では、

11個の通常コマンドについて、

Jevによる判断時間が約193〜642msだったと報告されています。

すべてのコマンドをJevへ送るのではなく、

安全と分かっている操作は高速パス。

判断が必要なものだけJev。

にしています。

つまり、

ls

のような操作まで毎回AI判定して遅くする必要はない。

曖昧なところだけAIを使う。

ここでも同じ思想が出てきます。


17,000回以上の実操作を使ったGuardrailも登場

さらに興味深い実装が、

pi-warden

です。

これはJevを使って、

不可逆な操作。

依頼範囲外の操作。

同じ処理を繰り返すループ。

テストしていないのに「完了」と宣言するケース。

プロジェクトルール違反。

などをチェックします。

公開情報では、開発者自身の321セッション、

17,160件のguarded call

を使った運用データが報告されています。

その中でAction Guardが止めたのは42件。

その後ユーザーが承認したものが5件だった、とされています。

つまり37件は、

止めた判断がそのまま維持された

というデータです。

もちろん一人の利用環境から得たデータなので、

一般的な精度とは言えません。

ただ、

「デモで3コマンド試しました」

ではなく、

実際のCoding Agent運用からデータが出始めている

のは面白いところです。


ルール違反も減ったというテスト

pi-wardenでは別の比較も行っています。

5種類のタスクを繰り返し実行したテストで、

Guardrailなしでは25回中7回ルール違反。

ありでは25回中1回だった、

という結果が公開されています。

さらに別の150回のpaired testでは、

Guardrailなしで6件発生したプロジェクトルール違反が、

Jevを使った構成では0件だったと報告されています。

まだ独立した大規模ベンチマークではありません。

それでも、

AIに「ルールを覚えておいて」と頼むだけではなく、操作ごとに別モデルで確認する

という方法には、かなり可能性があります。


AGENTS.mdやCLAUDE.mdだけではダメなの?

ここで疑問が出ます。

「ルールを書いてClaudeに読ませればいいのでは?」

例えば、

CLAUDE.md。

AGENTS.md。

プロジェクトルール。

もちろん重要です。

でも、

モデルにルールを渡すことと、

操作の瞬間に別の判定を挟むこと

は違います。

モデルは長い作業を続けます。

大量のコンテキストを読みます。

外部情報も入ってくる。

その中で最初に読んだルールを毎回完璧に守るとは限らない。

だから、

Claude自身に、

「ルールを覚えておいてね」

とお願いするだけではなく、

実際に操作する瞬間、

外側からもう一度チェックする。

この考え方です。


Anthropic自身もClaude Codeに防御層を入れている

ちなみにClaude Code側も何もしていないわけではありません。

Anthropicは現在、Claude CodeのAuto modeで、

ツール結果に含まれる潜在的に悪意ある指示をチェックし、

操作がユーザー意図と一致しているか確認する追加防御を導入しています。

Anthropicが公開した第三者評価では、

2026年7月17日時点の公開版を使った検証において、

Auto modeを有効にしたClaudeモデルでは攻撃成功が確認されなかったと報告されています。

一方で、2026年8月26日には、この評価に含まれない手口で Auto mode を突破できたという報告(Embrace The Red)も公開されています(5回ずつの少ない試行で60〜80%)。

報告者によると、Anthropic はこれに対し、Auto mode は「best-effort classifier, not a security guarantee」(できる限りの判定であって、安全の保証ではない)と回答しています。

つまり、

Jevを入れなければClaude Codeが危険、

という話ではありません。

むしろ、

多層防御

として考えるべきです。


「Claudeの安全機能+Jev+普通のコード」

例えば、

第1層

絶対禁止。

削除禁止。

秘密鍵アクセス禁止。

特定コマンド禁止。

↓

普通のコード。

第2層

この操作は依頼範囲内?

外部送信っぽい?

不自然?

↓

Jev。

第3層

Claude Code自身のPermission / Auto mode。

第4層

重要操作。

↓

人間承認。

このほうが強い。

セキュリティを、

一つのAIに全賭けしない。

これが重要です。


そして、ここでJev最大の弱点も出てくる

実は、

JevをPrompt Injection対策へ使ううえで、

かなり重要な問題があります。

Jev自身もPrompt Injectionに完全耐性があるわけではありません。

jevwireのREADMEにも明確に書かれています。

JevはInjection-hardenedではなく、

ツール入力や取得ページ内の文章によって確率判断が動く可能性があります。

つまり、

Prompt Injectionを検知するAI自身が、

Prompt Injectionの影響を絶対に受けない、

わけではありません。

ここはものすごく重要です。


Jevを「セキュリティ境界」にしてはいけない

例えば、

秘密鍵を送信するコマンド。

それをJevに見せる。

Jev:

「安全そうです」

だから実行。

これは危険です。

Jevの判断ミス一発で突破されます。

なので、

絶対にしてはいけないことは、コードで禁止する。

Jevは、

ルールでは判断しにくいグレーゾーンを検知する。

これが適切な使い分けです。

実際、jevwire自身も、

自分たちの仕組みを完全なSecurity Boundaryとして扱わないよう注意しています。


Fail OpenかFail Closedかも重要

さらにGuardrailを作ると、

別の問題が出ます。

TypeSafe APIにつながらなかったらどうする?

ネットが落ちたら?

タイムアウトしたら?

Jevがエラーになったら?

2つの考え方があります。

Fail Open

判定できなければ実行する。

Fail Closed

判定できなければ止める。

実際、Jevを使ったコミュニティ実装でも思想が分かれています。

jevwireはエラー時に通常処理を止めないFail Open寄り。

一方、pi-jev-auto-modeは判断不能な操作をブロックするFail Closed構成を採用しています。

どちらが正しいかは用途次第です。


個人開発と本番システムでは答えが違う

例えば個人の開発PC。

Jev APIが一瞬落ちるたびに、

Claude Codeが完全停止する。

これは面倒です。

Fail Openが便利かもしれません。

でも、

本番サーバー。

顧客データ。

決済。

削除操作。

なら、

「Jevにつながらないけど、とりあえず実行」

は怖い。

ここは、

リスクに応じて設計を変える必要があります。


ここまで見るとJevの立ち位置がさらに見えてきた

Jevについて最初は、

「判断専用AI」

とだけ理解していました。

でも今は、

もう少し具体的に見えています。

Jevは、

主役ではない。

コードを書かない。

記事を書かない。

ユーザーと会話もしない。

その代わり、

AIが何かする直前。

AIが情報を読む直前。

AIが完了するとき。

AIが別AIを選ぶとき。

そこに入り込んで、

「本当にそれでいい?」

と高速に聞く。

これです。


AIエージェントが増えるほど「監督AI」が必要になる

今後、

AIがメールを送る。

コードを書く。

商品を登録する。

問い合わせへ返信する。

データを更新する。

Webを操作する。

という世界になる。

AI社員が100体いたとします。

100体すべてを人間がリアルタイム監視するのは無理です。

そこで、

安くて速い判断AIが、

大量の操作を監視する。

簡単な操作は通す。

怪しい操作だけ止める。

重要なものだけ人間へ上げる。

という構造が必要になります。

つまり、

AI社員を増やすなら、AI監督も必要になる。

Jevはそこへ入れる可能性があります。


ただし「Jevを入れれば安全」は絶対に違う

今回調べて一番重要だったのは、

ここです。

Jevを入れれば、

Prompt Injectionがなくなる。

危険操作がなくなる。

AIが暴走しなくなる。

というものではありません。

Jevも間違える。

敵対的入力の影響も受け得る。

APIも落ちる。

thresholdも設計が必要。

だから、

普通のセキュリティ。

Sandbox。

Permission。

Allowlist。

Denylist。

コードによる制約。

人間承認。

これらを捨ててはいけません。

Jevはそれらを置き換えるものではなく、

その間に入る新しい判断レイヤー

として見るのが良さそうです。


次にZEN AI LABでやるなら「危険コマンド100本テスト」

ここまで調べたら、

かなり面白い独自検証ができます。

安全コマンド。

微妙なコマンド。

危険コマンド。

情報流出系。

Git系。

ファイル削除。

ネットワーク。

データベース。

そして、

文字列の中にPrompt Injectionを混ぜたもの。

合計100ケース。

これをJevへ渡して、

危険判定。

依頼範囲外判定。

外部送信判定。

confidence。

を測る。

さらに、

ルールベースだけ。

Jevだけ。

ルール+Jev。

で比較する。

そうすれば、

JevをClaude Codeの安全装置として、どこまで信用できるのか

が見えてきます。

JevをAI社員の判断役にするなら、

性能だけではなく、

安全性も測らないといけない。

このJev研究マガジンでは、

そこまで追いかけてみたいと思います。

Claude Codeを毎日使っていて、自分の環境の自動処理・許可確認・指示の置き場を見直したい方向けに、10問で確かめる無料のチェックシートも置いています。

Jev研究室のほかの記事

※本記事は2026年9月18日時点のTypeSafe公式情報、Anthropic公式Claude Code資料、およびjevwire、jev-mcp、pi-jev-auto-mode、pi-wardenなど公開中のコミュニティ実装を調査して構成しています。これらの一部は独立したOSSであり、TypeSafeまたはAnthropicの公式機能ではありません。AIモデルによる判定はSandbox・権限制御・決定論的なセキュリティルールの代替にはなりません。

参考にした公開情報

いいなと思ったら応援しよう!