オープンソース · AIコーディングエージェント向けAPIキー漏洩対策

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
  • メール
    [email protected]
  • 電話番号
    +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が自動で行います。ツールもワークフローもそのままです。

プロキシを実行
  1. Veilを起動

    コマンドひとつでlocalhostにローカルプロキシが起動します。ここがAPIキー漏洩対策の境界線です。

    $ ./bin/veil proxy --addr 127.0.0.1:8788
  2. エージェントを向ける

    Claude CodeまたはCodex CLIのベースURLを変更するだけ。環境変数ひとつです。

    $ export ANTHROPIC_BASE_URL=http://127.0.0.1:8788
  3. あとはいつも通り

    それ以外は何も変わりません。認証情報もワークフローもツールもそのまま。Veilは通信の中身をマスクするだけです。

はじめよう

コマンドひとつ で試せる。

バイナリをダウンロードして環境変数をひとつ設定するだけ。AIエージェントのAPIキー漏洩対策がすぐに始まります。元に戻したいときは変数を解除するだけです。

リリースをダウンロード

Veilを起動し、変数をひとつ設定して、Claude Codeを起動。APIキーのシークレットマスキングが有効になります。

bash
$ ./bin/veil proxy --addr 127.0.0.1:8788 &
$ export ANTHROPIC_BASE_URL=http://127.0.0.1:8788
$ claude

OpenAIをアップストリームにVeilを起動し、Codex CLIを向けるだけ。APIキーのLLMへの漏洩を防ぎます。

bash
$ ./bin/veil proxy --addr 127.0.0.1:8788 --upstream https://api.openai.com
# ~/.codex/config.toml
model_provider = "veil"

ソースからビルド

Go 1.22+が必要

信頼する前に、すべての行を読めます。

bash
$ git clone https://github.com/PAIArtCom/Veil.git
$ cd Veil
$ go build -o ./bin/veil ./cmd/veil
$ ./bin/veil version

互換性

今できること、 これから対応すること。

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は単なるローカルプロセスで、アンインストールが必要なアカウント・エージェント・デーモンはありません。