セキュリティモデル
trustless が保証すること
認証情報の値がLLMコンテキストに入らない
run: 環境変数としてサブプロセスにのみ注入、出力はスキャン・Redactproxy: プロキシプロセス内部で置換、agent はAPI応答のみ見えるsecret get: 値を出力するが明示的な呼び出しが必要(通常ワークフローでは使われない)
コマンド引数スキャン(
--scan-args)- サブプロセス起動前に全コマンド引数をスキャン
- 認証情報パターンや注入値を検出したら exit code 3 でブロック(fail closed)
- エージェントが
curl -H "Authorization: Bearer sk-..."のように引数に認証情報を埋め込むのを防止
ポリシーエンジン — コマンド単位のアクセス制御
policy.default.denied_commands: 危険なコマンドをグローバルに禁止(例:sh,bash)policy.<key>.denied_commands: 認証情報ごとに特定コマンドを禁止- Fail-closed: ポリシー違反は exit code 3 でブロック
サブプロセス出力サニタイズ
- デフォルトパターン: GitHub tokens, OpenAI keys, xAI keys, AWS keys, Bearer tokens 他
- 注入値自体もパターンスキャン: サブプロセスが認証情報をエコーしても Redact
- カスタムパターンは設定ファイルまたは
--sanitize-policyで追加
最小攻撃表面
- プロキシはデフォルトで
127.0.0.1のみ待受 - Unixソケットモード対応(ファイルパーミッション制御)
- MITMプロキシはホスト名ごとにエフェメラル証明書(24時間有効)
- 単一静的バイナリ、ランタイム依存無し(既存の
pass+gpgストアを読む。bitwardenバックエンドは追加でbwCLI が必要)
- プロキシはデフォルトで
ブローカープロセス内に認証情報を永続化しない
- 認証情報はオンデマンド解決、サブプロセス終了後に解放
- HTTPプロキシはアクティブなリクエスト処理中のみメモリに保持
v1 で対応していないこと
- 動的/ローテーション認証情報 — pass store は静的。ローテーションは外部で
- 完全な監査証跡 — 基本ログのみ。SIEM連携は将来対応
- ハードウェアバックアップ鍵 — GPGキーリングのセキュリティに依存
- HTTPS MITM CA管理 — MITMプロキシはCA証明書を生成するが、OSのトラストストアへのインストールはユーザー作業