資格情報プロキシ
エージェントはAPI呼び出しを行います。
エージェントが鍵を保持することは決してあってはなりません。
Clavitor Proxyは、AIエージェントと呼び出すAPIの間に配置されます。資格情報はネットワーク層で注入されるため、エージェントが実際のシークレットを確認、保存、またはログに記録することはありません。バイナリは1つ。環境変数は1つ。コードの変更はゼロです。
すでに直面している問題
環境変数内のシークレット
エージェントは環境からOPENAI_API_KEYを読み取ります。その鍵は/proc、クラッシュダンプ、CIログ、およびエージェントが呼び出すすべてのツールで参照可能です。ログの1行が漏洩するだけで、鍵は公開されてしまいます。
エージェントメモリ内のシークレット
エージェントが実行時に鍵を取得する場合でも、プロセスの実行中はメモリに保持されます。スキルが侵害されたり、プロンプトインジェクションやデバッグダンプが発生したりすれば、鍵は簡単に奪取されます。
使用内容の監査不在
APIキーが文字列として共有される場合、どのエージェントが、いつ、何のために使用したかの記録は残りません。鍵が漏洩すれば、ローテーションして祈るだけです。フォレンジック証跡はありません。
直面していないことを願う問題
ソースコード内のAPIキー
設定ファイルにハードコードされ、gitにコミットされ、チームのすべての開発者とCIランナーによってクローンされます。1つでもパブリックフォークされれば、GitHubのシークレットスキャンダッシュボードに表示されます。あるいは、もっと悪いことに、表示されないままになるかもしれません。
Slack内の資格情報
「Stripeの鍵を送ってもらえますか?」DMに貼り付けられ、永続的に検索可能になり、すべてのコンプライアンスアーカイブにエクスポートされます。Slackはボールトではありません。メール、Googleドキュメント、モニターの付箋も同様です。
各ラップトップ上の.envファイル
12人の開発者がいれば、ローテーションされることのないプレーンテキストファイルに本番環境の資格情報のコピーが12つ存在することになります。ラップトップが1台盗まれたり、~/.bash_historyが1回漏洩したり、過度に親切なバックアップツールが1つあれば、午前2時に社内すべての鍵をローテーションする羽目になります。
エージェントから資格情報を完全に切り離します。
プロキシはエージェントとAPIの間に配置されます。エージェントは、シークレットが入るべき場所に参照(clavitor://OpenAI/key)を記述します。プロキシはローカルでそれを解決し、実際の資格情報をHTTPSリクエストに注入して転送します。エージェントのログにはプレースホルダーが表示されます。APIは鍵を受け取ります。その間のどこにも保存されません。
環境変数は不要。メモリ内にシークレットなし。コマンドラインに資格情報なし。エージェントは鍵を知らないため、鍵を漏洩させることも、騙されて鍵を明らかにすることもありません。
$ export HTTPS_PROXY=http://127.0.0.1:1983
$ curl -H "Authorization: Bearer clavitor://OpenAI/key" \
https://api.openai.com/v1/chat/completions
# The proxy resolved the placeholder. The agent never saw sk-proj-abc123.
# Neither did the logs, the crash dump, or the conversation history.HTTPS呼び出しを行うすべてのエージェント(Claude Code、Codex、OpenClaw、CrewAI、LangChain、カスタムスクリプト)で動作します。環境変数を1つ設定するだけで、エージェントのAPI呼び出しがプロキシを経由します。SDKもプラグインもコードの変更も不要です。
内部の仕組み
リクエストごとのローカル復号
プロキシはボールトから暗号化された資格情報を取得し、デバイス上で復号します。プレーンテキストは1回のHTTPリクエストの間だけプロセスメモリに存在し、その後消去されます。キャッシュもディスクへの書き込みも行われません。すべてのリクエストで新たに復号されます。
フィールドからヘッダーへのマッピング
Bearerトークン、APIキー、Basic認証など、プロキシはボールトのフィールドラベルを適切なHTTPヘッダーに自動的にマッピングします。あるいは、エージェントがclavitor://参照を使用して正確なフィールドを指定することもできます。いずれの場合も、エージェントが資格情報を見ることなく、適切な場所に配置されます。
アクセス範囲、レート制限、監査
ボールトはアクセス範囲の境界とレート制限を強制します。あまりにも多くの異なる資格情報にアクセスするエージェントは自動的にロックされます。すべてのアクセスがログに記録されます。プレースホルダーにエージェントID(clavitor://agentid@Entry/field)を含めることで、共有プロキシ経由でのエージェントごとの監査証跡とレート制限を実現します。
デプロイメント
バイナリは1つ。エージェントのサイドカーとして動作します。ネットワークインフラの変更は不要です。
シングルエージェントホスト
バイナリをダウンロードし、登録トークンを使用してclavitor-proxy initを実行し、エージェントにHTTPS_PROXYを設定します。これで完了です。デフォルトでは、プロキシは127.0.0.1:1983にバインドされます(1つのエージェントに対するサイドカー)。1つのプロキシがプライベートネットワーク上で複数のエージェントに対応する場合は、CLAVITOR_PROXY_LISTENを設定して別の場所にバインドします。
マルチエージェントホスト
各エージェントは、独自のサイドカー設定ファイルを持つバイナリのコピーを取得します。各コピーには独自のアクセス範囲、独自のレート制限、独自の監査証跡があります。エージェントAはエージェントBの資格情報を見ることはできません。設計による分離です。
クラウドで実行されるすべての資格情報プロキシ(自社製か他社製かにかかわらず)は標的となります。プロキシを侵害すれば、すべての顧客の資格情報を入手できます。これは理論上のリスクではありません。すべてのCredential-Proxy-as-a-Serviceのビジネスモデルそのものです。
Clavitorのプロキシはお客様のインフラ上で実行され、ローカルで復号します。資格情報は1回のリクエストの間だけプロセスメモリに存在します。プレーンテキストの鍵を保持するクラウドサービスはありません。シークレットを提供するAPIエンドポイントもありません。侵害されるものは何もありません。
エージェントはすでにAPI呼び出しを行っています。
エージェントを適切な範囲内に留めます。
お客様のボールト、お客様のアクセス範囲、お客様の監査証跡。プロキシは、エージェントのコードを一切変更することなく、ネットワーク層の強制ポイントを追加します。