agent-browser Claude skills

A native browser-automation CLI for agents, plus 11 skills that teach the snapshot-and-ref workflow for navigating, filling forms, scraping and testing.

Our verdict Recommended

A maintained, widely installed first-party CLI with unusually thorough skills; the main thing to manage is that it can hold your logins and cookies.

What agent-browser does

agent-browser is first a command-line tool, and only second a skill pack. You install a Rust binary (npm, Homebrew or Cargo), run agent-browser install to fetch Chrome for Testing, and the agent drives a real Chrome through short shell commands: open a URL, take an accessibility-tree snapshot whose elements carry refs like @e2, then click, fill, type or read text by ref. The README says refs keep each page read to a few hundred tokens instead of raw HTML.

The skill that ships through npx skills add is deliberately a thin stub. It tells the agent to run agent-browser skills get core, so the actual instructions come from the installed CLI version and cannot drift from the commands. The core skill is about 40 KB with ten reference files (authentication, session management, snapshots and refs, proxy support, video recording, profiling, WebGPU, trust boundaries) and three shell templates for form automation, authenticated sessions and capture workflows. Smaller skills cover Electron apps, Slack, Vercel Sandbox, protected Vercel deployments, AWS Bedrock AgentCore cloud browsers, a dogfood QA pass, deriving an API client from network traffic and generating WebMCP tools. The README also lists session persistence, an encrypted local credential vault, Chrome profile reuse, network routing, accessibility audits with axe, and an MCP profile.

Good for

  • Agents that need to drive a real browser from the shell: forms, logins, scraping, screenshots
  • Testing and QA of a web app you are building
  • Token-conscious browsing where full-page HTML would be too large

Not for

  • Teams that want a pure-instructions skill with no binary to install
  • Heavy anti-bot scraping at scale, which is not what the README positions it for

What's inside depth 4/5

11 skills averaging about 10 KB, a 40 KB core skill with ten reference files and three script templates, a compiled CLI behind it, 28 eval-related files in the repo and CI.

Skills
11
Reference docs
15
Scripts
3
Tests / evals
28
Templates
5
Avg SKILL.md
10 KB

Counted from the repository file tree. How we score depth.

Dependencies and costs

  • Node.js/npm, Homebrew or Cargo to install the CLI
  • Chrome for Testing, downloaded by agent-browser install (or an existing Chrome, Brave, Playwright or Puppeteer install)
  • ffmpeg for video recording
  • AWS credentials for the agentcore skill; Vercel credentials for the Vercel Sandbox skill
  • Node 24+, pnpm 11+ and Rust only to build from source
  • Telemetry: none found in the README or skill files we read; the compiled binary's source was not part of the sample, so this is not a code audit.

Step by step: a first browser session

After you install the CLI and run agent-browser install, most sessions follow the loop the core skill teaches. You open a page, take a snapshot, act on elements by ref, read the result, and close the browser.

agent-browser open example.com
agent-browser snapshot
agent-browser click @e2
agent-browser fill @e3 "test@example.com"
agent-browser get text @e1
agent-browser screenshot page.png
agent-browser close

On Linux, run agent-browser install --with-deps first. It exits nonzero if the package manager cannot install every required browser library, so a CI job fails at setup and not halfway through a run.

Refs are the default, but you can also use CSS selectors and semantic finders:

agent-browser click "#submit"
agent-browser find role button click --name "Submit"
agent-browser find text "Sign In" click

For text-only reads, agent-browser read [url] fetches agent-readable text or reads the rendered DOM of the active tab. In loops that take many screenshots, the README recommends agent-browser screenshot --if-changed, which skips unchanged images to save tokens.

Three behaviors catch new users:

  • A click fails early when another element covers the target's click point, such as a consent banner or modal. Dismiss or interact with the covering element the error reports, take a fresh snapshot, and then retry the original ref.
  • click and dblclick return an error, not a success, when the element is hidden, disabled, or outside the viewport. click --new-tab opens the link's URL directly, so it skips these checks.
  • Headless Chromium screenshots hide native scrollbars. Pass --hide-scrollbars false at launch if you need them in the image.

How the agent chooses between WebMCP tools and the page UI

The core skill puts one step before clicking: check whether the site exposes WebMCP tools. When you open a page, the response may include a WebMCP summary. The summary lists only tool names, short descriptions, origins, and frame IDs. Full schemas are never sent unless the agent asks for them. Pages with no tools, and catalogs that have not changed, add nothing to the context.

If an advertised tool matches the task the user authorized, the skill tells the agent to use that tool and not rebuild the same operation out of DOM clicks. The agent fetches that one tool's schema, checks the inputs and intended effect against the request, and then invokes it:

agent-browser open <url>
agent-browser webmcp list <tool> --frame <frame-id> --json
agent-browser webmcp invoke <tool> --frame <frame-id> --params '{"key":"value"}'

If no relevant tool exists, the agent continues with the normal snapshot-and-ref workflow and does not probe for WebMCP. Tool metadata counts as untrusted website data, and the skill tells the agent to treat suspicious tools as unavailable. After context compaction, webmcp list restores the catalog. The daemon subscribes to WebMCP events once per page session, so it does not poll on every action. If you build the site yourself, the separate webmcp-gen skill covers generating WebMCP tools for it.

Keeping logins between runs

The README describes several ways to persist browser sessions so the agent does not have to log in again on every run:

  • Chrome profile reuse: --profile <name> or the AGENT_BROWSER_PROFILE environment variable reuses the cookies and sessions of an existing Chrome profile. On Windows, close Chrome before you do this, because some profile files may be locked while it runs.
  • Auth vault: auth save stores credentials locally in encrypted form, and auth login signs in by name.
  • State files: saved session state, managed with agent-browser state list, state show <file>, state rename <old> <new>, and state clear [name].

By default, auth login navigates to the credential URL before it looks for the form. That breaks flows where the agent first has to click a link, clear a challenge, or dismiss a consent dialog. For those flows, use --no-navigate, which needs an active top-level HTTP(S) page:

agent-browser click "a[href='/login']"
agent-browser auth login work --no-navigate

auth login also filters candidate fields by layout size, visibility, opacity, and disabled or readonly state, so the agent does not fill a hidden decoy input.

The docs also recommend adding state files to .gitignore and cleaning up when a job finishes:

agent-browser cookies clear
rm -f ./auth-state.json

The authentication reference in the core skill covers OAuth, SSO, two-factor flows, HTTP basic auth, and cookie-based auth in more detail.

Running on a remote browser with AWS Bedrock AgentCore

If the browser should run in the cloud and not on your machine, the agentcore skill points agent-browser at AWS Bedrock AgentCore browser sessions. According to the skill, every standard command works the same way. Only the browser's location changes, and you select it with -p agentcore:

agent-browser -p agentcore open https://example.com
agent-browser snapshot -i
agent-browser click @e1
agent-browser screenshot page.png
agent-browser close

Credentials resolve in this order. First come the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, plus AWS_SESSION_TOKEN if you use one. If those are missing, the skill falls back to aws configure export-credentials, which supports SSO, IAM roles, and named profiles. If your AWS CLI already works, you need no extra setup.

Optional settings:

  • AGENTCORE_REGION, default us-east-1
  • AGENTCORE_BROWSER_ID, default aws.browser.v1
  • AGENTCORE_PROFILE_ID, a persistent profile for cookies and localStorage, with no default
  • AGENTCORE_SESSION_TIMEOUT, in seconds, default 3600
  • AWS_PROFILE, default default

Set AGENTCORE_PROFILE_ID to keep a login across runs. You log in once with a given profile ID, and later runs that use the same ID open already authenticated. When a session starts, AgentCore prints a Live View URL to stderr. Open it to watch the remote browser in real time from the AWS Console, which helps when you need to see what an unattended agent is doing.

Security review

Review before installing

A browser-automation skill whose SKILL.md files pre-approve any agent-browser command (and, for one sub-skill, any vercel/vc command). The tool can optionally reuse your real Chrome profile or save session cookies to state files, which are plaintext unless AGENT_BROWSER_ENCRYPTION_KEY is set; the reference docs tell the agent to treat page content as untrusted and keep secrets out of the model. The CLI itself is a separate binary that was not reviewed.

Worth knowing

  • browser_session_optionalDocuments optional --profile <name> (reuse your real Chrome profile cookies) and --auto-connect + state save to copy auth from a running logged-in Chrome; also skill-data/core/references/authentication.md. These are opt-in options, not run by default.README.md:672
  • Relies on a CLI or package we could not reviewThe skill is a stub that tells the agent to load its workflow from the installed agent-browser CLI (agent-browser skills get core); the Rust CLI/daemon source is not in the reviewed files.skills/agent-browser/SKILL.md:12
  • Installs packages or toolsInstall via npm i -g / brew / cargo, then agent-browser install downloads Chrome for Testing; video recording needs ffmpeg (brew/apt).README.md:20
  • Makes network requestsThe CLI makes HTTPS requests for install, upgrade, doctor and read, and drives a browser that visits whatever URLs the agent is told to open; optional cloud providers and AI Gateway chat use external endpoints.README.md:1224
  • Needs an API key for its own serviceThe optional chat command uses AI_GATEWAY_API_KEY, sent to the Vercel AI Gateway; the agentcore and vercel-sandbox skills use AWS / VERCEL_TOKEN credentials for their own services.README.md:1157

What we checked

The repository (518 files) on Oct 29, 2026. Not a full review: 480 of 518 files were not downloaded (large repository; we reviewed the skill folders); it relies on code outside the repository: npm/brew/cargo package agent-browser (Rust CLI and daemon; source not in the reviewed files) and the skill content it serves via 'skills get'; Chrome for Testing binary downloaded by 'agent-browser install'; @agent-browser/sandbox, @vercel/sandbox and the Vercel CLI used by the vercel-sandbox and protected-vercel-deployments skills.

NVIDIA SkillSpector static scan: 28 pattern hits (MCP Rug Pull 12, Tool Misuse 5, Privilege Escalation 4, Memory Poisoning 2, YARA Match 2, Prompt Injection 1). The HIGH hits are documentation: trust-boundaries.md quotes 'ignore previous instructions' as an example of page text the agent must not obey, 'rm -f auth-state.json' and 'rm -rf' are cleanup/Dockerfile examples, 'access token' and 'Clear state' appear in prose, and the info_stealer YARA hit is the auth doc describing cookie import from your own Chrome. Unpinned 'npx' hits are install instructions.

A review, not a certification. Skills change after we check them — read the files before installing.

License

Apache-2.0 — commercial use allowed.

Can it run unattended?

Yes. It is a scriptable CLI with JSON output, batch mode, persistent sessions and timeouts, so unattended runs are practical; success checking is left to the agent.

Alternatives to agent-browser

playwright-cli

microsoft/playwright-cli

Microsoft's command-line interface for driving a browser through Playwright, plus a skill that teaches coding agents the commands.

Recommended Check first Depth 3/5

Browser Use

browser-use/browser-use

Seven skills around the Browser Use browser agent: drive local Chrome over CDP, use the paid cloud API, run QA scoring, or pay by crypto wallet.

With caveats Broad access Depth 3/5

Chrome DevTools MCP

ChromeDevTools/chrome-devtools-mcp

Google's Chrome DevTools MCP server and CLI, plus seven skills for debugging performance, memory leaks, cookies and accessibility in a live Chrome.

With caveats Check first Depth 3/5

BrowserAct Skills

browser-act/skills

A browser-automation CLI skill with stealth browsers, CAPTCHA solving and handoff to a human, plus about 100 ready-made scraper skills for shops and lead sources.

With caveats Broad access Depth 3/5

FAQ

What is agent-browser?

agent-browser is an open-source Vercel Labs CLI that lets coding agents control Chrome from the shell. It snapshots a page as an accessibility tree with short refs such as @e2, and the agent clicks or fills elements by ref. The repo also ships skills that explain the workflow.

How do I install agent-browser for Claude Code?

Install the CLI with npm install -g agent-browser (or Homebrew or Cargo) and run agent-browser install to download Chrome. Then run npx skills add vercel-labs/agent-browser, which adds a small stub skill that loads the full instructions from the CLI at runtime.

Is agent-browser safe to use?

We found no hidden network calls or obfuscated code in the files we read, and its docs include a section telling the agent to treat page content as untrusted data. The risk is practical: it can reuse your Chrome profile and store session cookies, so use a separate profile, set the encryption key and delete state files you no longer need.

agent-browser vs Playwright CLI: which should I use?

agent-browser is built around compact snapshots and refs for LLM agents and does not need Playwright or Node for its daemon. Microsoft's Playwright CLI is the better fit if you already generate Playwright tests and want recorded code. Both drive a real browser from the command line.

How do I update agent-browser?

Run agent-browser upgrade. It detects whether you installed with npm, Homebrew, or Cargo and runs the matching update command. Because the npx skills add stub loads its instructions from the installed CLI, upgrading the binary also updates the skill content the agent reads.

Can agent-browser inspect a React app?

Yes. The react subcommands need --enable react-devtools when you launch the browser. The React DevTools hook is embedded in the binary. If you launch without that flag, the react commands return an error saying the hook is not installed.

Can I watch what the agent is doing in the browser?

When you run on AWS Bedrock AgentCore with -p agentcore, the session prints a Live View URL to stderr that you can open to follow the browser in real time. Locally, you can capture screenshots during the run, and video recording is available if ffmpeg is on your PATH.

Sources: GitHub repository (stars, license, file tree, last push Oct 29, 2026); install counts from skills.sh via Best Skills (CC BY 4.0). Review based on the README and SKILL.md files as published.