
ワークフローを壊さずに、クラウドコーディングエージェントからプライベートデータ、内部インフラ、シークレットを守ります。
インストール · クイックスタート · ポリシー · モニタリング · Pi / OMP · セキュリティ
Cover は AI コーディングエージェント向けの双方向プライバシープロキシです。リクエストがマシンから送信される前に、一致した機密値をローカルで現実的かつ決定論的な代替値に置き換え、通常レスポンスおよびストリーミングレスポンス内の対応する偽の値を元の値に戻します。モデルは一貫性のあるコンテキストを取得し、エージェントとツールは実際の環境で動作し続けます。
会話をエンドツーエンドで機能させ続ける必要がある場合は、可逆的な pseudonymize または placeholder ルールを使用してください。復元が不要な場合は一方向の mask または redact ルールを、リクエストをローカルで停止する場合は block を、明示的な例外には allow を使用してください。
サポートされるクライアントには Codex、Claude Code、Cursor、Pi / Oh My Pi、および OpenAI または Anthropic 互換の SDK とルーターが含まれます。
インストーラーはお使いの OS と CPU 用のリリースをダウンロードし、公開されている SHA-256 チェックサムに対して検証し、~/.local/bin/cover にアトミックにインストールし、選択したクライアントを設定し、プロキシを起動します。
curl -fsSL https://raw.githubusercontent.com/DavidCarliez/cover/main/scripts/install.sh | bash
GoツールチェーンやGitチェックアウトは不要です。必要なのはcurl、アーカイブ展開ツール(Linux/macOSではtar、Windowsではunzip)、および検証用のsha256sum、shasum、またはopensslだけです。
ビルド済みのLinux、macOS、WindowsアーカイブとそのチェックサムはGitHub Releasesから入手できます。
非対話型インストールの場合:
curl -fsSL https://raw.githubusercontent.com/DavidCarliez/cover/main/scripts/install.sh | \
COVER_AGENTS=openai,claude bash
リリースを固定するか、環境変数を bash プロセスに適用した状態でバイナリのみをインストールします:
curl -fsSL https://raw.githubusercontent.com/DavidCarliez/cover/main/scripts/install.sh | \
COVER_VERSION=v0.1.0 COVER_SKIP_SETUP=1 bash
git clone https://github.com/DavidCarliez/cover.git
cd cover
go build -o cover ./cmd/cover
install -m 0755 cover ~/.local/bin/cover
コアバイナリにはcgo依存関係がありません。標準的なGoのクロスコンパイルが機能します:
GOOS=linux GOARCH=arm64 go build -o cover-linux-arm64 ./cmd/cover
GOOS=windows GOARCH=amd64 go build -o cover.exe ./cmd/cover
| 領域 | カバー機能 |
|---|---|
| ポリシー | allow、placeholder、pseudonymize、mask、redact、block アクションを備えた宣言的ルール |
| 現実的な置換 | IP アドレス、ホスト、ドメイン、メールアドレス、ユーザー名、パスワード、UUID、URL、エイリアス、数値識別子、IBAN、電話番号のための決定論的ジェネレーター |
| コンテキスト対応ルール | ツール結果文字列内の JSON キー、HTTP ヘッダー、Cookie、クエリパラメータとフォームフィールド、さらに正規表現と組み込み検出器 |
| 安定したアイデンティティ | インストールキーに基づく HMAC 仮名は、リクエスト、セッション、再起動をまたいで一貫性を保つ |
| マッピングの安全性 | TTL と容量制限を備えた、境界付き、セッション分離、メモリのみの可逆マッピング |
| 検査 | cover inspect は LLM に接続せずに保護された JSON をプレビューする |
| 診断 | cover doctor はポリシー、デーモンの健全性、ローカルのフェイルクローズド動作、Codex ルーティングを検証する |
| 監視 | メタデータのみの監査とモニタービュー、さらに捕捉および転送されたコンテンツの明示的なライブ専用検査 |
| プロキシ強化 | デフォルトでループバックリスナー、ボディとストリームの制限、汎用的な安全エラー、フェイルクローズドパース |
| ストリーミング互換性 | デルタイベント、ハートビート、インターリーブチャネルをまたぐ OpenAI Responses、Chat Completions、Anthropic SSE の復元、JSON セーフなツール引数 |
| Codex 互換性 | Responses API とルーター設定、圧縮チェック、不変の encrypted_content フィールド |
| オプションのセマンティックパス | ローカルの llama.cpp 検出器は、正規表現が見逃す自由形式テキストを検査できる |
cover init # write ~/.config/cover/config.yaml
cover start --detach # run in the background
cover doctor # verify the local setup
cover test # local redaction round trip, no network call
cover monitor # watch privacy-safe request metadata
cover init は OpenAI、Anthropic、またはカスタムアップストリームの入力を求めます。完全な
設定は configs/config.example.yaml に記載されています。
| コマンド | 目的 |
|---|---|
cover install | クライアント、シェルエクスポート、バックグラウンドプロキシを設定する |
cover init | 設定ファイルを作成する |
cover start [--detach] | Cover をフォアグラウンドまたはバックグラウンドで起動する |
cover stop | バックグラウンドプロセスを停止する |
cover restart | バックグラウンドで再起動する |
cover status [--json] | プロセス、リスナー、およびマスクされたアップストリームのステータスを表示する |
cover version [--json] | ビルドバージョン、コミット、日付を表示する |
cover update [--version vX.Y.Z] | 検証済みの GitHub リリースをインストールする。実行中であれば再起動してヘルスチェックを行う (Linux/macOS) |
cover update --rollback | 設定を保持したまま、以前のバイナリを復元する |
cover env | 設定済みクライアント用のシェルエクスポートを出力する |
cover test | 合成ローカルのマスキングと復元のチェックを実行する |
cover inspect request.json | Cover が転送する内容を正確にプレビューする |
cover doctor [--json] | 設定、プライバシー、デーモン、ルーティングのチェックを実行する |
cover monitor | 最近の安全なメタデータを表示し、新しいイベントを追跡する |
cover monitor --show-content | 1 行につき 1 組の機密な元の値 → 置換値を表示する。完全なイベントには --json を追加する |
cover models pull | オプションのローカル検出ランタイムとモデルをダウンロードする |
cover models status | ローカル検出のインストールと設定を報告する |
cover completion | シェル補完スクリプトを生成する |
Cover を停止してもクライアント設定は変更されません。Cover を指したままのクライアントは、 Cover が再起動されるか、クライアントが直接のプロバイダーまたはルーターを指すように戻されるまで、 接続に失敗します。
stop、restart、update は Cover であるプロセスにのみシグナルを送ります。
リスナーがループバック専用の /__cover/health エンドポイントでそのプロセスを報告するか、
プロセスの実行ファイル名が cover でなければなりません。プロセス ID が別のプログラムに
属するようになったものを含め、古い pidfile は削除され、Cover のポート上の別のプログラムが
停止されることはありません。
停止と再起動は、最大 30 秒間アクティブなリクエストをドレインします。これは
shutdown_timeout_ms で設定できます。SIGTERM が存在しない Windows では、cover stop
はドレインせずにプロセスを終了します。その期限を過ぎると、残りの接続は閉じられます。
再起動中は新しい接続が一時的に失敗する可能性があります。これはゼロダウンタイムの
ハンドオーバーではありません。cover status と cover doctor は、実行中のデーモンが
インストール済みバイナリと異なる場合に報告します。
Linux/macOS では、cover update は公開されたリリースを HTTPS 経由でダウンロードし、
リリースのチェックサムに対して SHA-256 を検証し、候補を検証し、ロールバック用に現在の
バイナリを保存します。再起動したデーモンがヘルスチェックに失敗した場合、Cover は以前の
バイナリを復元し、その再起動を試みます。設定は保持されます。Windows ユーザーは Cover を
停止し、リリースインストーラーを再実行する必要があります。更新は公開されたリリースを
使用し、main 上の未リリースのコミットは使用しません。チェックサムは破損したダウンロードを
検出しますが、独立した署名ではありません。
組み込みの正規表現検出は、AWS と GCP のキー、GitHub、GitLab、Slack、Stripe、Anthropic の
トークン、秘密鍵ブロック、JWT、明示的な汎用シークレット代入、メールアドレス、SSN、
クレジットカード、電話番号、IBAN をカバーします。裸の OpenAI sk-... 値は、意図的に
専用の組み込みカテゴリにはなっていません。環境で必要なら明示的なルールを定義してください。
組み込み検出器は単一行内で一致します。電話番号、SSN、カード番号、または secret = value
代入が行をまたいで分割されている場合は検出されません。
ルールは ~/.config/cover/config.yaml の rules の下にあります。各ルールは
pattern、detector、keys、headers、cookies、query_params、form_fields の
いずれか 1 つのセレクターを使用します。1 つのルールでセレクターの種類を組み合わせないでください。
rules:
password_fields:
keys: [password, passwd, pwd, passphrase, user_password, database_password]
category: password
action: pseudonymize
generator: password
priority: 220
ipv4_addresses:
detector: builtin_ipv4
category: ip_address
action: pseudonymize
generator: ipv4
priority: 100
customer_name:
pattern: '(?i)\bNIKE\b'
category: customer
action: pseudonymize
generator: alias
priority: 80
forbidden_secret:
pattern: '(?i)secret\s*[:=]\s*(?P<value>[^\s,;]+)'
action: block
priority: 200
キーセレクタは短い文字列を含む完全な値を保護します。例えば、
{"password":"admin"} は、すべての
{"username":...} をパスワードとして扱うことなく保護されます。選択された配列またはオブジェクトは、
そのポリシーをスカラー子孫に適用します。優先度の高い子ルールがそれを上書きできます。
名前付き (?P<value>...) グループを使用すると、正規表現でキャプチャされた値のみを置換できます。
いずれかのルールが値を保護すると、Cover はその同じ値が再び現れる場所ならどこでも、同じアクションと同じ決定論的な置換で保護します: