Chromeflow

io.github.NeoDrewPublished by GitHub account NeoDrewv0.9.5Updated Oct 24, 2026

Lets Claude Code or Codex CLI drive your real Chrome — sessions intact, 28 browser tools.

VerifiedSTDIODesktop onlyBrowser AutomationDeveloper Tools

Overview

AI-generated overview

Lets Claude Code or Codex CLI drive your real, already-logged-in Chrome through a companion extension, with browser tools for clicking, filling forms and…

What you can do
  • Navigate and manage tabs: open pages, list and switch tabs, scroll to elements
  • Interact with pages: click elements, fill single or multiple fields, upload files including hidden inputs
  • Read pages: extract page text, inspect form fields, read console logs, run arbitrary JavaScript
  • Guide the user: highlight regions, wait for a user click, wait for async changes
  • Capture output: take screenshots, screenshot the terminal window, write captured values to a .env file
When to use it
Useful when an agent needs to work inside sites you are already signed into (dashboards, cloud consoles, payment or auth providers) where a fresh headless browser would stall at login or 2FA. It is aimed at coding agents that need to complete setup tasks and copy keys or IDs into a project.
Requirements
Runs as a local process on a desktop machine. Needs Claude Code or Codex CLI, Chrome or another Chromium browser, Node.js 22+, and the companion Chrome extension installed from the Web Store. The plugin is installed through the host's plugin marketplace commands.
Before you install
It operates your real logged-in browser, so the agent can act with your existing sessions on sites such as Stripe, AWS, Supabase and GitHub. It can read page content and write captured values, including API keys, into a .env file, and it can run arbitrary JavaScript in pages. File uploads and terminal screenshots can send local files or terminal output to web forms. Review what it writes and where before running it.

Installation

In SourceWeft

  1. Open Chromeflow in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Chromeflow]

Chromeflow

Let your AI coding agent (Claude Code or Codex CLI) drive your real Chrome — clicks, fills forms, grabs API keys, writes them to .env.

[Chrome Web Store] [Latest release] [MIT License] [GitHub stars] [Website]

Install · Tools · Website · Security

[Chromeflow demo — Claude Code driving real Chrome]


The problem: Playwright, Browser Use, and Puppeteer launch a fresh empty browser every time — no cookies, no sessions, no 2FA. Your AI agent gets stuck at the first login screen.

Chromeflow: drives your actual Chrome, where you're already logged into Stripe, AWS, Supabase, Canvas, GitHub. The agent automates what it can (clicks, fills, uploads, captures keys) and pauses for anything that needs you (passwords, 2FA, payment). One MCP server, 30 browser tools, works with both Claude Code and Codex CLI.

Battle-tested: shaped by 400+ hours of real agentic browser work before public release — every gnarly edge case (React Selects, isTrusted-gated forms, shadow-DOM clicks, page-CSP fetches, silent redirects, cookie leaks, 0×0 hidden elements) is in the error-handling recipes. Not a weekend hackathon project.

Why Chromeflow?

Existing browser automation tools (Playwright, Browser Use, Puppeteer) launch a fresh, empty browser — no cookies, no sessions, no extensions. Every time they start, you're logged out of everything and can't handle 2FA.

Chromeflow works in your actual Chrome browser, where you're already logged into Stripe, AWS, Supabase, and everything else. Claude automates what it can (clicking buttons, filling forms, uploading files) and pauses for anything that needs you (passwords, 2FA, payment details).

ChromeflowPlaywright / Browser Use
BrowserYour real Chrome (sessions intact)Fresh instance, logged out of everything
Auth / 2FAAlready handled — pauses when neededCan't handle — blocks completely
Page understandingDOM queries (fast, cheap, reliable)Screenshots + vision model (slow, expensive)
Human-in-the-loopHighlights, pauses on sensitive inputFully autonomous, no interaction
IntegrationMCP server for Claude Code & Codex CLIStandalone, not agent-aware
Credential captureReads API keys → writes to .envNot designed for this

Validated platforms 🟢

Tested end-to-end against the live platform before every release. Procedures live in tests/antibot/platforms/; the validated-against page at chromeflow.run/validated auto-updates from tests/antibot/last-run.json on each run.

PlatformWhat's validatedStatus
[Image] Reddit composer expandCDP click expands faceplate-* composer (PointerEvent isPrimary=true)🟢 Working (2026-05-25)
[Image] Reddit comment typingtype_text lands multi-paragraph text in Lexical with <p> structure preserved🟢 Working (2026-05-25)
[Image] X / Twitter tweet inputtype_text lands isTrusted=true CDP keys in Lexical🟢 Working (2026-05-25)
[Image] LinkedIn feed composerclick_element("Start a post") + type_text into Quill editor🟢 Working (2026-05-25)
[Image] Facebook feed composerClick composer trigger + type_text into Lexical modal🟢 Working (2026-05-25)
[Image] Instagram React inputfill_input via React-aware native value setter🟢 Working (2026-05-25)
[Image] Radix portal dialogclick_element(in_dialog=true) scopes uniquely to the open dialog🟢 Working (2026-05-25)
[Image] Closed shadow DOMfind_text pierces Stencil closed shadow roots via chrome.dom API🟢 Working (2026-05-25)
[Image] TipTap / ProseMirrortype_text lands in contenteditable; auto-recovery on silent-drop🟢 Working (2026-05-25)

Submit handoff (by design). Reddit, X, LinkedIn, Facebook, Instagram all gate their submit buttons on a real isTrusted human gesture as part of their anti-bot stack. Chromeflow lands the typing path (which is what an agent actually needs) and then uses highlight_region + wait_for_click so the user clicks Submit themselves.

Why this is the moat. Playwright, Puppeteer, browser-use, crawl4ai all launch a fresh logged-out browser. They can't see your sessions, and the isTrusted-strict checks on these platforms reject their vanilla CDP clicks. Chromeflow runs in your real logged-in Chrome with a humanlike bezier + PointerEvent isPrimary=true click sequence; the validated-against table above shows what that gets you in practice. See /validated for the side-by-side comparison.

How it works

Chromeflow is two things that work together:

  • MCP server — gives your coding agent (Claude Code or Codex) a set of browser tools (open_page, click_element, fill_form, set_file_input, get_page_text, write_to_env, etc.)
  • Chrome extension — receives those commands and acts on the active tab (highlights, clicks, fills, uploads files, captures screenshots)

Claude drives the flow. You only touch the browser for things that genuinely need you — login, passwords, payment details, personal choices.

Setup

Claude Code

1. Install the plugin (one-time, machine-wide):

/plugin marketplace add https://github.com/NeoDrew/chromeflow.git/plugin install chromeflow

Run these inside Claude Code. The plugin registers the MCP server, pre-approves Chromeflow tools, and ships the usage skill — no per-project setup needed.

2. Install the Chrome extension (one time):

chromewebstore.google.com/detail/chromeflow/lkdchdgkbkodliefobkkhiegjdiidime — click Add to Chrome.

The extension persists across Chrome restarts. You only do this once.

3. Restart Claude Code.

That's it. Claude will automatically reach for Chromeflow whenever a task needs browser interaction, in any project. The plugin's SessionStart hook also cleans up any stale config left over from older npx chromeflow setup-based installs on first run.

Codex CLI

1. Install the plugin (one-time, machine-wide):

codex plugin marketplace add https://github.com/NeoDrew/chromeflow.git

Then inside Codex:

/plugins install chromeflow

The plugin registers the MCP server and ships the same usage skill that Claude Code uses, host-adjusted for Codex.

2. Install the Chrome extension (one time) — same Web Store link as above. The extension is host-agnostic and serves both Claude Code and Codex from the same install.

3. Restart Codex.

Codex will reach for Chromeflow on browser tasks the same way Claude Code does.

Usage

Just ask Claude normally:

"Set up Stripe for this project — create a product with monthly and annual pricing, capture the price IDs into .env"

"Go to Supabase and get my project's anon key and service role key"

"Help me configure SendGrid webhooks for this app"

Claude will navigate, highlight steps, click what it can, pause for anything sensitive, and write values to your .env automatically.

What Claude can do

CapabilityTools
Navigate pages, open new tabsopen_page, list_tabs, switch_to_tab
Click buttons and linksclick_element (with nth for duplicates)
Fill single fieldsfill_input (with nth for duplicates)
Fill multiple fields in one callfill_form
Upload files (even hidden inputs)set_file_input
Read page content as textget_page_text (with selector scoping)
Inspect all form fieldsget_form_fields
Scroll to a known elementscroll_to_element
Highlight elements for the userhighlight_region
Wait for the user to clickwait_for_click
Wait for async changeswait_for
Run arbitrary JSexecute_script
Read browser console outputget_console_logs
Capture credentials to .envget_page_text, write_to_env
Screenshot (Claude-only by default; pass copy_to_clipboard / save_to to share)take_screenshot
Screenshot the terminal windowcapture_terminal

File uploads

set_file_input uses Chrome DevTools Protocol to bypass the browser's file-input script restriction — the same mechanism used by Playwright and Puppeteer. It works even when the <input type=file> is hidden behind a custom drag-and-drop zone.

set_file_input("Upload", "/Users/you/Downloads/task.zip")

Terminal screenshots

capture_terminal screenshots the terminal window (Terminal, iTerm2, Warp, VS Code, Ghostty, etc.) and saves it as a PNG. Use this with set_file_input to upload terminal output to a web form.

Dedicated Claude window

Click the Chromeflow extension icon and use "Use this window for Claude" to lock Claude's browser operations to a specific Chrome window. This lets you freely use other Chrome windows without Claude interfering.

Running multiple agent sessions in parallel

Chromeflow supports up to 11 agent sessions (Claude Code, Codex, or a mix) running in parallel, each automating a different Chrome window without touching the others.

How it works:

  • Each agent session spawns its own Chromeflow MCP server, which auto-discovers a free port in the range 7878-7888 (first session gets 7878, second gets 7879, etc.).
  • The Chrome extension maintains one WebSocket connection per port and tracks per-port window assignments.
  • Every browser tool call is routed to the Chrome window assigned to the port the request came in on.

Setup:

  1. Start your first agent session as normal — its Chromeflow will claim port 7878.
  2. Start a second agent session in another terminal — its Chromeflow auto-falls-back to 7879.
  3. Click the Chromeflow extension icon. The popup now shows one row per instance (Port 7878, Port 7879, ...) each with a green dot when live.
  4. In Chrome window A, open the popup and click "Use this window" next to Port 7878.
  5. Switch to window B, open the popup, and click "Use this window" next to Port 7879.

That's it. Each session now drives its own Chrome window — you can run a research task in one window while the other session fills out a Stripe dashboard in another, with zero collision.

Single-instance usage is unchanged and fully backwards compatible — the old per-window assignment is auto-migrated on first load.

Adding to another project

Nothing to do — the plugin install above is machine-wide. Open any project and Chromeflow is ready.

Upgrading

In Claude Code:

/plugin update chromeflow/reload-plugins

In Codex:

/plugins update chromeflow

Restart the host afterward to pick up the new MCP server binary the plugin ships.

Migrating from the old npx chromeflow setup flow

If you previously installed Chromeflow via npx chromeflow setup, do nothing — install the plugin (Setup step 1 above) and the plugin's first SessionStart cleans up:

  • The stale mcpServers.chromeflow entry in ~/.claude.json
  • Any leftover ## Chromeflow section in ~/.claude/CLAUDE.md

Per-project CLAUDE.md files and .claude/settings.local.json allowlists are left alone — they may have content you want to keep, so the plugin won't touch them. You can delete the # Chromeflow — Claude Instructions section from each project's CLAUDE.md by hand whenever it's convenient (the plugin's skill carries the same content now), or just leave it.

Development

bash
git clone https://github.com/NeoDrew/chromeflowcd chromeflownpm installpackages/plugin/scripts/build-server.sh   # bundle the MCP server into the plugin

The MCP server source lives at packages/mcp-server/src/ and is bundled with esbuild into packages/plugin/server/chromeflow.mjs — a single-file ESM binary the plugin ships directly.

Iterate locally by pointing the plugin at this checkout. In Claude Code:

/plugin marketplace add /absolute/path/to/this/repo/plugin install chromeflow

In Codex:

codex plugin marketplace add /absolute/path/to/this/repo/plugins install chromeflow

Rebuild the bundle after editing MCP server source, then /reload-plugins (Claude Code) or restart the host (Codex) to pick it up.

The Chrome extension lives at packages/extension/:

bash
npm run dev:ext   # watches extension

After rebuilding the extension, reload it from chrome://extensions.

Requirements

  • Claude Code or Codex CLI
  • Chrome (or any Chromium browser)
  • Node.js 22+

Source: README.md at commit bf8cf17

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.9.5LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts