Browser Harness lets LLMs control Chrome via raw CDP
Browser Harness, from the browser-use team, ditches predefined browser automation wrappers and instead gives LLMs direct access to Chrome's CDP websocket, letting them write and extend their own browser tools on the fly.
Score breakdown
Developers building LLM browser agents can use Browser Harness to eliminate entire categories of brittle, heuristic-based wrapper code by letting the model handle edge cases directly via CDP — reducing maintenance burden and silent failure modes.
- 01Browser Harness replaces predefined browser automation wrappers with a minimal CDP websocket daemon, a small `helpers.py`, and a `SKILL.md` instruction file.
- 02The team's existing Browser Use library contains tens of thousands of lines of deterministic heuristics handling edge cases like cross-origin iframes, native file popups, and crash watchdogs.
- 03The core failure mode of predefined-function approaches is silent: a `click()` returns success but nothing happened on the page, leaving the LLM with a broken world model.
Browser Harness, posted to Hacker News by the browser-use team, is a new approach to LLM-driven browser automation that strips away the thousands of lines of deterministic heuristics found in the team's existing Browser Use library. That library wraps Chrome's CDP websocket with element extractors, click helpers, target management, watchdogs for crash handling and file downloads, and cross-origin iframe handling — all of which require constant maintenance as new edge cases emerge. The core problem with predefined-function approaches (including Playwright MCP, browser-use CLI, agent-browser, and Chrome DevTools MCP) is a silent failure mode: a `click()` call returns success, the LLM assumes the action worked, and it proceeds with a broken model of the world.
The new paradigm reduces the harness to three components: a daemon that keeps the CDP websocket alive, a minimal `helpers.py` with basic utilities, and a `SKILL.md` file that explains how to use them.
The new paradigm reduces the harness to three components: a daemon that keeps the CDP websocket alive, a minimal `helpers.py` with basic utilities, and a `SKILL.md` file that explains how to use them. Because modern LLMs have strong knowledge of CDP, they can handle edge cases — switching targets for cross-origin iframes, dismissing alerts, writing upload functions — without any pre-coded heuristics. The harness also supports self-correction and dynamic tool creation, allowing the agent to add new functions to `helpers.py` mid-task. Among the examples shared, demonstrated capabilities include playing Stockfish, setting a Tetris world record, and drawing a heart using JavaScript. The project can be installed by pointing Claude Code at the GitHub repo URL.
Key facts
- 01Browser Harness replaces predefined browser automation wrappers with a minimal CDP websocket daemon, a small `helpers.py`, and a `SKILL.md` instruction file.
- 02The team's existing Browser Use library contains tens of thousands of lines of deterministic heuristics handling edge cases like cross-origin iframes, native file popups, and crash watchdogs.
- 03The core failure mode of predefined-function approaches is silent: a `click()` returns success but nothing happened on the page, leaving the LLM with a broken world model.
- 04Modern LLMs know CDP well enough to handle edge cases — such as switching iframe targets or dismissing alerts — without pre-coded heuristics.
- 05In one live example, the agent found no `upload_file` function, grepped `helpers.py`, and wrote the function itself using raw `DOM.setFileInputFiles`, which the team only discovered in a git diff.