Getting Started

Installation

Installing chrome-use is just three things: install the CLI with one command, add the Chrome extension and register the local bridge, and pull the agent skills into your project. It ships as prebuilt binaries via GitHub Releasesno npm, no token—so neither the publisher nor you has to log into any account. Once installed, run chrome-use doctor to self-check in one shot.

Install the CLI in one line

Download the prebuilt binary for your platform from the latest GitHub Release to install chrome-use (plus the short alias abs). This is the primary distribution channel—it doesn't go through npm and needs no token.

one-line install
$ curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh
ℹ️ One binary, two names
chrome-use and abs are the same executableabs is just a short alias. There's no separate "stealth executable"; anti-detection is runtime behavior. Connecting to your real Chrome applies zero patches, and only --launch (opening a fresh browser) applies the full patch set. See Connecting to your real Chrome.

Other install methods

When you need a pinned version, a custom install directory, or manual placement on Windows:

bash
# pin a specific version
$ AGENT_BROWSER_VERSION=v1.5.70 curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh

# install to a custom directory
$ AGENT_BROWSER_BIN_DIR=$HOME/bin curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh

For the list of pinnable tags, see Lineage—how the tags evolved from the agent-browser fork (early v0.x-fork.N tags) to today's chrome-use v1.5.x tags.

⚠️ Multiple installs can shadow each other
If which -a chrome-use shows more than one install, an older npm / pnpm copy may be shadowing the newer build installed by install.sh (the npm registry lags behind GitHub Releases). Remove the old copy—npm rm -g chrome-use or pnpm rm -g chrome-use—so the new build takes effect.

Install the extension, connect your real Chrome

To drive the real Chrome you're already logged into (reusing existing sessions, no confirmation prompts), install the browser extension and register the local bridge once. This is the recommended path.

  1. Install the chrome-use extension from the Chrome Web Store with a one-click Add to Chrome. The store build stays stable across restarts, which suits unattended use. Confirm you got the right one by the listing name chrome-use and extension ID knfcmbamhjmaonkfnjhldjedeobeafmk (its repo codename is ab-connect).
  2. Register the native-messaging host—one time:
connect your real Chrome
# register the local bridge (one time)
$ chrome-use extension install

# after that, open drives your already-logged-in Chrome directly
$ chrome-use open https://x.com/home

From then on, chrome-use open drives your real, already-logged-in Chrome through native messaging—no debug port, no token, and never an "Allow remote debugging?" prompt. The extension auto-updates and stays connected across restarts, so you never confirm again on later calls. For how the connection works, see Connecting to your real Chrome.

ℹ️ Windows uses this extension path too
chrome-use extension install works on Windows: it registers the native-messaging host in the HKCU registry, then you add the extension once from the Web Store (Windows has no macOS-style silent force-install). After that, chrome-use open drives your logged-in Chrome the same way.
✅ Don't want to touch your real Chrome?
Use chrome-use --launch open <url> to spin up a brand-new, isolated blank-profile browser (with the full anti-detection patch set), no extension required—CI takes this path automatically. When you need real cookies / login state, use --profile auto instead.

Pull the agent skills

ℹ️ The install.sh above already did this
The curl … | sh one-liner installs the agent skill globally right after the binary (npx skills add leeguooooo/chrome-use -g). Read on only to install it by hand or on a non–Claude Code runner. Opt out with AGENT_BROWSER_NO_SKILL=1.

Claude Code — plugin marketplace (recommended): installs the skill globally (all projects), auto-updates, and lists the rest of the *-use family:

Claude Code
> /plugin marketplace add leeguooooo/plugins
> /plugin install chrome-use@leeguooooo-plugins

Other agent runners (Cursor, Codex, custom scripts): pull the SKILL.md with skills.sh. Add -g for a global install (visible to every project); drop it to install only into the current project:

bash
$ npx skills add leeguooooo/chrome-use -g

Either way the AI agent gets the right usage patterns and pre-authorized bash permissions for chrome-use and abs; the specialized guides (electron / slack / agentcore / …) are served by the binary itself via chrome-use skills get <name>, so they always match the installed version. Once installed, it's worth reading The core loop first.

ℹ️ Self-heal when the skill can't run
Both the plugin and skills add only carry markdown; neither bundles the ~20MB binary. If chrome-use isn't present in the skill environment, just rerun the install.sh one-liner above to fill in the binary (the skill also teaches the agent to self-heal).

Run your first command

The browser stays running across commands, so the ones below feel like a single session. When you're done, wrap up with chrome-use close (or close --all).

quickstart
# take a screenshot of a page
$ chrome-use open https://example.com
$ chrome-use screenshot home.png
$ chrome-use close

For the full open → snapshot -i → fill → click walkthrough (search, click a result, screenshot again), read The core loop; for every command and flag, see Commands.


Diagnose install problems

When a command fails unexpectedly (Unknown command, Failed to connect, a stuck daemon, a version mismatch after upgrade, Chrome not found, and so on), run doctor before anything else.

chrome-use doctor
# full diagnostic: environment, Chrome, daemon, config, providers, network, launch self-test
$ chrome-use doctor
$ chrome-use doctor --offline --quick   # fast, purely local
$ chrome-use doctor --fix               # run destructive fixes (reinstall Chrome, clear stale state…)
$ chrome-use doctor --json              # structured output for programmatic use

Every doctor run automatically cleans up stale socket / pid / version sidecar files; destructive operations only run when you add --fix. Exit codes: 0 when everything passes (warnings included), 1 on any failure.

✅ Anti-detection self-check
To confirm stealth status before a sensitive flow, use chrome-use stealth status (add --json for structured results)— it runs live webdriver / chrome / plugins / UA probes and lists the applied overrides, which is more reliable than driving an external detector.
⚠️ Don't blindly retry after an "Allow remote debugging?" prompt
Every retry pops it again. Either your chrome-use is too old (rerun install.sh to upgrade), or the extension / local bridge isn't up (the prompt disappears for good once the store extension is installed). For more troubleshooting, see Troubleshooting.