Browser Modes

June 2, 2026 · View on GitHub

Three browser modes by use case, all running on your machine:

ModeScenarioKey trait
chromeReuse local Chrome login stateTwo sub-modes: Profile import / CDP attach
stealth · privacy modeFrictionless batch scraping without loginFresh fingerprint per session + proxy rotation, zero residue
stealth · fixed identityLogged-in accounts · multi-browser parallelStable fingerprint + stable IP, stable account identity, not flagged as bots

chrome: Reuse Local Chrome Login State

Best for already-logged-in sites (Gmail, GitHub, Jira, etc.) when you don't want to log in again. Two sub-modes are available.

Sub-mode 1: Import Local Profile

Extract a Profile (cookies, localStorage, IndexedDB) from local Chrome into a standalone Chromium instance:

# List importable profiles
browser-act browser list-profiles

# Create a chrome browser with the chosen profile
browser-act browser create --type chrome --name "work" \
  --desc "Work Chrome: logged into GitHub, Jira, Gmail" \
  --source-profile <profile-id>

Properties:

  • A standalone Chromium instance, isolated from your local Chrome
  • Import is a one-time snapshot — later changes in local Chrome do not sync
  • Quota: up to 20 browsers
  • Suitable for long-running automation tasks

You can also import after creation

If the browser already exists, import separately:

browser-act browser import-profile <browser_id> <profile_id>

# If Chrome needs to be restarted to enable CDP
browser-act browser import-profile <browser_id> <profile_id> --allow-restart-chrome

What is imported

IncludedExcluded
CookiesBrowsing history
localStorageBookmarks
IndexedDBExtensions
Session storageCache
Saved passwords

Two import modes

ModePathTrait
Local modechrome → chromeDirect file copy. Fastest, most complete
CDP modeany → stealth, cross-typeNetwork extraction via DevTools Protocol

Prerequisites

  • Must call browser list-profiles first to discover Profile IDs
  • The target browser must already exist (created via browser create)
  • The source browser (Chrome) may need to be closed for local import

Risk Notes

Profile import has inherent risks the agent must communicate to users:

  1. The source browser may be closed during import.
  2. An IP change at the new location may trigger re-verification on some sites.
  3. Environment differences (fingerprint, location) may trigger re-login.
  4. Import is a snapshot — later changes at the source do not propagate.

Sub-mode 2: CDP Direct Attach

Directly drive your running local Chrome — extensions, certificates, and SSO are all in place:

browser-act browser create --type chrome-direct --name "live" --desc "Direct attach to local Chrome"
browser-act --session work browser open <browser-id> https://internal.corp.com

Properties:

  • Zero configuration — no Profile import required
  • Full inheritance of local Chrome's extensions, bookmarks, certificates, and SSO cookies
  • Quota: 1 chrome-direct browser globally
  • While running, your Chrome is being automated (you can't use it manually)
  • Headed mode is not supported (since it's already your browser)

Best for: Enterprise SSO, sites that depend on specific extensions or certificates, quick operations that don't require isolation.

Comparing the Two Sub-modes

Profile importCDP attach
SetupChoose a profile to importZero config
IsolationStandalone processYour actual Chrome
Extensions / certsExcluded from importFully inherited
Quota201 (global)
User's Chrome occupied?NoYes
Long-running tasks✗ (occupies your Chrome)

stealth · Privacy Mode: Login-Free Batch Scraping

Fresh fingerprint per session + auto-rotating proxy IPs, zero residue. Ideal for monitoring competitor sites at scale — prices, SKUs, new arrivals — with no traces left behind.

# Create a stealth browser with privacy mode + dynamic proxy
browser-act browser create --type stealth --name "monitor" \
  --desc "Competitor price monitoring" \
  --dynamic-proxy US \
  --private true

Properties:

  • Each browser open session gets a fresh fingerprint and an empty profile, nothing persisted
  • Dynamic proxy auto-rotates IPs by region
  • Passes anti-detection in headless mode with full spoofing intact
  • Best for one-off tasks, high-anonymity needs, and avoiding fingerprint accumulation

Trade-off: Login state is not retained; requires an API Key (managed service).

stealth · Fixed Identity: Logged-In Multi-Browser

Each browser keeps a stable fingerprint + stable IP, so the account looks like a real user. Scale to multiple independent browsers — accounts cannot be correlated across them.

Requires fixed IPs (dynamic proxies rotate). Recommended: use managed static proxies:

# List purchased static proxies
browser-act proxy list

# Each store gets its own stealth browser with a dedicated static proxy
browser-act browser create --type stealth --name "shop-1" \
  --desc "Taobao store 1: women's clothing" \
  --static-proxy <proxy_id_1>

browser-act browser create --type stealth --name "shop-2" \
  --desc "Taobao store 2: electronics" \
  --static-proxy <proxy_id_2>

Also supports --custom-proxy socks5://host:port if you bring your own fixed proxy.

Properties:

  • Each browser has independent fingerprint, fixed proxy, and independent cookies
  • Same browser keeps the same IP across uses — sites treat it as a stable real user
  • Sites cannot correlate across browsers
  • Login state persists; subsequent operations skip the login flow
  • Best for multi-store management, multi-account operations, and multi-account competitive monitoring

Trade-off: Requires an API Key (managed service). Managed static proxies require purchase; custom proxies are bring-your-own.

Picking a Mode by Task

TaskPick
Automate a site you're already logged into in Chromechrome with Profile import
Need local extensions, certificates, or SSOchrome-direct (CDP)
Scrape public content protected by anti-scrapingstealth privacy mode + proxy
Run multiple independent accounts long-termstealth fixed identity (one browser per account)
Just need to read a page oncestealth-extract (no browser to create)

Real-World Switching Paths

Scenario 1: From chrome to stealth

You automate an e-commerce site with chrome. After a few days, captchas start appearing. Switch to stealth privacy mode — a "clean identity" continues, avoiding correlation.

Scenario 2: From stealth to chrome-direct

You log into an enterprise system with stealth, but it depends on a specific browser extension. Switch to chrome-direct to attach to your local Chrome (with the extension already installed).

Scenario 3: From chrome-direct to chrome

You ran a task with chrome-direct successfully. But chrome-direct has only one quota and you don't want to occupy your local Chrome each time. Import the login state into a chrome browser and use chrome from then on.

Quotas

TypeMaxNotes
chrome (incl. chrome-direct)20 + 1chrome: 20 standalone processes; chrome-direct: 1 global
stealthPer accountAllocated based on the account

Unified Data Model

Regardless of mode, every browser shares the same structure:

FieldDescription
idUnique identifier, auto-generated
nameHuman-readable name
typechrome / chrome-direct / stealth
descNatural-language purpose description (see Agent Design)
dynamic_proxyManaged proxy region code (stealth only)
static_proxyManaged static proxy ID (stealth only)
custom_proxyCustom proxy URL (stealth only)
privatePrivacy mode toggle, default false (stealth only)
confirm_before_useWhether to ask the user before each use

Next Steps