Browserjack lets Claude Code and other MCP clients reuse the browser runtime that OpenAI's ChatGPT.app already installed on your Mac: a persistent Node.js REPL driving your real, signed-in Chrome or Helium profile. Nothing is injected into the browser and no second automation extension is installed.
Note
Your agent acts inside your logged-in browser sessions through OpenAI interfaces that are undocumented and can break with any ChatGPT.app update.
- macOS on Apple Silicon, Node.js 22 or newer
- Official ChatGPT.app with the ChatGPT/Codex Chrome extension set up in Chrome or Helium
- An MCP client; the built-in setup targets Claude Code
npx browserjack setup --client claude --scope user
npx browserjack doctor --liveSetup installs a versioned runtime under ~/Library/Application Support/browserjack/ and registers a stable shim as a Claude Code MCP server, so a later npx cache change cannot alter what Claude Code runs. doctor --live verifies the browser handshake end to end.
Then restart Claude Code and try:
Use the browserjack MCP server to open https://example.com and return the page title.
Claude runs JavaScript in the bridged runtime and answers with Example Domain. If anything fails, run npx browserjack doctor and see docs/troubleshooting.md.
Browserjack is a thin launcher and stdio proxy: all browser capabilities live in OpenAI's installed runtime, exposed as a persistent node_repl MCP surface. It contains no Playwright, CDP, or navigation code of its own and does not modify or redistribute any OpenAI component.
Unlike Playwright MCP, Browser MCP, or Claude Code's official Chrome integration — the supported cross-platform default if you have a direct Anthropic plan — Browserjack installs no extension of its own. It reuses the OpenAI stack already on your Mac, exposes a persistent Node REPL (including macOS computer use) instead of a fixed tool list, works with any stdio MCP client, and needs no Anthropic plan; the price is macOS-only support and build-specific maintenance.
browserjack run Start the stdio MCP server (invoked by Claude Code)
browserjack doctor Inspect ChatGPT.app, signatures, runtime, and compatibility
--json Machine-readable report
--live Additionally cold-start the runtime and verify the browser handshake
browserjack status Report installation health (version, shim, current link, Node path)
browserjack setup Install the runtime and register the MCP server
--client claude (direct MCP) or plugin (runtime only)
--scope user | local | project
--mcp-name NAME MCP server name (default: browserjack)
browserjack update Reinstall this package version, reusing the recorded MCP identity
browserjack uninstall Remove the installation and the owned MCP entry
--keep-state Keep releases and state, remove only the active link and shim
doctor and status exit with 2 when a check fails, 1 on an unexpected error.
After a ChatGPT.app update, the first start runs a one-time self-test of the new build (a cold start with a real browser handshake); a passing build is recorded and starts instantly afterwards, a failing one stays blocked until a Browserjack update. Signature and cache checks run on every launch regardless. If a new build misbehaves beyond what the handshake catches, open a compatibility issue with your doctor --json output (redact your username in paths first).
The diagram above shows the checks each launch runs; the runtime is sandboxed with writes limited to CODEX_HOME and temp directories. Browserjack has no telemetry and does not log browser content, cookies, tokens, or form data — what the connected MCP client requests enters that client's conversation. Details: docs/security.md · docs/privacy.md · vulnerability reports via SECURITY.md.
Why macOS only? Browserjack drives the browser runtime bundled with the macOS ChatGPT.app and its code-signed native hosts. There is no equivalent local runtime to reuse on Windows or Linux.
Does Browserjack modify or redistribute OpenAI software? No. It launches the OpenAI-signed codex sandbox, which starts OpenAI's own node_repl, and speaks the runtime's existing MCP protocol. No binaries are modified, patched, or redistributed.
Is this supported by OpenAI? No, and it is not affiliated with or endorsed by OpenAI or Anthropic. The interfaces are undocumented and can change without notice.
Is "browserjack" a hijacker? No — the name means jack as in connector. It is a local bridge to components you installed yourself; it injects nothing into the browser and installs no extension.
npm install && npm run verify, then see CONTRIBUTING.md.
MIT for this project's original code. OpenAI components remain governed by their own terms and licenses.