openclaw browser
CLI、およびスクリプトパターン(snapshot、ref、wait、debug flow)のリファレンスです。
Control API(任意)
ローカル統合専用として、Gatewayは小さなloopback HTTP APIを公開します:- Status/start/stop:
GET /,POST /start,POST /stop - Tabs:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/screenshot:
GET /snapshot,POST /screenshot - Actions:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Downloads:
POST /download,POST /wait/download - Debugging:
GET /console,POST /pdf - Debugging:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Network:
POST /response/body - State:
GET /cookies,POST /cookies/set,POST /cookies/clear - State:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Settings:
POST /set/offline,POST /set/headers,POST /set/credentials,POST /set/geolocation,POST /set/media,POST /set/timezone,POST /set/locale,POST /set/device
?profile=<name> を受け付けます。
shared-secret Gateway authが設定されている場合、browser HTTP routeにもauthが必要です:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>または、そのpasswordを使ったHTTP Basic auth
- この独立したloopback browser APIは、trusted-proxy や Tailscale Serve identity headerを消費しません。
gateway.auth.modeがnoneまたはtrusted-proxyの場合でも、これらのloopback browser routeはそれらのidentity付きmodeを継承しません。loopback-onlyのままにしてください。
/act error contract
POST /act は、route-level validationと
policy failureに対して構造化error responseを使います:
code 値:
ACT_KIND_REQUIRED(HTTP 400):kindが存在しない、または認識されない。ACT_INVALID_REQUEST(HTTP 400): action payloadのnormalizationまたはvalidationに失敗した。ACT_SELECTOR_UNSUPPORTED(HTTP 400): 未対応のaction kindでselectorが使われた。ACT_EVALUATE_DISABLED(HTTP 403): configによりevaluate(またはwait --fn)が無効化されている。ACT_TARGET_ID_MISMATCH(HTTP 403): top-levelまたはbatchedtargetIdがrequest targetと衝突している。ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): actionがexisting-session profileではサポートされていない。
code fieldなしで
{ "error": "<message>" } が返る場合もあります。
Playwright要件
一部の機能(navigate/act/AI snapshot/role snapshot、element screenshot、 PDF)にはPlaywrightが必要です。Playwrightがインストールされていない場合、それらのendpointは 明確な501 errorを返します。 Playwrightなしでも動作するもの:- ARIA snapshot
- per-tab CDP
WebSocketが利用可能な場合の、管理対象
openclawbrowserのpage screenshot existing-session/ Chrome MCP profileのpage screenshot- snapshot outputからの
existing-sessionのrefベースscreenshot(--ref)
navigateact- AI snapshot / role snapshot
- CSS-selectorによるelement screenshot(
--element) - full browser PDF export
--full-page も拒否します。routeは fullPage is not supported for element screenshots を返します。
Playwright is not available in this gateway build と表示された場合は、
playwright-core がインストールされるよう、同梱browser plugin runtime dependencyを修復し、
その後Gatewayを再起動してください。packaged installでは openclaw doctor --fix を実行してください。
Dockerでは、下記のようにChromium browser binaryもインストールしてください。
Docker Playwright install
GatewayがDockerで動いている場合、npx playwright は避けてください(npm override conflict)。
代わりに同梱CLIを使ってください:
PLAYWRIGHT_BROWSERS_PATH(たとえば
/home/node/.cache/ms-playwright)を設定し、/home/node が
OPENCLAW_HOME_VOLUME またはbind mountで永続化されていることを確認してください。Docker を参照してください。
動作の仕組み(内部)
小さなloopback control serverがHTTP requestを受け取り、CDP経由でChromium系browserに接続します。高度なaction(click/type/snapshot/PDF)は、CDP上のPlaywright経由で処理されます。Playwrightがない場合は、非Playwright操作だけが利用可能です。agentからは1つの安定したinterfaceが見え、ローカル/リモートbrowserやprofileはその下で自由に切り替わります。CLIクイックリファレンス
すべてのcommandは、特定profileを対象にする--browser-profile <name> と、machine-readable outputのための --json を受け付けます。
基本: status、tabs、open/focus/close
基本: status、tabs、open/focus/close
Inspection: screenshot、snapshot、console、errors、requests
Inspection: screenshot、snapshot、console、errors、requests
Actions: navigate、click、type、drag、wait、evaluate
Actions: navigate、click、type、drag、wait、evaluate
State: cookies、storage、offline、headers、geo、device
State: cookies、storage、offline、headers、geo、device
uploadとdialogは arming callです。file chooser/dialogを発生させるclick/pressの前に実行してください。click/type/ などには、snapshotからのref(数値の12またはrole refのe12)が必要です。actionに対するCSS selectorは意図的にサポートされていません。- download、trace、upload pathはOpenClaw temp rootに制限されます:
/tmp/openclaw{,/downloads,/uploads}(fallback:${os.tmpdir()}/openclaw/...)。 uploadは、--input-refまたは--elementでfile inputを直接設定することもできます。
--format ai(Playwrightありの場合のデフォルト): 数値ref(aria-ref="<n>")付きのAI snapshot。--format aria: accessibility tree。refなし。inspection専用。--efficient(または--mode efficient): compact role snapshot preset。これをデフォルトにするにはbrowser.snapshotDefaults.mode: "efficient"を設定してください(Gateway configuration を参照)。--interactive,--compact,--depth,--selectorはrole snapshotを強制し、ref=e12refを使います。--frame "<iframe>"はrole snapshotを特定iframeに限定します。--labelsは、ref labelを重ねたviewport-only screenshotを追加します(MEDIA:<path>を表示します)。
Snapshotとref
OpenClawは2種類の「snapshot」スタイルをサポートします:-
AI snapshot(数値ref):
openclaw browser snapshot(デフォルト;--format ai)- 出力: 数値refを含むtext snapshot。
- Action:
openclaw browser click 12,openclaw browser type 23 "hello"。 - 内部的には、refはPlaywrightの
aria-ref経由で解決されます。
-
Role snapshot(
e12のようなrole ref):openclaw browser snapshot --interactive(または--compact,--depth,--selector,--frame)- 出力:
[ref=e12](および任意で[nth=1])を持つroleベースのlist/tree。 - Action:
openclaw browser click e12,openclaw browser highlight e12。 - 内部的には、refは
getByRole(...)(重複時はnth()を追加)で解決されます。 --labelsを追加すると、重ねたe12label付きviewport screenshotが含まれます。
- 出力:
- refはnavigationをまたいで安定しません。何か失敗したら、
snapshotを再実行して新しいrefを使ってください。 - role snapshotを
--frame付きで取った場合、role refは次のrole snapshotまでそのiframeにスコープされます。
Waitの強化機能
time/text以外にも待機できます:- URLを待つ(Playwright対応のglobをサポート):
openclaw browser wait --url "**/dash"
- load stateを待つ:
openclaw browser wait --load networkidle
- JS predicateを待つ:
openclaw browser wait --fn "window.ready===true"
- selectorが可視になるのを待つ:
openclaw browser wait "#main"
Debug workflow
actionが失敗したとき(例: 「not visible」、「strict mode violation」、「covered」):openclaw browser snapshot --interactiveclick <ref>/type <ref>を使う(interactive modeではrole refを推奨)- それでも失敗する場合:
openclaw browser highlight <ref>でPlaywrightが何を対象にしているか確認する - pageの挙動がおかしい場合:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- 深いdebugにはtraceを記録する:
openclaw browser trace start- 問題を再現する
openclaw browser trace stop(TRACE:<path>を表示)
JSON出力
--json はスクリプトや構造化tooling向けです。
例:
refs に加えて小さな stats block(lines/chars/refs/interactive)が含まれるため、tool側でpayload sizeや密度を判断できます。
Stateとenvironmentのノブ
これらは「サイトをXのように振る舞わせる」workflowで便利です:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(レガシーのset headers --json '{"X-Debug":"1"}'も引き続きサポート) - HTTP Basic auth:
set credentials user pass(または--clear) - Geolocation:
set geo <lat> <lon> --origin "https://example.com"(または--clear) - Media:
set media dark|light|no-preference|none - Timezone / locale:
set timezone ...,set locale ... - Device / viewport:
set device "iPhone 14"(Playwright device preset)set viewport 1280 720
セキュリティとプライバシー
- openclaw browser profileにはログイン済みsessionが含まれることがあるため、機密情報として扱ってください。
browser act kind=evaluate/openclaw browser evaluateとwait --fnは、page context内で任意のJavaScriptを実行します。prompt injectionにより これが誘導される可能性があります。不要であればbrowser.evaluateEnabled=falseで無効化してください。- ログインやanti-botに関する注記(X/Twitter など)については、Browser login + X/Twitter posting を参照してください。
- Gateway/node hostはprivate(loopbackまたはtailnet-only)に保ってください。
- リモートCDP endpointは強力です。tunnel化し、保護してください。
関連
- Browser — 概要、設定、profile、セキュリティ
- Browser login — サイトへのサインイン
- Browser Linux troubleshooting
- Browser WSL2 troubleshooting