--- summary: "CLI reference for `openclaw browser` (lifecycle, profiles, tabs, actions, state, and debugging)" read_when: - You use `openclaw browser` and want examples for common tasks - You want to control a browser running on another machine via a node host - You want to attach to your local signed-in Chrome via Chrome MCP title: "browser" --- # `openclaw browser` Manage OpenClaw's browser control surface and run browser actions (lifecycle, profiles, tabs, snapshots, screenshots, navigation, input, state emulation, and debugging). Related: - Browser tool + API: [Browser tool](/tools/browser) ## Common flags - `--url `: Gateway WebSocket URL (defaults to config). - `--token `: Gateway token (if required). - `--timeout `: request timeout (ms). - `--expect-final`: wait for a final Gateway response. - `--browser-profile `: choose a browser profile (default from config). - `--json`: machine-readable output (where supported). ## Quick start (local) ```bash openclaw browser profiles openclaw browser --browser-profile openclaw start openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` ## Lifecycle ```bash openclaw browser status openclaw browser start openclaw browser stop openclaw browser --browser-profile openclaw reset-profile ``` ## If the command is missing If `openclaw browser` is an unknown command, check `plugins.allow` in `~/.openclaw/openclaw.json`. When `plugins.allow` is present, the bundled browser plugin must be listed explicitly: ```json5 { plugins: { allow: ["telegram", "browser"], }, } ``` `browser.enabled=true` does not restore the CLI subcommand when the plugin allowlist excludes `browser`. Related: [Browser tool](/tools/browser#missing-browser-command-or-tool) ## Profiles Profiles are named browser routing configs. In practice: - `openclaw`: launches or attaches to a dedicated OpenClaw-managed Chrome instance (isolated user data dir). - `user`: controls your existing signed-in Chrome session via Chrome DevTools MCP. - custom CDP profiles: point at a local or remote CDP endpoint. ```bash openclaw browser profiles openclaw browser create-profile --name work --color "#FF5A36" openclaw browser create-profile --name chrome-live --driver existing-session openclaw browser create-profile --name remote --cdp-url https://browser-host.example.com openclaw browser delete-profile --name work ``` Use a specific profile: ```bash openclaw browser --browser-profile work tabs ``` ## Tabs ```bash openclaw browser tabs openclaw browser tab new openclaw browser tab select 2 openclaw browser tab close 2 openclaw browser open https://docs.openclaw.ai openclaw browser focus openclaw browser close ``` ## Snapshot / screenshot / actions Snapshot: ```bash openclaw browser snapshot ``` Screenshot: ```bash openclaw browser screenshot ``` Navigate/click/type (ref-based UI automation): ```bash openclaw browser navigate https://example.com openclaw browser click openclaw browser type "hello" openclaw browser press Enter openclaw browser hover openclaw browser scrollintoview openclaw browser drag openclaw browser select OptionA OptionB openclaw browser fill --fields '[{"ref":"1","value":"Ada"}]' openclaw browser wait --text "Done" openclaw browser evaluate --fn '(el) => el.textContent' --ref ``` File + dialog helpers: ```bash openclaw browser upload /tmp/openclaw/uploads/file.pdf --ref openclaw browser waitfordownload openclaw browser download report.pdf openclaw browser dialog --accept ``` ## State and storage Viewport + emulation: ```bash openclaw browser resize 1280 720 openclaw browser set viewport 1280 720 openclaw browser set offline on openclaw browser set media dark openclaw browser set timezone Europe/London openclaw browser set locale en-GB openclaw browser set geo 51.5074 -0.1278 --accuracy 25 openclaw browser set device "iPhone 14" openclaw browser set headers '{"x-test":"1"}' openclaw browser set credentials myuser mypass ``` Cookies + storage: ```bash openclaw browser cookies openclaw browser cookies set session abc123 --url https://example.com openclaw browser cookies clear openclaw browser storage local get openclaw browser storage local set token abc123 openclaw browser storage session clear ``` ## Debugging ```bash openclaw browser console --level error openclaw browser pdf openclaw browser responsebody "**/api" openclaw browser highlight openclaw browser errors --clear openclaw browser requests --filter api openclaw browser trace start openclaw browser trace stop --out trace.zip ``` ## Existing Chrome via MCP Use the built-in `user` profile, or create your own `existing-session` profile: ```bash openclaw browser --browser-profile user tabs openclaw browser create-profile --name chrome-live --driver existing-session openclaw browser create-profile --name brave-live --driver existing-session --user-data-dir "~/Library/Application Support/BraveSoftware/Brave-Browser" openclaw browser --browser-profile chrome-live tabs ``` This path is host-only. For Docker, headless servers, Browserless, or other remote setups, use a CDP profile instead. Current existing-session limits: - snapshot-driven actions use refs, not CSS selectors - `click` is left-click only - `type` does not support `slowly=true` - `press` does not support `delayMs` - `wait --load networkidle` is not supported - `responsebody`, download interception, PDF export, and batch actions still require a managed browser or raw CDP profile ## Remote browser control (node host proxy) If the Gateway runs on a different machine than the browser, run a **node host** on the machine that has Chrome/Brave/Edge/Chromium. The Gateway will proxy browser actions to that node (no separate browser control server required). Use `gateway.nodes.browser.mode` to control auto-routing and `gateway.nodes.browser.node` to pin a specific node if multiple are connected. Security + remote setup: [Browser tool](/tools/browser), [Remote access](/gateway/remote), [Tailscale](/gateway/tailscale), [Security](/gateway/security)