A browser automation extension that drives your real Chrome, not a fresh headless build
Most results on this search are record-and-replay tools or zero-auth Chromium launchers. Fazm ships a Chrome Web Store extension that hands your already-signed-in Chrome window to a local AI agent, and the same agent also drives Finder, Settings, Notes, and WhatsApp through the macOS accessibility API. The browser leg is one of four.
THE CATEGORY CONFUSION
The phrase hides three very different products
Search for "browser automation extension" and the first page of results flattens three categories into one. They do not do the same thing, they do not fail for the same reasons, and picking the wrong one is most of why automation projects die at integration.
Record and replay extensions
Selenium IDE, UI.Vision, Automa. You click through the flow once, the extension saves DOM selectors and coordinates, you replay later. Great for five-step repetitive tasks on stable pages. They break the first time a page redesigns or inserts a new modal.
Headless automation wrappers
Playwright, Puppeteer, and friends. Powerful, but they launch a fresh Chromium every run. No cookies, no sessions, clean fingerprint. Fine for scraping public pages, painful the moment a flow needs your real login or hits a site that scores browsers by reputation.
Agent bridge extensions
The newer, smaller category Fazm sits in. The extension does not record anything, and does not launch a fresh browser. It attaches Playwright's full API to the Chrome you are already running, and lets a local AI agent pick moves in real time. You bring the session, the AI brings the behavior.
THE ANCHOR FACT
What the extension actually is, in the source
The extension is published on the Chrome Web Store as Playwright MCP Bridge. Its Chrome ID is fixed and lives in a single place inside the desktop app. Below is the exact block the Mac app uses to (1) point Chrome at the Web Store listing, (2) open the extension's status page so you can copy your token, and (3) re-detect that the extension is installed by scanning Chrome's profile folders.
And here is the token validator the pasted token has to pass before Fazm saves it. The two rules worth flagging: it tolerates the common mistake of pasting the whole PLAYWRIGHT_MCP_EXTENSION_TOKEN= environment line (it strips the prefix), and it rejects anything outside the base64url character set.
“Chrome extension ID the whole browser-automation story hangs on: mmlmfjhmonkocbjadbfplnigmagldckm.”
Desktop/Sources/BrowserExtensionSetup.swift
HOW A BIT MOVES
A request from your prompt to a click in Chrome
The Mac app is Swift. The agent runtime is a Node subprocess (the ACP bridge) that speaks Anthropic's Agent Client Protocol. The browser automation extension is a Chrome add-on. The three talk to each other in a fixed order and the extension is the last hop before a page event happens.
From your prompt to a real Chrome click
THE BRIDGE WIRING
The single block that flips Playwright into extension mode
There is no framework here, no plugin system, no magic. The bridge is a few lines that construct the Playwright MCP server's argv and env. When you turn the extension on in Settings, Fazm sets one env var (PLAYWRIGHT_USE_EXTENSION=true) and passes your token through to the MCP server so it knows which Chrome window to attach to.
Fresh headless Chromium vs attaching to your real Chrome
Side by side, two automation paths for the same prompt. Same Playwright surface, very different runtime behavior.
Toggle between the two modes
Playwright launches a new Chromium process on every run. The profile is empty. No saved logins. No extensions. Browser fingerprint looks like a just-booted automation binary, because that is what it is.
- You have to log in again every session, or script the login
- Cloudflare Turnstile and Google OAuth often refuse clean headless fingerprints
- Banking, airline, and enterprise SSO sites are the worst case
- Nothing on your machine persists between runs
- Fine for scraping public pages, brittle for anything authenticated
FOUR-STEP INSTALL
What the install flow looks like inside the app
The setup is deliberately small. Four numbered steps in a single 880x520 window, with an animated GIF panel on the right that switches between the "installing_extension" and "enabling_token" guides based on which step you are on. A 2-second polling timer auto-detects when Chrome appears in /Applications and when the extension lands in any Chrome profile's Extensions/ directory, so you never have to click Refresh.
- 1
Install Chrome
Auto-detects /Applications/Google Chrome.app. One-click download if missing.
- 2
Add the extension
Opens the Chrome Web Store at the Playwright MCP Bridge listing. Click Add to Chrome.
- 3
Open the extension page and copy the token
Fazm opens chrome-extension://mmlmfjhmonkocbjadbfplnigmagldckm/status.html in the active Chrome profile.
- 4
Paste it here
Base64url validator strips the PLAYWRIGHT_MCP_EXTENSION_TOKEN= prefix, saves the rest.
THE CONNECTION TEST
How Fazm proves the extension is actually live
After the token is saved, Phase 3 runs one real round trip through the bridge. The method is called testPlaywrightConnection and lives in the desktop source. It sends a constrained prompt that tells Claude to call the browser_snapshot tool once and reply with either CONNECTED or FAILED. The presence of "CONNECTED" in the response text is the signal.
ONE OF FOUR TARGETS
The browser extension is a leg, not the whole body
The ACP bridge registers four automation targets as MCP servers. Whichever one the AI picks for a task, the architecture is the same: a long-running subprocess, stdin/stdout JSON-RPC, tools the model can call. The browser extension covers the web leg. The other three cover everything else you do on a Mac.
Playwright MCP Bridge
The browser extension. Chrome only. --extension flag + token from the Web Store listing.
macos-use
Native binary mcp-server-macos-use. Drives Finder, Settings, Mail, any AX-compliant app, via the accessibility tree.
whatsapp-mcp
Native binary. Drives the WhatsApp Catalyst app through accessibility APIs, not the web.
google-workspace
Python MCP for Gmail, Drive, and Calendar. Used when the right move is an API call, not a browser click.
Fazm vs the three other kinds of "browser automation" the SERP serves up
Same search term, different jobs. Here is what each class of tool is actually good at and where it breaks.
| Feature | Record-and-replay / headless wrappers | Fazm (agent + Playwright bridge extension) |
|---|---|---|
| Primary workflow | You record a sequence of clicks, or you write a Puppeteer script. You press play. | You describe a goal. The AI picks the tool calls, including when to use the browser and when to call a native MCP instead. |
| Browser session | Fresh profile every run. No cookies, no saved logins, blank fingerprint. | Attaches to your real Chrome window with every login, cookie, and extension intact. |
| Passes Cloudflare Turnstile and OAuth gates | Unreliable. Clean-room Chromium gets flagged as automation. | Silently. Your long-lived Chrome profile already passed those checks months ago. |
| What happens when a page redesigns | Script breaks at the first missing selector. Manual re-record. | The AI re-plans based on the new DOM snapshot. Same intent, new route. |
| Non-browser tasks (Finder, Mail, Notes, WhatsApp) | Out of scope. Browser only. | In scope. Native MCP binaries (macos-use, whatsapp-mcp) via the same agent. |
| Install surface | Browser extension, or a pip / npm package and a runtime. | Signed Mac app + one Chrome extension from the Web Store. Token pasted once. |
| Who it is for | Engineers writing automation scripts for stable workflows. | Mac users who want an AI to actually do things for them in real apps. |
What the extension makes possible that default Playwright does not
Reach your real logged-in state
Gmail, Notion, Linear, your bank, your payroll portal, your airline. Anything you are signed into in Chrome today, the agent can touch without re-logging in.
Skip the captcha battle
Cloudflare Turnstile and hCaptcha score by fingerprint and history. A year-old Chrome profile has both. A headless binary has neither.
Keep your extensions in the loop
Password manager, email aliaser, ad blocker, custom redirect tools. They continue to work because it is still your Chrome.
Human-in-the-loop by default
You see the tab, you can grab the mouse, you can close the window. An injected overlay marks that the AI is driving.
The non-browser escape hatch
When a task is faster through Finder, Mail, Calendar, or WhatsApp, the same agent routes to native MCP tools instead of the browser.
Token minimum is enforced by validateToken in BrowserExtensionSetup.swift. Ticker count for reference: 0 MCP servers registered for non-observer sessions.
Why this architecture holds up when things change
The honest reason to ship the browser leg as an extension rather than a scripted Chromium is not sophistication. It is blast radius. When Gmail redesigns, when a bank rotates its login flow, when Turnstile bumps its heuristics, a recorded script breaks on the first missing selector and a headless binary gets scored out. A real Chrome window, driven by an AI agent that re-plans on every turn, adapts. And because the same agent can duck out of the browser entirely, hand off to the macos-use binary, click through Finder or Settings, and come back, there is a second exit when the browser is not the right tool at all. The "browser automation extension" label makes it sound narrower than it is. The point is that it is only one of the legs a single agent runs on.
Want to watch the extension attach to your real Chrome and drive a live task?
Fifteen minutes. We install the Chrome Web Store extension on your Mac, paste the token, and run a real workflow in a browser you are already signed into.
Book a call →Frequently asked questions
What is Fazm's browser automation extension?
It is a Chrome Web Store extension called Playwright MCP Bridge, ID mmlmfjhmonkocbjadbfplnigmagldckm. You install it in the Chrome you already use every day, copy the auth token from its status page, and paste that token into Fazm. From that point on, when Fazm needs to act in a browser it drives the Chrome window you are already signed into, rather than spawning a fresh headless Chromium. All of your saved sessions, SSO logins, cookies, extensions, and browser fingerprint come along for the ride.
How is this different from Selenium IDE, Automa, or UI.Vision?
Those are record-and-replay tools: you click through a workflow, they save the steps, you press play later. Fazm is an agent runtime. There is no recorded script. You ask for a result in natural language, the AI decides which tools to call, and the extension is one of those tools. Because it is driven by an LLM, the same 'workflow' keeps working when a page layout changes in ways a recorded script would not survive.
Does the extension work on Firefox, Edge, or Safari?
No. It is a Chrome extension (Chrome Web Store listing, extension ID mmlmfjhmonkocbjadbfplnigmagldckm) and Fazm only checks for Google Chrome at the install path /Applications/Google Chrome.app. Chrome-derivative browsers that accept Web Store extensions should work in principle, but the product only ships the Chrome path and the setup flow opens URLs via AppleScript targeted at Google Chrome specifically.
Why bother with an extension when Playwright can just launch its own Chromium?
Because fresh Chromium has a clean fingerprint. Cloudflare Turnstile, Google OAuth consent screens, bank login flows, and any site that scores trust across sessions will flag a brand-new incognito build the first time it asks for credentials. A Chrome session you have been logged into for months, on the same machine, with the same extensions, passes silently. The Playwright MCP Bridge extension is how Fazm gets both sides: the Playwright API surface the agent already knows how to drive, and a real user's Chrome at the other end.
How does Fazm know if the extension is actually connected?
There is a live connection test. After you paste the token, Fazm sends exactly one message through the bridge that tells Claude to call the browser_snapshot tool once and reply with 'CONNECTED' or 'FAILED'. That code lives at Desktop/Sources/Chat/ACPBridge.swift around line 1503 (testPlaywrightConnection). If the extension ever breaks, clicking Re-verify in Settings reruns the same round trip.
What does the token look like, and where does Fazm store it?
The extension's status page displays a base64url token. Fazm's token validator (BrowserExtensionSetup.swift around line 574) strips an optional PLAYWRIGHT_MCP_EXTENSION_TOKEN= prefix, confirms the remainder is at least 20 characters and contains only alphanumerics, hyphens, and underscores, and stores it locally via UserDefaults under the key playwrightExtensionToken. Nothing leaves your Mac.
Is this a developer framework or a consumer app?
Consumer. You download a signed, notarized Mac app, it walks you through a four-phase setup window (welcome, connect, verify, done) with animated GIF guides on the right panel, and the extension install is a two-button flow: click Add to Chrome, paste a token. There is no CLI to run, no package to install, no YAML config. If you are looking for a Python SDK you want playwright-python directly, not this.
Does the browser automation extension work with anything other than the browser?
This is the part the category name hides. The browser extension is one MCP server. Fazm also ships three other native automation targets registered in the same bridge: macos-use (a native mcp-server-macos-use binary that drives Finder, Settings, Mail, and any AX-compliant app via the accessibility tree), whatsapp-mcp (the native WhatsApp Catalyst app), and a google-workspace MCP for Gmail, Drive, and Calendar APIs. The same agent routes to whichever target the task needs, so 'browser automation' is closer to 'browser leg of a Mac-wide agent' in practice.
What changes on a page while Fazm is driving it?
A small visual overlay is injected via Playwright's context.addInitScript on every navigation, loaded from acp-bridge/browser-overlay-init-page.js. It is there so that a tab being controlled by the AI is unambiguously marked as such to the human in front of the screen. The overlay does not alter the page content the AI sees or submits.
Is there a non-extension mode?
Yes. If you do not set up the bridge extension, the Playwright MCP server runs in its default mode and launches its own Chromium. You lose the 'real Chrome fingerprint and real logins' benefit, but everything else still works. The extension flow is a strict upgrade: enable it when a flow you care about needs your actual session, skip it when you do not.
How do I install it?
Four phases inside Fazm. Phase 1, welcome: a short explanation of what browser access does. Phase 2, connect: a split-pane window (880 wide by 520 tall) with four numbered steps on the left (install Chrome, add the extension from the Chrome Web Store, open the extension and copy the token, paste it) and a GIF guide on the right that swaps between 'installing_extension' and 'enabling_token' based on which step you are on. Phase 3, verify: the connection test runs automatically. Phase 4, done. Source: Desktop/Sources/BrowserExtensionSetup.swift.
Does it work without Chrome installed?
No. The setup flow first checks FileManager.default.fileExists(atPath: "/Applications/Google Chrome.app") and, if Chrome is missing, shows a Download Chrome button that opens https://www.google.com/chrome/. A 2-second polling timer then watches for Chrome to appear in /Applications and unlocks the rest of the flow once it does.