Vercelは、AIエージェント内の各ツールが明示的に宣言したシークレットのみを受け取ることを強制する「scoped tool context(スコープ付きツールコンテキスト)」機能を備えたAI SDKのバージョン7をリリースしました。露出を制限することで、開発者はサードパーティ製ツールが環境に保存されているすべての認証情報を誤って参照してしまうのを防ぐことができます。
なぜこの変更が重要なのか
AIエージェントは、注文照会、チケット作成、決済処理など、それぞれが独自のAPIキーやURLを必要とする複数の外部サービスを組み合わせることがよくあります。よくある手抜きの手法は、すべてのツールに process.env オブジェクト全体を渡してしまうことです。
execute(input, { context: process.env })
このパターンは「暗黙的な権限の拡大」を引き起こします。新しいツールを追加すると、コードレビューのフラグが立つことなく、データベースのパスワードや決済トークンを含む既存のすべてのシークレットへのアクセス権が即座に付与されてしまいます。そのリスクは、侵害されたツールやバグのあるツールが、本来渡されるべきではなかった認証情報を突然漏洩させてしまうことです。
scoped tool context の仕組み
SDK 7では、ツールはcontext schema(コンテキストスキーマ)——つまり、必要とする正確なフィールドをZodベースで定義したもの——を宣言します。エージェントがツールを呼び出す際、呼び出し側は宣言されたフィールドのみを含む toolsContext オブジェクトを供給します。SDKは実行前にその形状を検証し、不足しているキーや余分なキーがある場合はエラーが発生します。
最小限のデモでは、要件が異なる2つのツールを示しています。
- lookupOrder – 内部の注文サービスを呼び出すために
baseUrlが必要。 - createTicket – サポートチケットを作成するために
supportTokenが必要。
各ツールは、単一の必須キーをリストした contextSchema をエクスポートします。エージェントが実行される際、以下が渡されます。
{
lookupOrder: { baseUrl: "https://orders.internal" },
createTicket: { supportToken: "s3cr3t-token" }
}
lookupOrder は baseUrl のみを参照し、createTicket はそれに触れることはありません(その逆も同様です)。SDKは実行時にこの境界を強制し、隠れた依存関係を、レビュアーが監査可能な明示的な機能リストへと変えます。
セキュリティ上のメリット
- データ露出の制限 – 認証情報は必要な場所にのみ留まります。
- コンテキストの検証 – フィールドの不一致や不足がある場合、実行が中断されます。
- 機能の明示化 – レビュアーは各ツールが何にアクセスできるかを正確に確認できます。
- 影響範囲(blast radius)の縮小 – ツールが侵害された場合でも、攻撃者が取得できるのはそのツールに許可されていたシークレットのみです。
この機能は、従来のサンドボックス化に代わるものではありません。開発者は引き続き、ログの難読化、ネットワークの送信制御、定期的なトークンのローテーションを行う必要があります。スコープ付きコンテキストは境界線であり、部屋を密閉するものではありません。
開発者が調整すべき点
- すべてのツールにスキーマを定義する – SDKに同梱されているZodライブラリを使用します。
- 限定的な
toolsContextを渡す – 全てを網羅するprocess.envの使用を避けます。 - 既存のエージェントを見直す – ツール呼び出しから削除できるシークレットを特定します。
- 自動テストを追加する – 余分なデータが注入されたときにコンテキスト検証が失敗することを確認します。
クイックスタートは以下の通りです。
mkdir scoped-tools && cd scoped-tools
npm init -y
npm install ai zod
npm install -D typescript tsx @types/node
demo.ts を作成し、各ツールの contextSchema を宣言して、tsx demo.ts で実行します。ツールが要求していないシークレットを渡そうとすると、SDKはエラーをスローします。
反論
チームによっては、追加のスキーマ定義がボイラープレートを増やし、プロトタイピングを遅らせると主張するかもしれません。それは事実ですが、コストはツールごとに数行程度とわずかであり、統合されるサービスが増えるほどセキュリティ上の見返りは大きくなります。決済データや個人情報を扱う環境では、このトレードオフを無視することは困難です。
今後の注目点
- 採用指標 – 早期導入者からは、シークレット漏洩事案が減少しているとの報告があります。
- コミュニティツール – 設定ファイルからコンテキストスキーマを自動生成するプラグイン。
- 将来のSDKリリース – Vercelがスコープ付きコンテキストをネットワーク権限やレート制限のキャップまで拡張する可能性を示唆しています。
すでにVercelのSDKを使用してAIエージェントを構築している場合は、まず現在の process.env の使用状況を監査することから始めてください。すべてのツール呼び出しから削除できる単一の値を特定し、一括指定のパターンをスコープ付きの toolsContext に置き換えます。その結果、AIエージェントの強力な柔軟性を損なうことなく、より強固なセキュリティ体制を実現できます。
