| name | browser |
| description | Interact with websites using agent-browser — navigate, click, fill, extract text, screenshot, log in, and test web apps. Use when the user asks to browse a site, automate browser actions, check a page in browser, scrape rendered content, or verify UI behavior. |
| metadata | {"tested-with":"agent-browser 0.33.1"} |
Use agent-browser for browser automation. Prefer it over curl, web_fetch, or guessing DOM structure when the task needs a real page, JavaScript, login state, or interaction.
Core loop
agent-browser open <url>
agent-browser snapshot -i
agent-browser click @e3
agent-browser snapshot -i
Refs (@e1, @e2, …) are assigned fresh on every snapshot. They become stale after navigation, submits, re-renders, or dialogs. Always re-snapshot before the next ref interaction.
Reading a page
agent-browser snapshot -i
agent-browser snapshot -i -c
agent-browser snapshot -i -u
agent-browser snapshot -i --json
agent-browser snapshot -s "#main" -i
agent-browser get text @e1
agent-browser get value @e1
agent-browser get attr @e1 href
agent-browser get title
agent-browser get url
agent-browser read
Interacting
agent-browser click @e1
agent-browser fill @e2 "hello"
agent-browser type @e2 " world"
agent-browser press Enter
agent-browser check @e3
agent-browser select @e4 "option-value"
agent-browser upload @e5 file.pdf
agent-browser scroll down 500
agent-browser scrollintoview @e1
agent-browser hover @e1
When refs fail, use semantic locators:
agent-browser find role button click --name "Submit"
agent-browser find label "Email" fill "user@test.com"
agent-browser find placeholder "Search" fill "query"
agent-browser click "#submit"
Prefer snapshot refs first, then find, then CSS.
Waiting
agent-browser wait @e1
agent-browser wait --text "Success"
agent-browser wait --url "**/dashboard"
agent-browser wait --load networkidle
Avoid bare wait 2000 except when debugging.
Tabs and sessions
agent-browser tab
agent-browser tab new https://example.com
agent-browser tab t2
agent-browser tab close t2
Each --session <name> is an isolated browser. Derive stable ids when needed:
SESSION="$(agent-browser session id --scope worktree --prefix my-app)"
agent-browser --session "$SESSION" --restore open https://app.example.com
Screenshots and cleanup
agent-browser screenshot page.png
agent-browser screenshot --full full.png
agent-browser close
Sensitive flows
For credentials, prefer the auth vault over shell history:
agent-browser auth save my-app --url https://app.example.com/login \
--username user@example.com --password-stdin
agent-browser auth login my-app
For restricted domains, use --allowed-domains on supported Chromium sessions.