| 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 --connect open <url>
browser-use --cdp-url ws://localhost:9222/... open <url>
--connect and --cdp-url are mutually exclusive.
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 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).
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.
Connecting to Existing Chrome
browser-use --connect open https://example.com
Requires Chrome with remote debugging enabled. Falls back to probing ports 9222/9229.
Global Options
| Option | Description |
|---|
--headed | Show browser window |
--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