AIエージェントが送っている、 あなたのAPIキーを。
Claude CodeやCodex CLIがプロンプトを送るたびに、APIキー・パスワード・データベースURLがそのままLLMへ渡っています。Veilはローカルプロキシとして動作し、マシンの外に出る前にシークレットをマスクします。
- 127.0.0.1で動作
- クラウド中継なし
- Apache-2.0
機能
APIキーとシークレットは LLMに渡さない
Claude CodeやCodex CLIを使っていれば、環境変数・接続文字列・APIキーがリクエストのたびにLLMプロバイダーへ送られています。これがLLMプロンプト情報漏洩のリスクです。Veilはこう対処します。
プロンプトに含まれるAPIキーやシークレット
シークレットを自動検出してマスク
APIキー、パスワード、データベースURL、メールアドレス、IPアドレス。リクエストがlocalhostを出る前にVeilが検出してマスクします。
ターンをまたいで再利用されるシークレット
決定論的トークンで一貫したマスキング
同じシークレットには常に同じプレースホルダーを割り当てます。マルチターン会話でもプロンプトキャッシュでも、LLMは一貫した値で推論できます。
想定外のリクエスト形式
fail-closedで未知の形式はブロック
Veilが認識できないリクエスト形式は転送しません。サイレントに素通りすることも、平文で漏れることもありません。
管理対象が増えるという負担
ただのローカルプロセス
アカウント不要、ダッシュボードなし、クラウドなし。Veilは127.0.0.1で動き、リクエストとレスポンスの本文だけを処理します。APIキーはそのまま通過します。
対応範囲
Veilが検出・マスキングする対象
Veilはプロンプトやツール呼び出しに含まれるAPIキー・シークレット・個人情報を認識し、LLMへ送信する前にフォーマット保持型のプレースホルダーへ置き換えます。
- シークレット
APIキー · トークン · パスワード · DSN - メール
user@example.com - 電話番号
+1 555 123 4567 - IPアドレス
192.168.1.1 · 2001:db8::1 - クレジットカード
4111 1111 1111 1111 - 口座番号
銀行・金融のID - URL
https://internal.corp/api - 日付オプトイン
デフォルトでは無効 - 氏名・住所オプトイン
オプトインの意味解析
Veilを信頼できる理由
マスクされていないシークレットは 外に出ない。
送信前にシークレットをマスクし、レスポンスが返ったらローカルで復元する。それだけです。クラウド中継なし、余計なサービスなし、localhost以外への信頼は不要。
100%ローカル
Veilは127.0.0.1にバインドします。クラウド中継もリモートサーバーもなし。あなたとプロバイダーの間にあるのはローカルプロセスだけです。
解析できなければfail-closed
認識できないリクエスト形式は転送されません。Veilが確信を持てなければ、リクエストを停止します。
APIキーはあなたの手元に
Veilはプロバイダーの認証情報を保存も操作もしません。書き換えるのはリクエストとレスポンスの本文だけです。
ソースを自分の目で確認
Apache-2.0。すべてのコードが監査可能です。信頼する前に、脅威モデルとリリース成果物をご自身で確認してください。
セキュリティモデル
約束ではなく、明確な保証
Veilは小さく、ローカルで、監査可能です。何をして、何をしないかを正確に示します。
ローカルのみ
127.0.0.1にバインドします。リレーもリモートサーバーもなく、Veilは認証情報を一切保存しません。
fail-closed(フェイルクローズド)
解析エラー、検出エラー、ポリシー違反、非対応エンドポイントは、平文を転送せずリクエストをブロックします。
決定論的トークン化
同じ値はスコープ内で同じプレースホルダーに対応するため、マルチターンの文脈やプロンプトキャッシュがマスキング後も保たれます。
ローカルで復元
プロバイダーが見るのはプレースホルダーのみ。あなたのターミナル・ファイル・ツール呼び出しには実際の値が戻ります。
仕組み
エージェントを ローカルプロキシに向ける
アカウントもダッシュボードも不要。Claude CodeまたはCodex CLIの接続先を環境変数ひとつでlocalhostに向けるだけ。APIキーのマスキングはVeilが自動で行います。ツールもワークフローもそのままです。
Veilを起動
コマンドひとつでlocalhostにローカルプロキシが起動します。ここがAPIキー漏洩対策の境界線です。
$ veil proxy --addr 127.0.0.1:8788エージェントを向ける
Claude CodeまたはCodex CLIのベースURLを変更するだけ。環境変数ひとつです。
$ export ANTHROPIC_BASE_URL=http://127.0.0.1:8788あとはいつも通り
それ以外は何も変わりません。認証情報もワークフローもツールもそのまま。Veilは通信の中身をマスクするだけです。
はじめよう
コマンドひとつ で試せる。
プラットフォームを選ぶだけ。数秒でバイナリが手元に届きます。あとはエージェントをプロキシに向けるだけです。
curl -fsSL https://veil.sh/install.sh | shnpm install -g @paiartcom/veilbrew install PAIArtCom/veil/veilirm https://veil.sh/install.ps1 | iex互換性
今できること、 これから対応すること。
Veilはカバレッジを正直に示します。Claude CodeとCodex CLIのリクエストは保護対象です。対応できない形式は明示するか、fail-closedでブロックします。
対応済み(v0.1.0)
- Claude Code(Anthropic Messages)
- Codex CLI(OpenAI Responses)
- Go SDKインテグレーション
- サポート対象形式のテキスト・tool-useフィールド
近日対応予定
- OpenAI Chat Completions
- Gemini
- OCR・添付ファイル・ドキュメント解析
- リモートMCPツールトラフィック
FAQ
よくある質問
Veilを使うとAPIのレイテンシは増えますか?
localhostで動作し、リクエストとレスポンスのボディを書き換えるだけなので、オーバーヘッドはローカルの1ホップ分のみ。プロバイダーまでのネットワーク往復に比べれば無視できる程度です。
シークレットをマスクするとLLMの出力品質は変わりますか?
変わりません。Veilのプレースホルダーは決定論的かつフォーマット保持型なので、LLMは整合性のある値で推論できます。レスポンス内のプレースホルダーはローカルで元の値に復元されてからツールに渡されるため、ワークフローへの影響はありません。
VeilはプロバイダーのAPIキーを保存・参照しますか?
Veilはプロバイダーの認証情報を保存も参照もしません。リクエストとレスポンスのボディの内容のみを書き換え、APIキーはそのまま通過します。
どのAIコーディングエージェントに対応していますか?
v0.1.0ではClaude Code(Anthropic Messages)とCodex CLI(OpenAI Responses)、さらにGo SDK連携に対応。OpenAI Chat CompletionsやGeminiなどはロードマップにあります。
Veilをアンインストールするには?
環境変数を解除するだけです。Veilは単なるローカルプロセスで、アンインストールが必要なアカウント・エージェント・デーモンはありません。