Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Repository files navigation

Browser Cookie Bridge cookie logo

Browser Cookie Bridge

Move signed-in sessions locally—or explicitly upload one to Browserless Cloud.

Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Comet · ChatGPT Codex and experimental Cursor browser import · encrypted Grok Bot .bcbx export · optional Browserless authenticated profiles.

macOS 13.5+ Swift 6 Node.js 24+ Homebrew Cask browser-cookie-bridge on npm Local-first, cloud optional GitHub stars Browser Cookie Bridge on Product Hunt Join the Browser Cookie Bridge Windows waitlist MIT License

Install · Homebrew · DMG · npm · How it works · Security · Contribute · Report a bug · Product Hunt · Windows waitlist · Support

Download for Apple silicon · Download for Intel


Browser Cookie Bridge app preview

Version 1.5.2: Grok Bot .bcbx bundles embed the decryption key, so import needs no passphrase—treat the file as credentials because anyone with it can decrypt the cookies. Version 1.5.1 restored the Product Hunt launch link. Version 1.5.0 added experimental Cursor browser import and encrypted Grok Bot .bcbx export. Cursor is destination-only and currently imports cookie sessions into its dedicated browser partition. Attach the .bcbx file to any Grok Bot and paste the prompt; the bundled importer decrypts automatically. Cookie values must never be logged or pasted into chat. The optional Codex restart flow from 1.4.0 is unchanged and remains off by default.

Why Browser Cookie Bridge

Signing into the same sites across several browsers is repetitive. Export files are awkward, password managers do not move active sessions, and embedded app browsers do not always offer an import button.

Browser Cookie Bridge gives those browser profiles a small, native control panel. Local browser, Codex, and Cursor transfers stay on the Mac. Grok Bot uses an encrypted transfer file with an embedded decryption key that you attach yourself. If you explicitly select Browserless Cloud and click Upload, the app can instead send authenticated profile state to your own Browserless account.

Windows waitlist

Browser Cookie Bridge currently ships for macOS. A separate Windows app is being explored, with demand guiding whether it moves into active development. If you use Windows, join the early-access waitlist and tell us which browsers and transfer paths matter to you.

Features

  • 🍪 Cookie and session transfer — cookies are enabled by default, including supported domain, path, expiry, security, SameSite, and partition attributes.
  • 🗃️ Optional full site data for Codex — replace Codex's compatible Local Storage, IndexedDB, Session Storage, service-worker, and related origin stores from a closed source profile, with backup and rollback. Off by default.
  • 🌐 Seven Chromium browsers — Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Perplexity Comet can be sources or destinations.
  • ChatGPT Codex and experimental Cursor import — merge cookie sessions into either app's built-in browser; Codex also supports optional history and full site data. Both are destination-only. Cursor import is experimental: it writes only to Cursor's dedicated Partitions/cursor-browser profile and refuses unknown schemas.
  • 🤖 Encrypted Grok Bot transfer (.bcbx) — export cookie sessions into a local encrypted bundle with an embedded decryption key and bundled importer. The destination tile uses the official Grok Bot app icon. Attach the file to any Grok Bot; the importer runs on the cloud computer only. Manual only.
  • 🔁 Optional Codex restart — manual Sync can force quit a running Codex instance and reopen it only after a successful local transfer; off by default.
  • 🔄 Optional two-app restart — Full site data can force quit the selected source browser and Codex, then reopen only the apps that were running after a successful transfer; off by default.
  • ☁️ Optional Browserless upload — create or refresh a Browserless authenticated profile with cookies, local storage, and IndexedDB; see a local size preflight, live progress, cancellation, and post-upload verification.
  • 🕘 Background automation — sync when you sign in, at a fixed daily time, or whenever you choose.
  • Native menu-bar app — closing the window removes the Dock icon while the helper continues running.
  • 🧯 Backup and rollback — the destination app browser's database is backed up, modified on a separate copy, integrity-checked, and restored if replacement fails.
  • ⬆️ Built-in updates — checks for GitHub releases, verifies the DMG checksum, installs in place, and relaunches the app.
  • 🔒 Local-first — local paths use no account, analytics, cookie logs, or remote relay; Grok Bot writes an encrypted file you attach yourself; the separate Browserless path runs only after explicit selection and confirmation.

What it transfers

Data Support Notes
Cookies and sessions ✅ Default Transfers supported cookie values and attributes
Full site data → Codex Optional Replaces compatible origin storage from a closed Chromium profile; backs up Codex first
Encrypted Grok Bot export Manual Cookie sessions only, written to a local .bcbx file; history and full site data are excluded
History URLs ◐ Optional Supported for browser and Codex targets; excluded for Cursor and Grok Bot. Original visit times and page titles cannot be preserved
Local storage and IndexedDB ◐ Optional Full site data into Codex, or an explicit Browserless authenticated-profile upload
Passwords — Never Chromium extensions cannot read the browser password store
Bookmarks, autofill, payments — Never Not requested or accessed
iCloud Keychain — Never Remains completely separate

Some websites bind sessions to a specific device or browser and may ask you to sign in again after a transfer.

Requirements

  • macOS 13.5+
  • A supported Chromium browser as the source, plus ChatGPT Codex, Cursor, Grok Bot, another supported browser, or optional Browserless Cloud as the destination

The DMG is self-contained. Node.js 24+ and Xcode Command Line Tools are required only for npm or source installation.

Installation

Via Homebrew — recommended

brew install --cask apoorvdarshan/tap/browser-cookie-bridge

Homebrew selects the correct Apple-silicon or Intel DMG, verifies its SHA-256 checksum, and installs the signed and notarized app into /Applications.

Download a DMG — recommended

Open the DMG, drag Browser Cookie Bridge onto Applications, then open it from Applications. Current DMGs are checksum-verified, Developer ID-signed, and Apple-notarized for a standard macOS first-launch experience. The app does not require Node.js, Xcode, Terminal, or an administrator password.

Via npm

Run the published package directly:

npx browser-cookie-bridge install-app

No administrator password is needed. The app is built from source on your Mac and installed in your user Applications folder. If a signed /Applications/Browser Cookie Bridge.app already exists, the CLI preserves it instead of replacing its Developer ID signature with an ad-hoc local build; use the app's built-in updater for signed releases.

All installation methods use the same bundle identifier and settings under ~/Library/Application Support/BraveCodexCookieSync. Homebrew and the DMG install the canonical system Applications copy. Installing either after npm does not create a separate product identity: a stale matching user Applications copy is moved to Trash on launch, and future updates replace the same app.

View browser-cookie-bridge on npm →

From source

git clone https://github.com/apoorvdarshan/browser-cookie-bridge.git
cd browser-cookie-bridge
npm test
npm run build:app

The final command compiles the native SwiftUI app, enables Open at login, Sync at login, and the menu-bar helper, then launches it. A first install uses ~/Applications/Browser Cookie Bridge.app without requesting administrator access. If an existing signed /Applications/Browser Cookie Bridge.app is present, the CLI keeps that system copy canonical and leaves app updates to the signed-DMG updater. Developers who intentionally need to replace it with a local ad-hoc build can pass --replace-system-from-source. Daily sync stays off until you enable it.

Setup

Browser → ChatGPT Codex or Cursor

No browser extension is needed for this path.

Cursor support is experimental and currently limited to cookie sessions in its dedicated browser partition. The importer validates the audited Cursor schema and fails closed if Cursor changes it.

  1. Select a source browser and ChatGPT Codex or Cursor browser as the destination.
  2. Quit the destination app completely. For Codex, you can instead enable Restart Codex automatically. Closing only the app's browser panel is not enough.
  3. Choose Cookies. For Codex, you can also choose History URLs and Full site data. Both are excluded for Cursor until its other browser stores can be validated safely.
  4. Press Sync now, then reopen the destination app after the success message.

An open destination app blocks the transfer. The optional Restart Codex automatically setting applies only to a manual Codex sync: it force quits Codex, waits for its database to close, and reopens Codex only after the transfer succeeds. Cursor must be quit manually. Scheduled and login syncs never force quit either app.

Browser → Grok Bot (encrypted .bcbx)

No browser extension is needed for this path.

Grok Bot cannot receive a local database merge. The app writes an encrypted transfer file that you attach to any Grok Bot.

  1. Select a source browser and Grok Bot as the destination. The tile uses the official Grok Bot app icon.
  2. Keep Cookies on. History URLs and Full site data are excluded from Grok Bot transfer files.
  3. Optionally limit the export with Only these domains. Leave it blank to include every readable cookie.
  4. Press Create transfer file and choose where to save GrokBot-Import.bcbx.
  5. The result sheet shows a sensitivity warning and the prompt to paste. Use Reveal file or Copy prompt. Do not paste cookie values into chat.
  6. Attach the .bcbx file to any Grok Bot and paste the prompt. The bundled importer decrypts automatically—no separate key entry.

The bundle is a zip-compatible .bcbx file containing manifest.json, encrypted payload.enc, decryption.key, import.mjs, and PROMPT.txt. Cookies are encrypted with AES-256-GCM using a scrypt-derived key; the same key is stored in decryption.key inside the bundle so the importer can decrypt without user input. Treat the file as credentials—anyone with the bundle can read the cookies. The file is written with user-only permissions (0600). Daily sync and Sync at login never create Grok Bot bundles.

On the Grok Bot cloud computer the bundled importer:

  1. Expects you to unzip GrokBot-Import.bcbx and run node import.mjs.
  2. Reads the embedded decryption key and decrypts the payload automatically. Do not print cookie names or values.
  3. Injects cookies into the cloud browser and reports only how many cookies were imported.
  4. Deletes the unzipped files and the bundle copy.

Browser → browser

Browser-to-browser transfers use a small unpacked extension at each selected endpoint.

  1. Run browser-cookie-bridge setup --no-schedule or use the app's extension setup action.
  2. Open the extensions page in both browsers and enable Developer mode.
  3. Choose Load unpacked and select the generated extension-<browser> folder for each endpoint.
  4. Keep both browsers open, select the same endpoints in the app, then press Sync now.

Generated extensions live under ~/Library/Application Support/BraveCodexCookieSync/ and contain a random, user-only local broker token. Do not share those folders.

Browser → Browserless Cloud (optional)

This path uses the official Browserless CLI and is deliberately separate from local sync.

  1. Select Browserless Cloud as the destination.
  2. Enter your Browserless API token, cloud profile name, region, and optional domain allowlist. The token is stored in macOS Keychain; it is never written to the app configuration or command arguments.
  3. Quit the selected source browser so its profile can be copied consistently.
  4. Review the cloud warning and click Upload now.

The upload creates the named Browserless profile the first time and refreshes it on later runs. It may contain cookies, local storage, and IndexedDB; history and saved passwords are excluded. The app measures the profile, IndexedDB, local storage, and available disk space locally before capture. Progress and elapsed time remain visible, Cancel upload terminates the isolated capture process group, and the dedicated temporary workspace is removed after success, failure, timeout, or cancellation.

Browserless currently caps the serialized authenticated-profile artifact at 2 MB. A large on-disk IndexedDB does not mean all of it will be uploaded: the official CLI's --auto-fit behavior drops the heaviest origins until the artifact fits while keeping cookies. Browser Cookie Bridge reports those omissions in the final result and verifies that the named cloud profile can be read back after upload. Use the domain allowlist when you need specific sites or want a faster, smaller capture.

Browserless uploads never run from Daily sync or Sync at login. Browser Cookie Bridge disables Browserless CLI telemetry for this integration. Comet is not currently supported by the Browserless capture CLI. The default cloud timeout is 15 minutes; --timeout can override it.

The official CLI records the Browserless upload-disclaimer acceptance timestamp in ~/.browserless/config.json. Browser Cookie Bridge does not store its API token there.

Usage

Control What it does
Export from Selects the browser whose data will be read
Import into Selects a different browser, ChatGPT Codex, experimental Cursor browser, Grok Bot, or optional Browserless Cloud
Cookies Moves cookies and supported session attributes; on by default
History URLs Adds visited URLs without their original timestamps or titles
Daily sync Runs at one fixed local time; off by default
Sync at login Runs once whenever you sign in; on by default
Open at login Starts the background app after macOS login; on by default
Show in menu bar Keeps sync, status, updates, and support actions close at hand
Restart Codex automatically Force quits Codex for a manual sync and reopens it only after success; off by default
Check for updates Finds a newer GitHub release, verifies its DMG, and offers install + relaunch

Automation uses the saved source, destination, and data choices for local transfers. A scheduled embedded-browser sync safely exits without making changes when its destination app is open. Browserless cloud uploads and Grok Bot .bcbx exports are always manual.

CLI

browser-cookie-bridge install-app [--no-open] [--replace-system-from-source]
browser-cookie-bridge setup [--hour 9] [--minute 0] [--no-schedule]
browser-cookie-bridge preferences --source brave --target codex --cookies on --history off --site-storage off --auto-restart-codex off --auto-restart-both off [--grok-bot-domains example.com]
browser-cookie-bridge sync [--timeout 300] [--allow-cloud-upload] [--output /path/GrokBot-Import.bcbx]
browser-cookie-bridge browserless-preflight
browser-cookie-bridge doctor
browser-cookie-bridge enable-login-sync
browser-cookie-bridge disable-login-sync
browser-cookie-bridge enable-app-login
browser-cookie-bridge disable-app-login
browser-cookie-bridge remove-schedule

Supported source IDs are brave, chrome, edge, arc, vivaldi, opera, and comet. Target IDs are the same plus codex, cursor, browserless, and grok-bot. The same browser cannot be both endpoints. Cursor import currently supports cookies only. Grok Bot export requires --output /path/GrokBot-Import.bcbx and writes cookies only; --grok-bot-domains optionally limits the bundle. The bundle includes an embedded decryption key—treat it as credentials and never paste cookie values into chat. Browserless requires BROWSERLESS_TOKEN and the explicit --allow-cloud-upload flag; the native app supplies the token from Keychain without placing it in the OS command line or app configuration.

How it works

Path Transfer method
Browser → browser Unpacked extensions connect to a short-lived broker on IPv4 loopback. Selected data stays in memory and is never written to logs.
Browser → Codex / Cursor The app reads the selected local Chromium profile, creates a consistent destination SQLite backup, merges cookies into a working copy, validates it, then replaces only the embedded browser's cookie database atomically. Codex also supports optional history and full site data. Cursor import is experimental and limited to the dedicated browser-partition cookie store.
Browser → Grok Bot The app reads the selected local Chromium profile, encrypts cookie sessions into a .bcbx bundle with an embedded decryption key, and writes that file locally. You attach it to a Grok Bot; the bundled importer decrypts and injects cookies on the cloud computer only.
Browser → Browserless The bundled official Browserless CLI copies a closed local profile, captures cookies/local storage/IndexedDB, and uploads it directly to the selected Browserless region.

The broker validates a random token and extension origin, limits payload size, and normally exits after five minutes. Only the endpoints selected in the app respond to a transfer.

Security & privacy

  • Cookie values and history URLs are never logged. Never paste cookie values into chat.
  • Browser-to-browser data is held only in broker memory.
  • Grok Bot .bcbx files encrypt cookie payloads with AES-256-GCM but include the decryption key inside the bundle (decryption.key). Treat the entire file as credentials—anyone with the bundle can read the cookies. Do not share it or paste cookie values into chat. The bundled importer decrypts automatically, reports only import counts, then deletes the unzipped files and the bundle copy. Legacy v1 bundles without an embedded key still prompt for a separate passphrase.
  • Direct-import backups are stored with user-only permissions under ~/Library/Application Support/BraveCodexCookieSync/backups/codex or backups/cursor; the newest 14 per destination are retained.
  • Full site-data import is opt-in for Codex and requires both Codex and the source browser to be closed. It replaces compatible origin-storage directories rather than attempting an unsafe LevelDB merge; the previous directories are included in the same backup.
  • The app refuses unknown destination database schemas instead of guessing and writes only to Cursor's dedicated Partitions/cursor-browser profile, never Cursor's main application cookie store.
  • Direct imports currently store imported cookie values in SQLite's plaintext value column with an empty encrypted_value. Those imported rows can therefore remain readable to software running as your macOS user until the website refreshes them.
  • Anyone who can use your logged-in macOS account or modify a generated extension may be able to access transferred browser sessions.
  • The optional Browserless destination sends authenticated state to Browserless under their terms and privacy practices. Its API token is stored in macOS Keychain, uploads are manual, and Browserless CLI telemetry is disabled by the app.

Cookies are credentials. Review the source, protect your macOS account, and transfer only between profiles you trust.

Found a vulnerability? Read SECURITY.md and report it privately. Do not open a public issue or include real browser data.

Releases

Pushing a semantic version tag runs tests, validates that package and app versions match, builds separate Apple-silicon and Intel DMGs, publishes to npm, and creates a GitHub Release with the tarball, DMGs, and SHA-256 files attached.

npm run release:check
git tag vX.Y.Z
git push origin vX.Y.Z

A normal branch push does not publish anything.

Contributing

Contributions are welcome. See CONTRIBUTING.md for local setup, validation, privacy requirements, and pull request guidance.

Support

If Browser Cookie Bridge is useful to you:

Product screenshots, the transparent cookie logo, and launch artwork live in marketing/.

Website

The product landing page, documentation overview, Privacy Policy, and Terms are live at cookiebridge.apoorvdarshan.com and live in web/. Preview them locally at http://localhost:3000:

npm run web

Star History

Browser Cookie Bridge GitHub star history

License

MIT © 2026 Apoorv Darshan

Not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, OpenAI, Cursor, xAI, or Browserless. Their names and marks belong to their respective owners.

About

Private, local cookie and session transfer between Chromium browsers and ChatGPT Codex on macOS.

Topics

Resources

Contributing

Security policy

Stars

7 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages