| name | browser-use |
| description | Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages. |
| allowed-tools | Bash(browser-use:*) |
Browser Automation with browser-use CLI
The browser-use command provides fast, persistent browser automation. A background daemon keeps the browser open across commands, giving ~50ms latency per call.
Prerequisites
browser-use doctor
For setup details, see https://github.com/browser-use/browser-use/blob/main/browser_use/skill_cli/README.md
Core Workflow
- Navigate:
browser-use open <url> — starts browser if needed
- Inspect:
browser-use state — returns clickable elements with indices
- Interact: use indices from state (
browser-use click 5, browser-use input 3 "text")
- Verify:
browser-use state or browser-use screenshot to confirm
- Repeat: browser stays open between commands
- Cleanup:
browser-use close when done
Browser Modes
browser-use open <url>
browser-use --headed open <url>
browser-use --profile "Default" open <url>
browser-use --profile "Profile 1" open <url>
browser-use --connect open <url>
browser-use --cdp-url ws://localhost:9222/... open <url>
--connect, --cdp-url, and --profile are mutually exclusive.
OpenClaw alignment
- Gateway browser config (
openclaw.json: browser.headless, browser.profiles, browser.ssrfPolicy) governs in-process browser tools; this skill covers the browser-use CLI when agents run shell commands.
- Prefer headless for automation; use
--headed only for debugging.
Commands
browser-use open <url>
browser-use back
browser-use scroll down
browser-use scroll up
browser-use switch <tab>
browser-use close-tab [tab]
browser-use state
browser-use screenshot [path.png]
browser-use click <index>
browser-use click <x> <y>
browser-use type "text"
browser-use input <index> "text"
browser-use keys "Enter"
browser-use select <index> "option"
browser-use upload <index> <path>
browser-use hover <index>
browser-use dblclick <index>
browser-use rightclick <index>
browser-use eval "js code"
browser-use get title
browser-use get html [--selector "h1"]
browser-use get text <index>
browser-use get value <index>
browser-use get attributes <index>
browser-use get bbox <index>
browser-use wait selector "css"
browser-use wait text "text"
browser-use cookies get [--url <url>]
browser-use cookies set <name> <value>
browser-use cookies clear [--url <url>]
browser-use cookies export <file>
browser-use cookies import <file>
browser-use python "code"
browser-use python --file script.py
browser-use python --vars
browser-use python --reset
browser-use close
browser-use sessions
browser-use close --all
The Python browser object provides: browser.url, browser.title, browser.html, browser.goto(url), browser.back(), browser.click(index), browser.type(text), browser.input(index, text), browser.keys(keys), browser.upload(index, path), browser.screenshot(path), browser.scroll(direction, amount), browser.wait(seconds).
Cloud API
browser-use cloud connect
browser-use cloud connect --timeout 120 --proxy-country US
browser-use cloud login <api-key>
browser-use cloud logout
browser-use cloud v2 GET /browsers
browser-use cloud v2 POST /tasks '{"task":"...","url":"..."}'
browser-use cloud v2 poll <task-id>
browser-use cloud v2 --help
cloud connect provisions a cloud browser, connects via CDP, and prints a live URL. browser-use close disconnects AND stops the cloud browser.
Tunnels
browser-use tunnel <port>
browser-use tunnel list
browser-use tunnel stop <port>
browser-use tunnel stop --all
Profile Management
browser-use profile list
browser-use profile sync --all
browser-use profile update
Command Chaining
Commands can be chained with &&. The browser persists via the daemon, so chaining is safe and efficient.
browser-use open https://example.com && browser-use state
browser-use input 5 "user@example.com" && browser-use input 6 "password" && browser-use click 7
Chain when you don't need intermediate output. Run separately when you need to parse state to discover indices first.
Common Workflows
Authenticated Browsing
When a task requires an authenticated site (Gmail, GitHub, internal tools), use Chrome profiles:
browser-use profile list
browser-use --profile "Default" open https://github.com
Connecting to Existing Chrome
browser-use --connect open https://example.com
Requires Chrome with remote debugging enabled. Falls back to probing ports 9222/9229.
Exposing Local Dev Servers
browser-use tunnel 3000
browser-use open https://abc.trycloudflare.com
Global Options
| Option | Description |
|---|
--headed | Show browser window |
--profile [NAME] | Use real Chrome (bare --profile uses "Default") |
--connect | Auto-discover running Chrome via CDP |
--cdp-url <url> | Connect via CDP URL (http:// or ws://) |
--session NAME | Target a named session (default: "default") |
--json | Output as JSON |
--mcp | Run as MCP server via stdin/stdout |
Tips
- Always run
state first to see available elements and their indices
- Use
--headed for debugging to see what the browser is doing
- Sessions persist — browser stays open between commands
- CLI aliases:
bu, browser, and browseruse all work
Troubleshooting
- Browser won't start?
browser-use close then browser-use --headed open <url>
- Element not found?
browser-use scroll down then browser-use state
- Run diagnostics:
browser-use doctor
Cleanup
browser-use close
browser-use tunnel stop --all