mvanhorn/agentcookie
Your agent runs on a Mac that isn't your daily driver. agentcookie keeps its sessions in sync with the Mac you actually browse on, continuously, encrypted over Tailscale, so OpenClaw, Hermes, or any other agent runtime wakes up authenticated. macOS, peer-to-peer, no cloud middleman.
agentcookie – MacからLinuxエージェントへChrome Cookieを同期
機能概要
- macOS上のChrome Cookies SQLiteファイルを継続的に監視し、macOS Keychainを使用して復号化し、暗号化されたTailscaleチャネル経由で自動化エージェントが実行されているLinuxマシンに変更を送信します。
- Linux側では、CookieはChrome DevTools Protocol (CDP) を介してChromeのメモリ内ストアにライブ注入されるため、Puppeteer、Playwright、または生のCDP接続を使用するスクリプトは、Mac上と同じログインセッションを参照できます。
- Cookie文字列の手動コピー&ペーストや追加のログイン手順は不要で、Linux上のChromeのディスク内SQLiteデータベースを書き換える必要もありません。
なぜ重要か
- 多くのAI/自動化エージェント(Grok Bot、カスタムボット、スクレイピングツールなど)は、ヘッドレスLinux VM上で実行されます。これらは、デスクトップで既にログインしているサイトで、ログイン済みユーザーとして動作する必要があることがよくあります。agentcookieは、そのブリッジを安全かつ無人で自動化します。
- AES-256-GCM暗号化とTailscaleペアリング儀式から導出されたピアごとのキーを使用するため、意図したシンクのみがCookieを読み取ることができます。
- ソース側ではmacOS固有の保護(Keychain、Chromeのアプリバインド暗号化)を処理し、シンク側では安全な注入のためにCDPを活用します。
仕組み(高レベルフロー)
- ソース (macOS) –
agentcookie source --watchがChrome Cookiesファイルを監視し、読み取り専用で読み込み、Keychainで復号化し、設定可能なCookieポリシーを適用し、データを密封された封筒にラップしてTailscaleネットワーク上のHTTPS経由で送信します。 - シンク (Linux) –
agentcookie sinkがTailscaleアドレスでリッスンし、封筒を復号化し、独自のポリシーを再適用し、CDP経由でStorage.setCookiesを呼び出してChromeのライブストアにCookieを配置します。 - ライブCDP注入 – Linux上でSQLiteの書き換えは不要です。Cookieは新しいタブやヘッドレスブラウザのコンテキストに即座に表示されます。
主要コンポーネント
- ペアリングウィザード – ワンタイムコードとURLを生成します。双方はTailscale tailnet経由で公開鍵を交換します。
- ポリシーファイル –
blocklist.yaml(Linuxではデフォルトで空、つまり何も送信しない)またはallowlist.yamlで、同期するドメインを制限します。 - 設定 –
~/.config/agentcookie/下のYAMLファイルで、ソース、シンク、およびオプションのマルチシンク設定を行います。 - CLIコマンド –
wizard install、pair、source、sink、doctor、status。
典型的なセットアップ
- MacとLinuxの両方にバイナリをインストール(または
go install)します。 - Macでソースウィザードを実行し、ペアリングコードをメモします。
- Linuxマシンでシンク設定を作成(またはmacOSシンクでウィザードを使用)し、コードでペアリングします。
--remote-debugging-port=9223を指定してLinuxでChromeを起動します(またはウィザードに既存のインスタンスを検出させます)。agentcookie sink(またはsystemdユーザーサービス)を実行し、同期が行われるのを確認します。
セキュリティ上の注意
- 通信はエンドツーエンドで暗号化されます。Tailscale WireGuardチャネルがさらなるレイヤーを追加します。
- Linuxシンクはデフォルトで空のブロックリストを使用するため、明示的に許可しない限り何も送信されません。
- Google/Workspaceで使用されるデバイスバインドセッション資格情報 (DBSC) は、シンク上では短期間しか機能しません。Linux Chromeで一度Googleにログインする必要があります。
- プレーンテキストのサイドカーファイル (
~/.agentcookie/cookies-plain.db) はCookieを暗号化せずに保存します。これは一時的なキャッシュとして扱い、主なセキュリティ保証はライブCDP注入にあります。
制限事項
- 一方向同期のみ (Mac → Linux)。逆方向同期は実装されていません。
- DBSCで保護されたCookieはシンク上で急速に期限切れになります。ローカルで再認証する必要があります。
- ライブキーローテーションはまだありません。新しいキーを生成するにはウィザードを再実行する必要があります。
- マルチシンクのファンアウトはサポートされていますが、すべてのシンクが完全なCookieセットを受け取るため、信頼が必要です。
詳細情報
- アーキテクチャの詳細:
docs/architecture.md - ワイヤフォーマット仕様:
docs/protocol.md - 脅威モデル:
docs/threat-model.md - クイックスタートガイド:
docs/quickstart.md
ライセンス – MIT。
agentcookie は、ヘッドレスLinuxボックスで自動化エージェントを実行しており、手動のCookie処理なしで既存のChromeログイン状態を再利用したいユーザーにとって実用的なツールです。データは暗号化され、プライベートなTailscaleネットワーク上のマシンに限定されます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト