PlugWiki

Vercel agent-browser: a Skill That Gives Your Coding Agent a Browser

Lets Claude Code or another coding agent open and use a real browser from the terminal: click, fill forms, take screenshots and read pages.

Installs
1.3M
on skills.sh
Stars
45.1K
on GitHub
Updated
Nov 2026
last repo commit

agent-browser lets Claude Code or another coding agent open and use a real browser from the terminal. It reads a page as a short list of elements, then clicks, types and takes screenshots. The skill is only a small stub, so the install box installs the agent-browser command-line tool first. Out of the box it has no limits on where it browses, so turn on the safety options before you leave it unattended.

Good for

  • Developers who want their coding agent to test the web app it just built
  • QA and bug hunters who want an agent to click through a site and report what breaks
  • People who want an agent to fill forms, scrape pages or take screenshots
  • Teams comparing browser tools that use fewer tokens than Playwright MCP

Install agent-browser

Claude Code

  1. 1

    Copy this prompt.

    Install the agent-browser skill in Claude Code. Run this command:
    
    npm install -g agent-browser
    agent-browser install
    npx skills add vercel-labs/agent-browser
    
    Then check that it loaded and tell me how to use it.
  2. 2

    Paste it into Claude Code. It shows the change and asks before running it.

Requires Node.js.

The skill is a small stub; the agent-browser CLI holds the real instructions, so install both. agent-browser install downloads Chrome for Testing the first time (existing Chrome, Brave, Playwright and Puppeteer installs are detected). On Linux, run agent-browser install --with-deps for the system libraries; it uses sudo. Update with agent-browser upgrade. In Claude Code the skill lands at .claude/skills/agent-browser/SKILL.md and loads the workflow with agent-browser skills get core.

From the project README. Source.

What's in the skill

When it loads

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

Sections in SKILL.md

  1. Start here
  2. Specialized skills
  3. Why agent-browser
  4. Observability Dashboard

Key facts

License
Apache-2.0
Installs on skills.sh
1,330,979 (Nov 1, 2026)
Last commit
Nov 1, 2026

What it includes

  • Loads the real how-to guide for the agent from the installed CLI

    The installed skill is a stub. Its first instruction is to run `agent-browser skills get core` (add --full for the full command reference and templates) so the agent reads instructions that match the CLI version you have.

    Runs code · skills get core

  • Extra guides for desktop apps, Slack, QA bug hunts, API clients and cloud browsers

    Loaded with `agent-browser skills get <name>`: Electron apps like VS Code or Figma, Slack workspace tasks, exploratory testing, turning a recorded HAR into an API client, running in Vercel Sandbox, reaching protected Vercel previews, AWS AgentCore browsers, and building WebMCP tools.

    Runs code · Specialized skills (electron, slack, dogfood, derive-client, vercel-sandbox, protected-vercel-deployments, agentcore, webmcp-gen)

  • Starts the browser and goes to a page; close shuts it down

    `agent-browser open <url>` launches Chrome (headless by default) and navigates. The browser stays up between commands. `close` ends the session, `close --all` ends every session.

    Runs code · open / close

  • Lists what is on the page with short refs like @e1 the agent can act on

    Returns the page's accessibility tree with refs. `snapshot -i` keeps only interactive elements, which is what the core loop uses. Re-snapshot after the page changes.

    Read · snapshot

  • Clicks, types, picks options and uploads files on the page

    Acts on a ref or CSS selector: click buttons and links, clear-and-fill inputs, type text, press keys, choose dropdown values, tick checkboxes, drag and drop, and upload local files.

    Write · click / fill / type / press / select / check / upload / drag

  • Finds an element by role, label or text and acts on it

    For when refs do not fit: e.g. `find role button click --name "Submit"` locates by accessible role and name.

    Write · find (semantic locators)

  • Reads text, values, attributes, URL or title; checks visible or enabled

    `get text|html|value|attr|title|url|count|box|styles` pulls data from the page; `is visible|enabled|checked` answers yes or no.

    Read · get / is

  • Fetches a page as clean text or markdown without opening Chrome

    Fetches a URL as markdown or readable text, tries .md and llms.txt for docs sites, or reads the open tab's rendered DOM with your session's logins.

    Network · read

  • Waits for text, an element, a URL or the network to settle

    Pauses until a condition holds so the agent does not act on a half-loaded page; the core skill has a 'read this' section on waiting.

    Read · wait

  • Saves a picture or PDF of the page, with optional numbered labels

    `screenshot [path]` (--full for the full page, --annotate to number elements, --if-changed to skip unchanged images and save tokens). `pdf <path>` saves the page as PDF.

    Files · screenshot / pdf

  • Runs JavaScript inside the page

    Runs any JavaScript in the page and returns the result. Handy for extraction; can be gated with --confirm-actions eval or an action policy.

    Runs code · eval

  • Opens and switches tabs, enters iframes, answers pop-up dialogs

    Tabs have stable ids (t1, t2) or your own labels. `frame <sel>` enters an iframe. alert and beforeunload dialogs are auto-accepted; confirm and prompt need `dialog accept|dismiss`.

    Write · tab / window / frame / dialog

From the official docs

Permissions

Medium risk

agent-browser drives a real Chrome with no limits by default, and can use your logins. Turn on the domain allowlist and action policy before you leave it unattended.

What it can do

  • Read your data
  • Create and change things
  • Delete things
  • Read-only mode

Watch out for

  • skills.sh: Snyk warn

    W011, third-party content exposure (Oct 30, 2026): it browses arbitrary pages, so page text could carry hidden instructions to your agent. skills.sh

  • No guardrails unless you turn them on

    agent-browser's security page says navigation, action and output controls are opt-in. agent-browser.dev

  • Open: guardrail gaps

    An allowlist that parses to zero domains turns containment off (#1902), and the MCP server skips maxOutput and content boundaries (#2245). github.com

  • Fixed: repo config could launch programs

    A repo's ./agent-browser.json could name an executable that ran on open. Project config now accepts only a short list of display keys. github.com

  • skills.sh: Gen Agent Trust Hub pass

    Rated safe, with notes on prompt injection, the global npm install, instructions loaded at runtime and access to login sessions. skills.sh

  • skills.sh: Socket pass

    Passed on Oct 30, 2026 with no findings. skills.sh

Security advisories

No published security advisories as of Nov 2, 2026.

Technical details
Turning on read-onlyNo read-only mode. Narrow it with --allowed-domains, an --action-policy that denies eval, downloads or uploads, --confirm-actions for approval, and --max-output to cap page text. All are opt-in.
Talks toAny site the agent opens; no limits by default. Install: the npm package fetches the native binary from GitHub releases, and agent-browser install downloads Chrome for Testing. Cloud browser providers (Browserbase and others) and the chat command, only if you configure their keys
Sign-in and keysThe auth vault keeps passwords in ~/.agent-browser/auth/, encrypted with AES-256-GCM, and never puts them in the model's context.
Scopes
  • Drives a real Chrome: opens any URL, clicks, types, submits forms, uploads and downloads files, runs page JavaScript (eval)

  • With --profile or --auto-connect it uses your real Chrome logins and acts as you on those sites

  • Saves session state under ~/.agent-browser/sessions; tokens are plain text unless AGENT_BROWSER_ENCRYPTION_KEY is set

  • The import-auth flow starts Chrome with a remote debugging port that any local process can use; the README says trusted machines only

What people say

People like how few tokens it uses and how simple a CLI is, and dislike the thin docs and rough edges on Windows.

What people like

  • Uses far less context than Playwright MCP in Pulumi's six-test comparison.
  • Some developers find driving a browser by CLI faster than Playwright MCP.

Common complaints

  • Docs are thin and Playwright's waiting logic is more mature, per Pulumi's January 2026 test.
  • Windows Defender can quarantine the unsigned Windows binary.
  • Killed sessions can leave Chrome processes running.

In their words

Examples

  • Test a login flow by just telling the agent to use the tool

    Use agent-browser to test the login flow. Run agent-browser --help to see available commands.

    Your agent opens the app in Chrome, tries the login and reports what happened.

    Source
  • Natural-language control through the built-in chat command

    agent-browser chat "open google.com and search for cats"

    The chat command turns plain English into browser commands. It needs a Vercel AI Gateway key.

    Source
  • Summarize the page that is open

    agent-browser -q chat "summarize this page"

    Reads the page that is open and returns a short summary.

    Source
  • Fill a login form

    agent-browser -v chat "fill in the login form"

    Finds the form fields and fills them in.

    Source
  • Click through your own app and take screenshots

    Use agent-browser to open my local app on port 3000, click through the signup flow and take a screenshot of each step.

    The agent works through the flow and saves screenshots.

Questions

How do I install agent-browser?

Install the command-line tool, then the skill. Run npm install -g agent-browser (or brew install agent-browser on macOS), then agent-browser install once to download Chrome, then npx skills add vercel-labs/agent-browser. The skill alone does nothing: it tells your agent to load its real instructions from the installed tool. Skip the cargo route, which lags the npm release.

Does agent-browser work in Claude Code, Codex and Cursor?

Yes. The README lists Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Goose, OpenCode and Windsurf. The Claude app is not documented. Apps that support MCP can run its built-in MCP server instead, which is the closest documented route.

Is agent-browser free?

Yes. It is free and open source under Apache-2.0. Cloud browsers such as Browserbase and the optional chat command need their own API keys, and those providers may charge.

Is agent-browser safe?

It is medium risk. On skills.sh, Gen Agent Trust Hub and Socket pass it and Snyk warns that web pages could carry hidden instructions to your agent. By default it has no limits on where it goes or what it clicks. The permissions section above lists what it can do and how to lock it down.

Can agent-browser use my logged-in sessions?

Yes, if you ask it to. The profile option copies your real Chrome logins, so the agent acts as you on those sites. Saved session files keep login tokens in plain text unless you set an encryption key, so keep them out of git.

Can I limit what agent-browser can do?

Yes, but every limit is opt-in. You can restrict it to named domains, deny actions such as running JavaScript or uploads, and require approval for risky steps. Open issues report gaps in the domain list (#1902) and in the MCP server's output limits (#2245).

agent-browser vs Playwright MCP: which uses fewer tokens?

In one Pulumi test published in January 2026, six tasks took about 1,400 tokens with agent-browser and about 7,800 with Playwright MCP. It ran on an early release, and the same author found Playwright's waiting logic better. Microsoft says its Playwright CLI also uses fewer tokens than MCP, but no measured comparison with agent-browser exists. See our Playwright MCP page.

Does agent-browser work on Windows?

A Windows x64 build ships, but some users report Windows Defender quarantining it because the binary is unsigned. Code signing is an open request. If Defender blocks it, you may need to allow the file.

Why are Chrome processes left running after I stop the agent?

Killed or timed-out sessions can leave Chrome helper processes running at high CPU, and an interrupted start can leave a stuck background browser. Run the doctor command, which cleans stale files. The browser also closes itself after an hour of no commands.

Why can't OpenCode find the agent-browser skill?

The skill file is marked hidden, and an open issue (#1337) says OpenCode then skips it. The reporter fixed it by deleting the hidden line from the installed skill file. Whether Claude Code or other clients skip hidden skills is not confirmed.

Information

updated Nov 2, 2026

Folder
skills/agent-browser

agent-browser.devvercel-labs/agent-browsernpmskills.shChangelogSecurity

Sources

Docs, issue trackers and discussions this page is built from.

Show all 51
  1. agent-browser README · github.com
  2. agent-browser installation · agent-browser.dev
  3. Skill file has hidden: true, prevents loading in OpenCode · github.com
  4. github.com · github.com
  5. agent-browser security · agent-browser.dev
  6. vercel.com · vercel.com
  7. github.com · github.com
  8. github.com · github.com
  9. github.com · github.com
  10. github.com · github.com
  11. skills.sh · skills.sh
  12. GitHub repo · github.com
  13. github.com · github.com
  14. github.com · github.com
  15. github.com · github.com
  16. github.com · github.com
  17. github.com · github.com
  18. github.com · github.com
  19. github.com · github.com
  20. github.com · github.com
  21. github.com · github.com
  22. github.com · github.com
  23. github.com · github.com
  24. github.com · github.com
  25. github.com · github.com
  26. github.com · github.com
  27. github.com · github.com
  28. github.com · github.com
  29. github.com · github.com
  30. github.com · github.com
  31. github.com · github.com
  32. github.com · github.com
  33. Snyk · skills.sh
  34. Socket · skills.sh
  35. Gen Agent Trust Hub · skills.sh
  36. github.com · github.com
  37. github.com · github.com
  38. An allowlist that parses to zero domains turns containment off instead of failing · github.com
  39. Pulumi blog · pulumi.com
  40. Playwright CLI · github.com
  41. github.com · github.com
  42. github.com · github.com
  43. github.com · github.com
  44. github.com · github.com
  45. crates.io · crates.io
  46. MCP server: maxOutput and contentBoundaries are not applied to tool text · github.com
  47. Auto-discovered project configuration launches repository-controlled executables · github.com
  48. Hacker News comment · news.ycombinator.com
  49. news.ycombinator.com · news.ycombinator.com
  50. github.com · github.com
  51. github.com · github.com

Updated Nov 2, 2026.