Code Mode Security (ベータ)
サンドボックス化、AST 解析、テイント追跡を組み合わせたセキュアな MCP-as-code 実行。
Code Mode は、エージェントが個別のツール呼び出しを行う代わりに、TypeScript コードを実行して複数の MCP ツールをチェーンできるようにする機能です。このアプローチにより、レイテンシとトークン使用量が大幅に削減されますが、新たなセキュリティ上の考慮事項が生じます。
ベータ機能: Code Mode Security は現在ベータ版です。機能と API は変更される可能性があります。
Edison Watch は、サンドボックス化された実行、静的解析、テイント対応のデータ追跡を組み合わせた多層防御アーキテクチャで Code Mode を保護します。
なぜ Code Mode か?
従来のエージェントは context rot に悩まされます。すべてのツール呼び出しの入力と出力は LLM のコンテキストウィンドウに追加される必要があります。多くの MCP サーバーにエージェントを接続すると、何もアクションを取る前からツール定義がトークンを消費してしまい、context rot につながります。複雑なデータ処理 (例: "これらの 20 個のファイルを要約して") では、データを移動させるだけで数十万トークンを消費することがあります。
Code Mode は、エージェントがセキュアな環境の 内部 でデータを処理するスクリプトを書くことで、この問題を解決します。LLM は最終結果のみを見るため、トークン使用量を 90% 以上削減できることが多いです。
セキュリティアーキテクチャ
Edison Watch は、エンタープライズデプロイメントで Code Mode を安全に使えるよう、3 層の防御を採用しています。
1. Deno サンドボックス (RCE 保護)
コードは厳格な権限を持つセキュアな Deno サンドボックスで実行されます。
- ネットワークアクセスなし: スクリプトは任意の HTTP リクエストを行えません。許可された MCP ツールのみを呼び出せます。
- ファイルシステム書き込みなし: スクリプトはホストのファイルシステムを変更できません。
- リソース制限: 実行時間 (90 秒)、メモリ (256MB)、出力サイズ (10MB) に固定の上限があります。
2. AST 解析 (解析可能性)
実行前に、Edison Watch はスクリプトの抽象構文木 (AST) を解析し、TypeScript の厳格なサブセット を強制します。これにより、攻撃者が悪意のある振る舞いを隠すために使う難読化技術を防ぎます。
Strict Mode: eval()、new Function()、動的インポート (例: import(variable)) といった動的機能をブロックします。コードは静的に解析可能である必要があります。
3. テイント対応 Trifecta (データ保護)
通常の "Lethal Trifecta" モデル (Private Data + Untrusted Content + External Communication の組み合わせをブロック) は、コード実行に対しては過度に厳格になる可能性があります。Code Mode は、より精緻な テイント追跡 を使用します。
"Scalpel" アプローチ
機密ツールが呼び出されたときにセッション全体にフラグを立てる代わりに、Edison Watch はスクリプト内でのデータ変数の実際の流れを追跡します。
例: Calendar の問題 エージェントが予定を確認するためにカレンダーの招待を読み取るとします。招待の本文には信頼できないコンテンツ (潜在的なプロンプトインジェクション) が含まれていますが、開始/終了時刻は安全なメタデータです。
- 通常の Trifecta: "Calendar" (Private) と "Invite Body" (Untrusted) がアクセスされた時点でアクションをブロックします - たとえエージェントが時刻のみを出力しても。
- Code Mode テイント追跡: スクリプトを解析します。コードが
console.log(event.startTime)は行うがevent.bodyを一切ログに出さない場合、Edison は信頼できないコンテンツがサンドボックスを離れていないことを認識します。アクションは許可されます。
この精度により、厳格なセキュリティ保証を維持しつつ、誤検知を減らせます。
可観測性
すべての Code Mode 実行は完全に監査されます。システムは以下を記録します。
- エージェントが生成した正確な TypeScript コード。
- 検証結果と AST エラー。
- コンソール出力と戻り値。
- どの具体的なデータパスがテイントとしてマークされたか。
これらの詳細は、セキュアな監査ログに保存されます。
運用上の制限
DoS や悪用を防ぐために、Code Mode はハード制限を強制します。
| 指標 | 上限 |
|---|---|
| 実行時間 | 90 秒 |
| メモリ | 256 MB |
| 出力サイズ | 10 MB |

