This reference defines the steel browser command surface, including Steel-owned lifecycle commands and inherited agent-browser commands.
steel browser startsteel browser stopsteel browser sessionssteel browser livesteel browser captcha solve
All other steel browser <command> invocations are delegated to vendored upstream runtime behavior.
Upstream command catalog (pinned reference):
- Local transformed command catalog for Steel context:
./steel-browser-commands.md
- https://github.com/vercel-labs/agent-browser/blob/b59dc4c82c0583b60849d110f27982fac85f1a07/cli/README.md
- https://github.com/vercel-labs/agent-browser/tree/b59dc4c82c0583b60849d110f27982fac85f1a07/skills/agent-browser/references
- https://github.com/vercel-labs/agent-browser/blob/b59dc4c82c0583b60849d110f27982fac85f1a07/skills/agent-browser/references/commands.md
- Cloud mode (default): no mode flag required.
- Self-hosted mode: use
--localor--api-url <url>.
--api-url implies self-hosted mode.
Self-hosted endpoint precedence:
--api-url <url>STEEL_BROWSER_API_URLSTEEL_LOCAL_API_URLbrowser.apiUrlin~/.config/steel/config.jsonhttp://localhost:3000/v1
Cloud endpoint precedence:
STEEL_API_URLhttps://api.steel.dev/v1
Purpose: create or attach a session and print stable fields.
Main flags:
--local--api-url <url>--session <name>--stealth--proxy <url>--session-solve-captcha--namespace <name>--credentials--profile <name>--update-profile
Flag semantics:
--stealthapplies a session-creation preset:stealthConfig.humanizeInteractions = truestealthConfig.autoCaptchaSolving = truesolveCaptcha = true
--session-solve-captchaenables manual CAPTCHA solving for new sessions:solveCaptcha = truestealthConfig.autoCaptchaSolvingis not forced on
--proxy <url>setsproxyUrlon session creation. The Sessions API may returnproxySource: "external"rather than echoing the proxy URL in responses.--namespace <name>sets the credential namespace for the session. Credentials stored under this namespace will be available for injection.--credentialsenables credential injection for the session. Sendscredentials: {}in the session creation payload.--profile <name>loads a previously imported browser profile (cookies, local storage, etc.) into the session.--update-profilesaves session state back to the profile when the session ends. Requires--profile.--stealth,--proxy,--namespace,--credentials,--profile, and--update-profileare create-time flags. If--session <name>attaches to an existing live session, these values are not re-applied.
Output fields:
idmodename(when set)live_url(when available)connect_url(when available)
Security contract:
connect_urlis safe for logs and transcripts. Sensitive query values (apiKey,token, and aliases) are redacted asREDACTED.- If a workflow needs a fully-authenticated CDP URL, combine the session
idwithSTEEL_API_KEYinstead of scraping secrets from CLI output.
Agent parsing contract:
- Parse
idas the stable handle for follow-up commands. - Treat
connect_urlas display metadata, not a secret-bearing credential. - Prefer
--session <name>for cross-command and cross-process continuity.
Purpose: stop active session(s).
Main flags:
--session <name>--all--local--api-url <url>
Purpose: list sessions as JSON.
Main flags:
--local--api-url <url>--raw
Output note:
connectUrlvalues in JSON are display-safe and redact sensitive query values.- Default output is compact and omits each session's full raw payload.
- Use
--rawwhen you need the full underlying API payload.
Purpose: print current active session live-view URL.
Main flags:
--session <name>--local--api-url <url>
Purpose: manually trigger CAPTCHA solving for a target session.
Main flags:
--session-id <id>--session <name>--page-id <id>--url <url>--task-id <id>--local--api-url <url>--raw
API mapping:
- Endpoint:
POST /v1/sessions/{sessionId}/captchas/solve - Request body: optional
pageId,url,taskId - Response:
success+ optionalmessage
Profiles let sessions start with pre-existing browser state (cookies, local storage, IndexedDB, etc.) imported from a local Chrome installation.
Setup (macOS only, run by user):
steel profile import --name myapp # import Chrome profile to Steel
steel profile sync --name myapp # re-sync local changes to Steel
steel profile list # list saved profiles
steel profile delete --name myapp # remove local metadataUsage in sessions:
steel browser start --session job --profile myapp # load profile
steel browser start --session job --profile myapp --update-profile # load + save backProfile metadata is stored at ~/.config/steel/profiles/<name>.json.
For inherited commands, Steel bootstrap injects a resolved --cdp endpoint unless explicit attach flags are present.
- If
--cdpis present: passthrough unchanged. - If
--auto-connectis present: passthrough unchanged. - If both are present: fail fast.
Localhost self-hosted flows provide actionable errors:
- Runtime missing: instruct
steel dev install. - Runtime installed but unavailable: instruct
steel dev start.
Missing browser auth. Run steel login or set STEEL_API_KEY.: runsteel loginlocally, or setSTEEL_API_KEYin CI/job env.Failed to reach Steel session API ...in local mode: verifysteel dev startis running and endpoint resolution matches expected host/port.- Commands open a fresh browser unexpectedly:
ensure all steps share the same
--session <name>and mode (cloudvs--local/--api-url). No active live session foundfromsteel browser live: runsteel browser startfirst, then retrysteel browser live.- CAPTCHA solving notes:
- CAPTCHA solving requires a paid Steel plan.
--stealthenables auto solving; wait and monitor with screenshots.--session-solve-captchaenables manual solving; usesteel browser captcha solve.- Default sessions do not solve captchas; restart with CAPTCHA solving enabled and navigate back.
- Proxy + CAPTCHA solving together is a strong anti-bot evasion combination.
- Need hard reset of stale session mapping:
run
steel browser stop --alland start a fresh named session.