agentcookie v1.0.0
agentcookie v1.0.0
Continuous Mac to Linux cookie sync over Tailscale. Cookie-auth after live CDP inject; Google/Workspace need local sign-in.
Highlights
- Mac to Linux sync: Your Mac's Chrome sessions flow to a Linux agent runtime (Grok Bot, cloud VM, homelab server) via live CDP injection over Tailscale
- Live CDP injection: Cookies go directly into Chrome's in-memory store via
Storage.setCookies- no SQLite write, no Keychain, no libsecret - Extra Chrome profile discovery: Mac profiles (Profile 1, Profile 2, etc.) are auto-discovered and decrypted; extra-profile cookies flow to sidecar, adapters, and live CDP alongside Default profile cookies
- Tailscale-only transport: AES-256-GCM sealed envelopes over your tailnet's WireGuard channel
- Security-by-default: Linux sinks with missing policy ship nothing; explicit
policy: blocklistrequired for sync-all
Install
Download from the assets below and verify against checksums.txt:
| Platform | Archive |
|---|---|
| Linux amd64 | agentcookie_1.0.0_linux_amd64.tar.gz |
| Linux arm64 | agentcookie_1.0.0_linux_arm64.tar.gz |
# On Linux
curl -LO https://github.com/mvanhorn/agentcookie/releases/download/v1.0.0/agentcookie_1.0.0_linux_amd64.tar.gz
sha256sum -c checksums.txt --ignore-missing
tar -xzf agentcookie_1.0.0_linux_amd64.tar.gz
sudo mv agentcookie /usr/local/bin/Or build from source: go install github.com/mvanhorn/agentcookie/cmd/agentcookie@v1.0.0
See the README for the full how-to.
Honest limits
- Linux SQLite write is 0: Expected. Success is the
live_cdp: injected N cookies into M context(s)line. - Omitted policy ships nothing: On Linux, missing
blocklist.yamlor omittedpolicy:means allowlist-empty. Writepolicy: blocklistwithdomains: []for sync-all on a trusted box. - Google/DBSC cookies: Need local sign-in on the sink. Copied cookies expire in minutes.
- Linux extra-profile SQLite stays unread: Discovery and doctor/status name stores, but Chrome SQLite decryption requires macOS Keychain (no libsecret). Sidecar/plaintext and live CDP remain the Linux path.
- CDP port is loopback-only: Same-user processes can attach to
127.0.0.1:9223and read injected cookies. This is the same-user trust boundary. - Cookie values never logged: Cookie values do not appear in logs or doctor output.
Security
- Tailscale 100.x bind required on Linux sinks; refuses to start on 0.0.0.0
- AES-256-GCM sealed envelopes with pairing-derived 32-byte keys
- Per-IP rate limiting on the pair endpoint (5 attempts before 429)
- Persistent replay defense via sequence tracking
Support
Run agentcookie doctor --json on both machines and include the output when reporting issues.
What's in this release
What's Changed
- fix(cmux-sync): stop SecurityAgent prompt storm on go install builds by @henkyermontero in #107
- fix(keychain): close CGO dialog leak, lock misclassification, and enable side-effect (follow-up to #107) by @mvanhorn in #108
- build: inject version via ldflags in make build/install by @spiky02plateau in #109
- fix: drop stale "v0.12 closed beta" framing from doctor Sealing output by @SeanGearin in #111
- feat(livecdp): add Linux receive path with CDP attach/inject and import command by @mvanhorn in #113
- fix(cli): report live CDP and stop installing LaunchAgents on Linux by @mvanhorn in #114
- feat: auto-discover extra Chrome profiles by @mvanhorn in #115
- feat: paste extra-profile cookies through existing adapters by @mvanhorn in #116
- feat: README how-to + 1.0 release pipeline preparation by @mvanhorn in #117
New Contributors
- @henkyermontero made their first contribution in #107
- @spiky02plateau made their first contribution in #109
- @SeanGearin made their first contribution in #111
Full Changelog: v0.17.1...v1.0.0