For Claude Code, Codex, Cursor, and any agent with a shell

Hand your agent one tab. Nothing else.

Agent Browser Gateway lets a local AI agent read and operate only the Chrome tab you share, over loopback, with every operation written to an audit log.

Install with Homebrew
brew tap arcmanagement/agent-browser-gateway https://github.com/arcmanagement/agent-browser-gatewaybrew trust --cask arcmanagement/agent-browser-gateway/agent-browser-gatewaybrew install --cask agent-browser-gateway
Chrome extension
  • Per-tab consent
  • Loopback only
  • No telemetry
  • Public source
Product demo Animated demo. The agent runs abg tabs and sees no permitted tabs. In Chrome, the user opens the ABG popup on the Checkout tab and chooses Share this tab with agents. The tab lights up, the gate opens over 127.0.0.1, and the agent lists the tab as t1 and reads it as Markdown. The read is written to the audit log. The user presses Option+Shift+S, the share is revoked, and the next read fails with tab_not_permitted.
02Local only

A small local bridge.No cloud in between.

Three pieces on your machine: a Chrome extension, a menu bar Gateway, and the abg CLI. The Gateway binds only to 127.0.0.1 and accepts WebSocket connections only from browser-extension origins, so ordinary web pages cannot reach it.

Your Mac
  1. Chrome extension Shares the tabs you choose
  2. Gateway app Permissions · audit log
  3. abg CLI Read, screenshot, operate
  4. Your agent Claude Code, Codex, Cursor, Cline, scripts
ABG-operated servers None
  • No analytics
  • No crash reporter
  • No auto-update phone-home
  • No account

ABG does not send browser data anywhere. If your agent sends prompts to a model provider, that transfer is made by the agent under its own terms.

Check the listeners yourself
lsof -nP -iTCP -sTCP:LISTEN
03Token-efficient reads

Clean Markdown,not a wall of HTML.

Raw page HTML drags scripts, styles, and framework wrappers into the prompt. abg read returns the page as Markdown with headings, links, and lists intact, and per-domain plugins trim app chrome further.

abg read t1 --selector article --format markdown
# Reset your password
Open Settings, then choose Security.

## Steps
1. Choose **Reset password**
2. Check your inbox for the link
- [Contact support](https://example.com/support)
Tokens to read one article page
  1. Playwright page.content() ~50,000 124,476 chars · structure kept, heavy overhead
  2. Playwright article innerHTML() ~17,000 42,070 chars · structure kept, with overhead
  3. abg read --format markdown ~5,900 11,780 chars · structure kept, clean
  4. Playwright article innerText() ~3,800 6,543 chars · headings, links, and lists lost
~88% fewer input tokens than full HTML, with structure preserved

README benchmark on a Japanese WordPress post. Token counts are approximate (~2 chars/token).

04Annotations

Point at the page,like you would in chat.

Annotation mode lets you drag a box or select text, add a comment, and hand the agent structured context: selectors, text anchors, and coordinates. Reload the page and the annotations wait in session storage until you restore them.

staging.example.com/checkout

Order summary

PlanTeam plan
Seats3
Total$96.00 / month
Place order 1Total should include tax 2Wrong plan name

$abg annotate t1
{ "ok": true, "count": 2,
  "annotations": [
    { "kind": "dom", "comment": "Total should include tax",
      "selector": ".summary .total" },
    { "kind": "text", "comment": "Wrong plan name",
      "text": "Team plan" } ] }
$abg annotate t1
{ "ok": true, "count": 0,
  "saved": { "count": 2, "urlMatches": true },
  "nextCommand": "abg annotate t1 --restore" }
$abg annotate t1 --restore
{ "ok": true, "count": 2,
  "restore": { "status": "restored",
    "restored": [ … 2 ], "unrestored": [],
    "alreadyPresent": 0 } }
  • Area and Text annotations, auto-classified as dom, screenshot, or text
  • Stored per tab in Chrome session storage, which page scripts cannot read
  • Restored only when the target can still be identified
05Audit log

Every actionleaves a line.

The Gateway appends a JSON line for each read, operation, permit, and revoke to a local, owner-only log. Review it in the Gateway window, with abg audit, or open the file.

  • abg audit --lines 50
  • abg activity --period day

Pasted values and clipboard payloads are recorded as byte lengths, not content.

~/Library/Logs/AgentBrowserGateway/audit.jsonl 0600 · owner-only
Audit log
timeactiontabagentdetail
09:41:02 permit 418 — accessMode: manual
09:41:06 read_dom 418 cli staging.example.com/checkout
09:41:09 screenshot 418 cli staging.example.com/checkout
09:41:15 click 418 cli staging.example.com/checkout
09:41:21 paste 418 cli selector · textBytes: 42
09:41:30 revoke 418 — reason: user_revoked
{"ts":"2026-10-03T09:41:06Z","extensionId":"…","tabId":418,"url":"https://staging.example.com/checkout","action":"read_dom","agent":"cli"}
06Where it fits

Not a test runner.Not a hosted assistant.

ABG is for handing a human-owned, already-open tab to an agent workflow. Playwright remains the better fit when automation should own the whole browser lifecycle.

OptionBest fitTradeoffWhere ABG differs
Agent Browser Gateway AI-assisted work in a tab you are already using Requires explicit local setup and tab sharing Per-tab consent, local transport, CLI-first workflow, local audit log
Playwright Deterministic E2E tests, CI, screenshots, clean browser profiles Automation owns the browser session ABG uses your everyday Chrome tab with your current login and context
Claude in Chrome Provider-integrated browser assistance Tied to that provider's product surface and data path ABG is agent-agnostic and designed around local-first browser access
Browser MCP tools MCP-native browser control and structured snapshots Often targets a dedicated or broader browser context ABG keeps the human's selected tab as the permission boundary

Works with the agent you already use

  • Claude Code
  • Codex
  • Cursor
  • Cline
  • Your own scripts

Anything that can run a shell command can run abg. MCP clients can use abg mcp-server, a stdio wrapper over the same CLI.

07Download

Install in a minute.Verify before you trust it.

The current public build is v0.5.2. Install the macOS app with Homebrew or the signed DMG; both point at the same release payload. Then add the Chrome extension.

  1. 1Install the Gateway and CLI
  2. 2Add the Chrome extension
  3. 3Share a tab and run abg tabs

Homebrew

Tap the repository, trust the cask when Homebrew asks for tap trust, then install.

brew tap arcmanagement/agent-browser-gateway https://github.com/arcmanagement/agent-browser-gatewaybrew trust --cask arcmanagement/agent-browser-gateway/agent-browser-gatewaybrew install --cask agent-browser-gateway

Already installed? brew info --cask agent-browser-gateway or abg --help confirms it. Use brew reinstall --cask agent-browser-gateway only to force a fresh install.

macOS DMG

v0.5.2 · macOS 14+ · Apple Silicon
macOS DMG · v0.5.2
4469b7d9e69b4bfe48329facd269381bf011660d3db1b9d638a2799f4cd35732

Verify the checksum before opening the DMG.

Chrome Web Store

v0.4.8
Chrome Web Store

Listing serves v0.4.8 while v0.5.2 is in review. Shortcuts, annotation restore, and the Japanese UI need the v0.5.2 extension.

Windows

Windows 10/11 x64 · package pending
winget install --id ArcManagement.AgentBrowserGateway

WinGet becomes available after the signed Windows release and package indexing. The setup ZIP will be published through GitHub Releases after the signed Windows release workflow completes.

Windows release status

CLI and agent skills

The installer puts abg on your PATH. Claude Code and Codex skills come from the skills CLI:

npx skills add arcmanagement/agent-browser-gateway -g

Uninstall. Remove the app from /Applications, delete abg from your PATH if you linked it manually, and remove the Chrome extension.

Published by ArcManagement, Inc. Release artifacts are served from GitHub Releases.

Free for personal use, non-profits, and small companies under the ArcManagement Source License. License details