Patchright, agent-browser, and PinchTab are not interchangeable browser-automation tools. They solve different problems at different layers.
After comparing their architectures, interfaces, capabilities and published benchmarks, my recommendation is straightforward:
- Patchright for programmatic Chromium automation when reducing Playwright's automation fingerprints matters.
- agent-browser for AI coding agents that operate a browser through shell commands and compact, reference-based snapshots.
- PinchTab for a persistent local browser service exposed through a CLI, HTTP API and MCP, especially when multiple clients need reusable profiles and instances.
There is no universal winner. The right choice depends on whether you need a library, an agent-facing CLI or a service. And "stealth", token consumption, raw execution speed and successful task completion are four different measurements.
First: three different layers
| Dimension | Patchright | agent-browser | PinchTab |
|---|---|---|---|
| Primary role | Patched Playwright library | AI-agent-oriented browser CLI | Browser-control server |
| Implementation | Playwright-based driver; Python, Node.js and community .NET packages | Native Rust CLI and daemon | Go control plane and per-browser bridges |
| How you control it | Application code | Shell commands or MCP | CLI, authenticated HTTP API or MCP |
| Browser model | Chromium-based browsers | Primarily Chrome/Chromium; other engines and mobile integrations documented | Installed Chrome/Chromium; optional external browser providers |
| Persistent state | Playwright persistent contexts | Named sessions, profiles and saved state | Profiles, instances and tabs |
| Built-in AI-friendly snapshots | Not the primary API | Yes, element references such as @e1 | Yes, element references such as e1 |
| Anti-detection emphasis | Core design goal | Not its main design goal | Optional external browser/fingerprint solution |
| License | Apache-2.0 | Apache-2.0 | MIT |
| Best fit | Scripted browser tasks | Interactive agent workflows | Shared, long-running browser infrastructure |
The architecture looks like this:
Your Python / Node application
→ Patchright (patched Playwright)
→ Chromium
Your coding agent
→ agent-browser CLI
→ persistent Rust daemon
→ Chrome / Chromium
Your agent, app or backend
→ PinchTab CLI / HTTP API / MCP
→ Go server → browser bridge
→ Chrome / Chromium
All three ultimately automate a real browser, often through the Chrome DevTools Protocol (CDP). That does not make their browser fingerprints, defaults or security boundaries identical. What happens between your automation code and the browser matters.
Patchright: control and automation-fingerprint reduction
Patchright is a patched version of Playwright. If you already know Playwright's locator, page and browser APIs, this is the closest option to a familiar browser-automation library.
Its maintainers describe several driver changes:
Runtime.enable-related detection: Patchright uses alternative execution-context handling rather than relying on the usual CDP event path.Console.enable-related detection: It disables the Console API. This is a real trade-off: normal in-page console output is unavailable.- Automation launch flags: Defaults are modified to reduce obvious automation indicators.
- Closed shadow roots: It adds the ability to locate elements inside closed shadow roots, including XPath support.
A minimal Python example:
from patchright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
print(page.title())
browser.close()
Install it with:
pip install patchright
patchright install chromium
The project additionally documents a headed, persistent Google Chrome configuration as a best practice when reducing detection signals. That is a maintainer recommendation, not a guarantee that a specific target will allow access.
Where Patchright loses
Patchright supports Chromium-based browsers only; Firefox and WebKit are explicitly outside its patch scope. You also inherit the maintenance and compatibility trade-offs of a forked driver. The project's README acknowledges that not every upstream Playwright test passes and that some initialization behavior has timing-related detection caveats.
Importantly, Patchright is not a complete crawling platform. It gives your application browser primitives; rate limiting, scheduling, crawl queues, extraction quality, retry strategy, storage and operational monitoring are your responsibility.
agent-browser: my choice for an AI coding agent
agent-browser takes a different approach. Instead of writing a Playwright script, your AI agent runs commands against a persistent browser daemon.
npm install -g agent-browser
agent-browser install
agent-browser open https://example.com
agent-browser snapshot -i
agent-browser click @e2
agent-browser get url
agent-browser close
The important command is snapshot -i. It returns a compact accessibility-oriented representation of interactive elements with stable-for-that-snapshot references. An agent can inspect a button, receive a reference such as @e2 and click it without repeatedly generating CSS selectors.
According to the official documentation, a compact snapshot typically uses around 200–400 tokens, compared with several thousand tokens for a full DOM dump. That is a documented product estimate, not a measured result of my own.
Why it is particularly useful for developers:
- Interactive exploration: open a page, inspect its structure, click, type and verify.
- Debugging: screenshots, traces, network inspection, video recording and visual diffs.
- React projects: inspect component trees, props, hooks, re-renders, Suspense boundaries and Core Web Vitals using the React integration.
- Broader environments: documented integrations include cloud browser providers, Electron workflows and mobile/iOS automation paths.
- MCP:
agent-browser mcpexposes an agent-facing tool interface with configurable tool profiles.
Unlike Patchright, stealth is not its core promise. Do not assume a convenient agent API will bypass website anti-bot protections.
There is also an operational nuance: the daemon is persistent between commands, but its documented default idle policy may shut down unattended headless sessions. Use the supported session and restore settings when persistence matters.
PinchTab: when the browser should be a service
PinchTab is server-first. Rather than treating every browser session as a child of one script or shell session, it provides a reusable control plane over Chrome.
# Install by a method documented in the project:
brew install pinchtab/tap/pinchtab
# Start the local control plane:
pinchtab server
# In another terminal:
pinchtab nav https://example.com
pinchtab snap -i -c
pinchtab text
Its documentation distinguishes profiles (stored browser identity), instances (running browsers), tabs and bridges (per-instance runtimes). The HTTP API lets a separate backend operate these resources using a bearer token. Its pinchtab mcp entry point can serve agent clients as well.
PinchTab is especially interesting for:
- Multi-client automation: different tools can use the same managed browser service.
- Persistent logins: named profiles store browser state across runs.
- Headed or headless operation: useful when an operator needs to see the browser.
- Human intervention: handoff/resume flows can give a person control when needed.
- Site QA:
auditandcomparecan collect page data and compare environments. - Text-first AI extraction: compact accessibility snapshots and snapshot diffs reduce repetitive page output.
Stealth features should not be confused with the base product. The PinchTab README documents optional CloakBrowser support, but its binary is provided separately. Stock Chrome driven by PinchTab is not automatically a stealth browser.
Security is part of the architecture
PinchTab's local-first posture is a good starting point: its server normally binds to the loopback interface and uses token-based access for HTTP operations. Do not expose its control API publicly without explicit authentication, TLS, network isolation and careful endpoint restrictions. A browser attached to logged-in accounts is a privileged service.
The same principle applies to all AI browser tools: page contents are untrusted data, not instructions your agent should follow.
Token consumption: what the numbers actually show
There is a meaningful difference between browser execution time, tool output tokens, whole-agent token usage and total inference cost.
Both agent-browser and PinchTab intentionally return a small text representation of a page. Patchright does not have an equivalent built-in agent-facing snapshot interface; its API gives your code locators and page objects. You can build a compact extraction layer on top of it, but the resulting token cost depends on your implementation.
PinchTab publishes a head-to-head benchmark in its README against agent-browser:
| Scenario | Fewer tokens with PinchTab | Lower reported cost |
|---|---|---|
| Basic Haiku, 10 steps | 17.9% | 9.5% |
| Extended Haiku, 24 steps | 26.2% | 19.6% |
| Extended Sonnet, 24 steps | 25.3% | 20.3% |
These are vendor-reported results, not independently reproduced measurements for this article. They should not be generalized to every website, model, prompt or version.
My takeaway: for long, repetitive agent loops, inspect both the size of each snapshot and the number of model/tool round trips. The smaller output does not necessarily mean the fastest or most reliable completed task.
Speed, reliability and getting blocked: how I would compare them
I would not publish a single "fastest tool" chart without testing the same websites under the same conditions. The supplied comparison does not contain independent cross-tool latency or unblock-rate measurements.
For a meaningful benchmark, measure the following separately:
| Metric | What it tells you |
|---|---|
| Cold start / warm command latency | How quickly the browser starts and completes repeated commands |
| Time to first useful content | Whether navigation, rendering and extraction are efficient |
| End-to-end task success | Whether a multi-step workflow actually finishes correctly |
| Tokens and inference cost | How much context and model spending a task requires |
| Detection/challenge rate | How often a site blocks or challenges the run |
| Recoverability | Whether errors, timeouts, navigation changes and stale references can be handled |
Use repeated runs, fixed versions, the same machine and network, comparable session states, and both static and JavaScript-heavy pages. Classify challenges separately from failures in your automation code. Websites can change behavior by IP reputation, login state, request patterns, geography and time.
A stealth feature may help with a particular detection vector; no tool guarantees access through Cloudflare, DataDome, Akamai or any other protection layer. Patchright's list of vendors it reportedly passes is a maintainer claim, not evidence that every deployment succeeds.
Can you combine the three?
Yes, at the workflow level. Not as a single, magically interchangeable browser driver.
A sensible division of labor could be:
Application / job queue
├─ Scripted browser task → Patchright worker
├─ Interactive AI task → agent-browser worker
└─ Reusable browser API → PinchTab service
└─ Chrome instances + profiles
Keep session ownership explicit. Each tool has its own lifecycle and browser-control assumptions. Do not assume a PinchTab profile, agent-browser session and Patchright context can be swapped between drivers without compatibility testing and deliberate CDP attachment design.
For a production scraping application, you still need crawl scheduling, deduplication, extraction validation, respectful rate limits, observability and storage above whichever browser layer you select.
Which one should you choose?
For an AI agent that works on your Next.js/React application, I would start with agent-browser. The CLI, small reference-based snapshots, debugging commands and React tooling are closely aligned with that workflow.
For a scraping worker where you want Playwright-style code and reduced automation fingerprints, evaluate Patchright. Start by checking the target's terms and your permission to automate it; then test the actual site rather than trusting pass lists.
For a backend product whose agents and services need shared browser infrastructure, choose PinchTab. Its HTTP interface, reusable profiles, per-instance process model and site-audit tooling can reduce infrastructure you would otherwise build.
If your application needs all three kinds of work, using all three as separate workers may be reasonable. But adding every tool by default creates more failure modes, not a better system.
Sources and limitations
Primary sources:
- Patchright driver README and Python package README
- agent-browser repository, documentation and React tooling
- PinchTab repository, documentation and audit/compare reference
Research and documentation review: October 26, 2026. Based on the supplied browser-automation comparison and checked against project documentation. Commands are illustrative; no new multi-tool benchmark or anti-bot test was executed for this article. All third-party benchmark and detection claims are labeled accordingly. Check the linked documentation before deployment because CLI flags and supported features change rapidly.