by browser-use
Browser Harness | Self-healing harness that enables LLMs to complete any task.
# Add to your Claude Code skills
git clone https://github.com/browser-use/browser-harnessGuides for using ai agents skills like browser-harness.
Last scanned: 5/15/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-15T06:56:11.788Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}browser-harness is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by browser-use. Browser Harness | Self-healing harness that enables LLMs to complete any task. It has 15,469 GitHub stars.
Yes. browser-harness passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/browser-use/browser-harness" and add it to your Claude Code skills directory (see the Installation section above). browser-harness ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
browser-harness is primarily written in Python. It is open-source under browser-use on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh browser-harness against similar tools.
No comments yet. Be the first to share your thoughts!
Direct browser control via CDP. For task-specific edits, use agent-workspace/agent_helpers.py. For setup, install, or connection problems, read https://github.com/browser-use/browser-harness/blob/main/install.md.
Domain skills are off by default. Set BH_DOMAIN_SKILLS=1 to enable them; see the bottom section.
If BH_DOMAIN_SKILLS=1 and the task is site-specific, read every file in the matching $BH_AGENT_WORKSPACE/domain-skills/<site>/ directory before inventing an approach.
browser-harness <<'PY'
print(page_info())
PY
browser-harness. Use heredocs for multi-line commands.run.py calls ensure_daemon() before exec.new_tab(url), not goto_url(url).If the daemon cannot connect, run diagnostics:
browser-harness --doctor
If Chrome remote debugging is not enabled, the harness opens:
chrome://inspect/#remote-debugging
Ask the user to tick "Allow remote debugging for this browser instance" and click Allow if Chrome shows a permission popup. Then retry the same browser-harness command.
Use Browser Use cloud for headless servers, parallel sub-agents, or isolated work. Authenticate once:
browser-harness auth login
Or import a key safely:
browser-harness auth login --api-key-stdin
Pick a short made-up name; r7k2 below is just a placeholder:
browser-harness <<'PY'
start_remote_daemon("r7k2")
PY
BU_NAME=r7k2 browser-harness <<'PY'
new_tab("https://example.com")
print(page_info())
PY
When the task is done and a cloud browser is still running, ask directly: "Should I close this browser now?" If yes, run stop_remote_daemon(name). Remote daemons bill until they stop or time out.
Do not start a remote daemon and then keep using the default daemon. Use the same name for BU_NAME.
Cloud profile cookie sync reference: https://github.com/browser-use/browser-harness/blob/main/interaction-skills/profile-sync.md.
capture_screenshot() to understand visible state.click_at_xy(x, y) -> screenshot again.wait_for_load().ensure_real_tab().js(...) for DOM inspection or extraction when coordinates are the wrong tool.cdp("Domain.method", ...).If you get stuck on a browser mechanic, check https://github.com/browser-use/browser-harness/tree/main/interaction-skills.
BU_NAME, BU_CDP_URL, BU_CDP_WS, or start_remote_daemon(...).$BH_AGENT_WORKSPACE/agent_helpers.py.chrome://inspect/#remote-debugging must be enabled for local Chrome control.BU_CDP_URL is an HTTP DevTools endpoint; the daemon resolves it to WebSocket.stop_remote_daemon(name) or PATCH /browsers/{id} {"action":"stop"}.Only applies when BH_DOMAIN_SKILLS=1. Otherwise ignore domain skills.
When enabled, search $BH_AGENT_WORKSPACE/domain-skills/<host>/ before inventing an approach. goto_url(...) returns up to 10 skill filenames for the navigated host.
Connect an LLM directly to your real browser with a thin, editable CDP harness. For browser tasks where you need complete freedom.
One websocket to Chrome, nothing between. The agent writes what's missing during execution. The harness improves itself every run.
Try browser-harness in Browser Use Cloud or paste the setup prompt into your coding agent.
● agent: wants to upload a file
│
● agent-workspace/agent_helpers.py → helper missing
│
● agent writes it agent_helpers.py
│ + custom helper
✓ file uploaded
You will never use the browser again.
Paste into Claude Code or Codex:
Install or upgrade browser-harness to the latest stable version with uv using Python 3.12, register the skill from `browser-harness skill`, and connect it to my browser. Follow https://github.com/browser-use/browser-harness/blob/main/install.md if setup or connection fails.
The agent will open chrome://inspect/#remote-debugging. Tick the checkbox so the agent can connect to your browser:
Click Allow when the per-attach popup appears (Chrome 144+):
See agent-workspace/domain-skills/ for example tasks.
Stealth, sub-agents, or headless deployment. Browser Use Cloud free tier: 3 concurrent browsers, proxies, captcha solving, and more. No card required.
install.md — first-time install and browser bootstrapSKILL.md — day-to-day usagesrc/browser_harness/ — protected core package${XDG_CONFIG_HOME:-~/.config}/browser-harness/agent-workspace/agent_helpers.py — helper code the agent edits${XDG_CONFIG_HOME:-~/.config}/browser-harness/agent-workspace/domain-skills/ — reusable site-specific skills the agent editsPlain browser-harness helper calls attach to the running Chrome/Chromium CDP endpoint. For isolated automation, launch Chrome yourself with --remote-debugging-port and pass BU_CDP_URL, or use a Browser Use cloud browser.
From a checkout, use ./browser-harness to run the current working tree without activating a virtualenv or depending on the globally installed command:
./browser-harness <<'PY'
print(page_info())
PY
Normal agent-facing docs should keep using browser-harness; the ./browser-harness launcher is only for local repo testing.
PRs and improvements welcome. The best way to help: contribute a new domain skill under agent-workspace/domain-skills/ for a site or task you use often (LinkedIn outreach, ordering on Amazon, filing expenses, etc.). Each skill teaches the agent the selectors, flows, and edge cases it would otherwise have to rediscover.
domain-skills/<site>/ folder copied into this repo's agent-workspace/domain-skills/ examples — small and focused is great.github/, linkedin/, amazon/, ...) to see the shape.If you're not sure where to start, open an issue and we'll point you somewhere useful.
Set BH_DOMAIN_SKILLS=1 to enable domain skills from the agent workspace. This repo's agent-workspace/domain-skills/ directory contains examples to contribute via PR.
The Bitter Lesson of Agent Harnesses · Web Agents That Actually Learn