mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Automationevaluationupdated 27 Aug 2026

browser-harness review

Browser Harness lets a coding agent control a real Chrome session through the Chrome DevTools Protocol. It can use existing logins, click and type on interactive pages, and write reusable Python helpers when a site needs behavior the base tool does not provide.

+146stars / 7d
Verdict

Our Browser Harness install, build, and all 140 tests passed in 61 seconds combined, with 0 known package vulnerabilities. It is a strong fit for a careful developer who wants an agent to use a real logged-in Chrome session and can watch high-impact actions. Do not give it a valuable browser profile until recording, helper-code review, account boundaries, and confirmation rules are settled.

We ran it

Lab card: what happened when we ran browser-harnessScreenshot of browser-harness (browser-harness.com)
Install✓ · 39s42 packages · 60 MB
Build✓ · 10s
Tests✓ · 12s140 passed · 0 failed of 140 (pytest)
Known vulns0(pip-audit)
Repo177 files~8,406 lines of source · 3.4 MB · 1 CI workflows · tests dir

Answers from our run

Does browser-harness build from source?

Dependencies installed in 39 seconds (42 packages), and the build succeeded in 10 seconds. We cloned commit 41108b8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do browser-harness's tests pass?

Yes: 140 of 140 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does browser-harness have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use browser-harness?

Anyone unwilling to expose a logged-in browser session to agent actions: the harness can reach the same pages and accounts that Chrome can.

What are the alternatives to browser-harness?

Browser Use, Playwright MCP, Stagehand. Our Browser Harness install, build, and all 140 tests passed in 61 seconds combined, with 0 known package vulnerabilities.

Setup4/539-second install and 140 passing tests; Chrome approval remains
Docs5/5Install, diagnostics, browser workflow, and privacy choices are explicit
Community5/517,169 stars with release and issue activity this week
Maturity3/5Clean lab run, but v0.1.10 still has browser lifecycle gaps

Discussed on

  1. hnShow HN: Browser Harness – Gives LLM freedom to complete any browser task134 points
  2. hnShow HN: Self-healing browser harness via direct CDP3 points

Who it’s for

Claude Code and Codex users who need an agent to work inside an already logged-in browser.
Developers automating JavaScript-heavy sites, uploads, downloads, or interfaces that plain HTTP cannot reach.
Teams willing to inspect helper code and verify every consequential browser action.
Users who want local browsing for personal work and an optional paid cloud path for parallel sessions.

Who it’s NOT for

Anyone unwilling to expose a logged-in browser session to agent actions: the harness can reach the same pages and accounts that Chrome can.
Users who cannot enable Chrome remote debugging or approve its connection prompt.
Teams that need concurrent local agents: the skill says local Chrome is shared and parallel tasks can fight over tabs and focus.
Unattended Linux hosts where browser process ownership must be exact: open issue 652 reports an auto-launched Chrome left running without a tracked process or CDP port.

Setup reality

Our sandbox installed 42 Python packages in 39 seconds, using 60 MB on disk. The build succeeded in 10 seconds, and all 140 pytest cases passed in 12 seconds; pip-audit found 0 known vulnerabilities.

Local use needs Python 3.12 through uv, Chrome or Chromium, the installed agent skill, and Chrome remote debugging approval. The local path needs no Browser Use API key; cloud sessions require authentication and keep billing until stopped or timed out.

Recordings are off by default because screenshots and traces can contain sensitive page content. State, logs, screenshots, auth, telemetry identity, and helper code live in a local configuration directory. The agent can add Python to agent_helpers.py, so that file deserves code review.

One CDP connection gives an agent your real Chrome session

Browser Harness attaches a coding agent to Chrome through one Chrome DevTools Protocol connection. The practical attraction is login reuse: an agent can work inside pages where the user is already authenticated instead of launching a blank profile and asking for credentials again. The skill reserves ordinary HTTP tools for public pages and uses the browser when a task needs clicking, typing, JavaScript rendering, uploads, downloads, or a protected session.

That access is powerful and personal. A wrong click can send a message, modify an account, publish content, buy something, or expose a private page. The skill tells the agent to stop for passwords, MFA, consent, and ambiguous account selection, though available single sign-on may be used automatically. Teams should add their own approval rules for irreversible actions because being logged in removes the website's most obvious barrier.

Python helpers make repeated site work easier to audit

Core browser code stays protected while the agent writes task-specific functions to agent-workspace/agent_helpers.py. If an upload or unusual widget needs a helper, the agent can implement it once and reuse it later. Domain skills can also supply site-specific instructions, but they are disabled unless BH_DOMAIN_SKILLS=1 is set. When enabled, the skill requires reading every matching domain file before improvising.

The interaction model favors the accessibility tree for locating controls, then calculates a box center and sends a coordinate click. Raw DOM JavaScript is a fallback for canvas or unusual elements, and screenshots are reserved for layout or imagery. This keeps normal actions close to what a user sees. It does not make generated helpers safe by default. Review network calls, selectors, loops, and file paths before a helper is allowed to operate unattended.

What happened when we ran it

Our Python 3.12 sandbox installed 42 packages in 39 seconds and used 60 MB on disk. The build succeeded in 10 seconds. Pytest then completed in 12 seconds with 140 passed and 0 failed of 140. Pip-audit reported 0 known vulnerabilities. commit 41108b8 therefore cleared every install, build, test, and dependency-audit check supplied to our fresh environment.

The checkout was small beside the other agent tools in this group: 177 files, about 8,406 lines of source, and 3.4 MB. We found 1 CI workflow, a tests directory, and no Dockerfile. Those results cover package mechanics and automated behavior, not the safety of using a personal browser. Our sandbox had no secrets, did not connect to a logged-in profile, did not approve remote debugging, and did not perform actions on an external account.

Chrome 144 or newer asks before remote debugging

The recommended installer uses uv with Python 3.12, registers the generated skill, and runs page_info() as a connection check. Chrome's remote-debugging page requires a one-time checkbox, and newer Chrome sessions can show an Allow prompt for the connection. On macOS, browser-harness mac-approve can handle that sheet if the terminal or IDE has Accessibility permission. The doctor command reports whether Chrome, the daemon, and cloud authentication are healthy.

Open issue 631 describes repeated approval prompts when daemon retries or concurrent invocations create fresh CDP connections. The report names short handshake timeouts, competing daemon starts, and aggressive health probes as causes in v0.1.9. Version 0.1.10 added an orchestrator health check and fail-closed daemon ownership behavior, but the issue remained open. Test connection recovery after Chrome restarts before expecting an unattended task to resume cleanly.

Recordings are useful evidence and sensitive local data

Fresh installs keep recording disabled. Enabling it saves screenshots and action traces locally, which can later support a video or an account of what the agent did. The install guide requires asking once and defaulting to no. It also says to preserve an existing preference during upgrades. This is the right default because a trace can contain inboxes, dashboards, customer records, session details, or anything else shown in the browser.

Configuration state lives under the user's config directory unless BH_HOME or BROWSER_HARNESS_HOME changes it. That location may include auth, a telemetry identifier, sockets, logs, screenshots, temporary files, and the agent workspace. Put it under normal workstation access controls, define retention for recordings, and inspect logs before sharing a bug report. Release v0.1.10 specifically redacted CDP credentials from daemon logs, showing that log contents are part of the security surface.

Cloud browsers trade personal state for parallel capacity

Local Chrome needs no Browser Use API key and suits one personal task. The skill recommends Browser Use Cloud for parallel agents, headless servers, or sites likely to present bot defenses. Cloud sessions provide managed browsers, previews, proxies, and other hosted features. They require authentication, and the instructions warn that a remote daemon can continue billing until it is stopped or reaches its timeout.

GitHub recorded 17,169 stars, 274 combined issues and pull requests, and a push on August 26, 2026. Version 0.1.10 shipped that day with daemon health, log redaction, timeout separation, and Windows or cloud fixes. Activity is high, but the version number and open issue 652 about an untracked Chrome process argue for supervision. Use a spare profile first, verify actions after each navigation, and close both local artifacts and paid remote sessions deliberately.

Alternatives

ProjectWhat it isPick it when
Browser Use gh↗A Python framework for agents that operate browsers through model-guided actions.pick this instead when you are building an agent application and want the broader framework rather than a coding-agent skill for your personal Chrome.
Playwright MCP gh↗An MCP server that exposes Playwright browser controls through structured tools.pick this instead when your client speaks MCP and you want a standard Playwright tool boundary.
StagehandA browser automation framework combining code with model-assisted actions and extraction.pick this instead when browser flows live inside an application codebase and need an explicit automation API.

What people are saying

  1. [github-trending] browser-use/browser-harness

Sources

  1. Browser Harness README
  2. Browser Harness install guide
  3. Browser Harness skill
  4. Browser Harness v0.1.10 release
  5. Untracked Chrome process issue 652

More automation reviews

rclone · lego · OpenCLI · web-access · Karabiner-Elements · WiiUDownloader · the whole board →