ブラウザー(openclaw 管理)
OpenClaw は、エージェントが制御する 専用の Chrome/Brave/Edge/Chromium プロファイル を実行できます。 これは個人用ブラウザーから分離されており、Gateway 内の小さなローカル制御サービス (loopback のみ)を通じて管理されます。 初心者向けの見方:- これは エージェント専用の別ブラウザー だと考えてください。
openclawプロファイルは 個人用ブラウザープロファイルには触れません。- エージェントは安全なレーン内で タブを開き、ページを読み、クリックし、入力できます。
- 組み込みの
userプロファイルは、Chrome MCP を通じて実際のサインイン済み Chrome セッションに接続します。
できること
- openclaw という名前の別ブラウザープロファイル(デフォルトではオレンジのアクセント)。
- 決定的なタブ制御(一覧/開く/フォーカス/閉じる)。
- エージェントアクション(クリック/入力/ドラッグ/選択)、snapshot、スクリーンショット、PDF。
- 任意のマルチプロファイル対応(
openclaw、work、remote、…)。
クイックスタート
openclaw browser コマンド自体が見つからない場合、またはエージェントがブラウザーツール
を利用できないと言う場合は、ブラウザーコマンドまたはツールがない に進んでください。
plugin 制御
デフォルトのbrowser ツールは、現在デフォルトで有効なバンドル済み plugin です。
つまり、OpenClaw の残りの plugin システムを削除せずに、これを無効化または置き換えることができます。
browser ツール名を提供する別 plugin をインストールする前に、このバンドル済み plugin を無効化してください。デフォルトのブラウザー体験には次の両方が必要です。
plugins.entries.browser.enabledが無効化されていないbrowser.enabled=true
openclaw browser)、
Gateway メソッド(browser.request)、エージェントツール、およびデフォルトのブラウザー制御
サービスはすべて一緒に消えます。browser.* 設定は、置き換え plugin が再利用できるようそのまま残ります。
バンドル済みブラウザー plugin は、現在ブラウザーランタイム実装も所有しています。
core に残るのは、共有 Plugin SDK ヘルパーと、古い内部 import パス向けの互換性 re-export のみです。実際には、ブラウザー
plugin パッケージを削除または置き換えると、core 所有の 2 つ目のランタイムが残るのではなく、
ブラウザー機能セット全体がなくなります。
ブラウザー設定の変更では、バンドル済み plugin が新しい設定でブラウザーサービスを再登録できるよう、
引き続き Gateway の再起動が必要です。
ブラウザーコマンドまたはツールがない
アップグレード後にopenclaw browser が突然 unknown command になった場合、または
エージェントがブラウザーツールがないと報告する場合、最もよくある原因は
browser を含まない制限的な plugins.allow リストです。
壊れた設定の例:
browser を plugin allowlist に追加して修正してください。
plugins.allowが設定されている場合、browser.enabled=trueだけでは不十分です。plugins.allowが設定されている場合、plugins.entries.browser.enabled=trueだけでも不十分です。tools.alsoAllow: ["browser"]は、バンドル済み browser plugin をロードしません。これは、plugin がすでにロードされた後でツールポリシーを調整するだけです。- 制限的な plugin allowlist が不要なら、
plugins.allowを削除することでもデフォルトのバンドル済みブラウザー動作が復元されます。
openclaw browserが unknown command になる。browser.requestがない。- エージェントがブラウザーツールを利用不可または欠如として報告する。
プロファイル: openclaw と user
openclaw: 管理された分離ブラウザー(拡張不要)。user: 実際のサインイン済み Chrome セッション用の組み込み Chrome MCP 接続プロファイル。
- デフォルト: 分離された
openclawブラウザーを使用します。 - 既存のログイン済みセッションが重要で、ユーザーが PC の前にいて接続プロンプトをクリック/承認できる場合は
profile="user"を優先します。 - 特定のブラウザーモードを使いたい場合、
profileが明示的な上書きになります。
browser.defaultProfile: "openclaw" を設定してください。
設定
ブラウザー設定は~/.openclaw/openclaw.json にあります。
- ブラウザー制御サービスは、
gateway.portから導出されたポートで loopback に bind されます (デフォルト:18791、つまり gateway + 2)。 - Gateway ポート(
gateway.portまたはOPENCLAW_GATEWAY_PORT)を上書きすると、 導出されるブラウザーポートも同じ「ファミリー」を保つようにずれます。 cdpUrlが未設定の場合、デフォルトでは管理されたローカル CDP ポートになります。remoteCdpTimeoutMsはリモート(非 loopback)の CDP 到達性チェックに適用されます。remoteCdpHandshakeTimeoutMsはリモート CDP WebSocket 到達性チェックに適用されます。- ブラウザーのナビゲーション/タブオープンは、ナビゲーション前に SSRF ガードされ、ナビゲーション後の最終
http(s)URL に対してもベストエフォートで再確認されます。 - strict SSRF モードでは、リモート CDP エンドポイントの discovery/probe(
cdpUrlと/json/version参照を含む)もチェックされます。 browser.ssrfPolicy.dangerouslyAllowPrivateNetworkのデフォルトはtrue(trusted-network モデル)です。strict な public-only ブラウジングにするにはfalseに設定してください。browser.ssrfPolicy.allowPrivateNetworkは、互換性のために引き続き legacy alias としてサポートされています。attachOnly: trueは、「ローカルブラウザーは絶対に起動せず、すでに実行中なら接続だけする」を意味します。colorとプロファイルごとのcolorはブラウザー UI に色を付け、どのプロファイルがアクティブかを見分けられるようにします。- デフォルトプロファイルは
openclaw(OpenClaw 管理のスタンドアロンブラウザー)です。サインイン済みユーザーブラウザーを使うにはdefaultProfile: "user"を使用します。 - 自動検出順序: システム既定ブラウザーが Chromium ベースならそれを使用し、そうでなければ Chrome → Brave → Edge → Chromium → Chrome Canary。
- ローカル
openclawプロファイルはcdpPort/cdpUrlを自動割り当てします。これらはリモート CDP に対してのみ設定してください。 driver: "existing-session"は raw CDP ではなく Chrome DevTools MCP を使用します。この driver にはcdpUrlを設定しないでください。browser.profiles.<name>.userDataDirを設定すると、existing-session プロファイルが Brave や Edge などの非デフォルト Chromium ユーザープロファイルに接続できます。
Brave(または別の Chromium ベースブラウザー)を使う
システム既定 のブラウザーが Chromium ベース(Chrome/Brave/Edge など)の場合、 OpenClaw は自動的にそれを使います。自動検出を上書きするにはbrowser.executablePath を設定します。
CLI の例:
ローカル制御とリモート制御
- ローカル制御(デフォルト): Gateway が loopback 制御サービスを起動し、ローカルブラウザーを起動できます。
- リモート制御(node host): ブラウザーがあるマシン上で node host を実行すると、Gateway がブラウザーアクションをそこへプロキシします。
- リモート CDP:
browser.profiles.<name>.cdpUrl(またはbrowser.cdpUrl)を設定すると、 リモートの Chromium ベースブラウザーに接続します。この場合、OpenClaw はローカルブラウザーを起動しません。
- ローカル管理プロファイル:
openclaw browser stopは OpenClaw が起動したブラウザープロセスを停止します - attach-only および remote CDP プロファイル:
openclaw browser stopはアクティブな 制御セッションを閉じ、Playwright/CDP のエミュレーション上書き(viewport、 color scheme、locale、timezone、offline mode などの状態)を解除します。 OpenClaw がブラウザープロセスを起動していなくても同様です
- クエリトークン(例:
https://provider.example?token=<token>) - HTTP Basic 認証(例:
https://user:pass@provider.example)
/json/* エンドポイント呼び出し時と
CDP WebSocket 接続時の両方で認証情報を保持します。
トークンは設定ファイルにコミットするのではなく、環境変数または secrets manager を使うことを推奨します。
node ブラウザープロキシ(ゼロ設定のデフォルト)
ブラウザーがあるマシン上で node host を実行すると、OpenClaw は 追加のブラウザー設定なしでブラウザーツール呼び出しをその node に自動ルーティングできます。 これはリモート Gateway のデフォルト経路です。 補足:- node host は、そのローカルブラウザー制御サーバーを proxy command として公開します。
- プロファイルは node 自身の
browser.profiles設定(ローカルと同じ)から取得されます。 nodeHost.browserProxy.allowProfilesは任意です。空のままにすると legacy/default 動作、つまり設定済みのすべてのプロファイルがプロキシ経由で到達可能なままになり、プロファイル作成/削除ルートも含まれます。nodeHost.browserProxy.allowProfilesを設定すると、OpenClaw はそれを最小権限境界として扱います。allowlist にあるプロファイルだけを対象にでき、永続プロファイルの作成/削除ルートはプロキシサーフェス上でブロックされます。- 不要なら無効にできます:
- node 側:
nodeHost.browserProxy.enabled=false - gateway 側:
gateway.nodes.browser.mode="off"
- node 側:
Browserless(ホスト型リモート CDP)
Browserless は、HTTPS と WebSocket 経由で CDP 接続 URL を公開するホスト型 Chromium サービスです。OpenClaw はどちらの形式も使用できますが、 リモートブラウザープロファイルでは Browserless の接続ドキュメントにある 直接 WebSocket URL を使うのが最も簡単です。 例:<BROWSERLESS_API_KEY>を実際の Browserless トークンに置き換えてください。- Browserless アカウントに対応するリージョンエンドポイントを選んでください(詳細はそのドキュメントを参照)。
- Browserless が HTTPS ベース URL を提供する場合は、それを
wss://に変換して直接 CDP 接続に使うか、HTTPS URL のまま OpenClaw に/json/versionを検出させることができます。
直接 WebSocket CDP プロバイダー
一部のホスト型ブラウザーサービスは、標準の HTTP ベース CDP discovery (/json/version)ではなく 直接 WebSocket エンドポイントを公開します。OpenClaw は両方をサポートしています。
- HTTP(S) エンドポイント — OpenClaw は
/json/versionを呼び出して WebSocket debugger URL を検出し、その後接続します。 - WebSocket エンドポイント(
ws:///wss://) — OpenClaw は/json/versionをスキップして直接接続します。これは Browserless、 Browserbase、または WebSocket URL を渡してくる任意のプロバイダーで使用してください。
Browserbase
Browserbase は、 組み込みの CAPTCHA 解決、stealth mode、住宅用プロキシを備えた headless ブラウザー実行向けクラウドプラットフォームです。- 登録 し、 Overview dashboard から API Key をコピーしてください。
<BROWSERBASE_API_KEY>を実際の Browserbase API キーに置き換えてください。- Browserbase は WebSocket 接続時にブラウザーセッションを自動作成するため、 手動のセッション作成手順は不要です。
- 無料ティアでは、同時セッション 1 つと月 1 ブラウザー時間が利用できます。 有料プランの制限については pricing を参照してください。
- 完全な API リファレンス、SDK ガイド、統合例については Browserbase docs を参照してください。
セキュリティ
重要な考え方:- ブラウザー制御は loopback のみです。アクセスは Gateway の auth または node ペアリングを通じて流れます。
- スタンドアロンの loopback ブラウザー HTTP API は shared-secret auth のみ を使用します:
gateway token bearer auth、
x-openclaw-password、または 設定済み Gateway パスワードによる HTTP Basic auth。 - Tailscale Serve の identity header と
gateway.auth.mode: "trusted-proxy"は、 このスタンドアロン loopback browser API の認証には 使われません。 - ブラウザー制御が有効で shared-secret auth が設定されていない場合、OpenClaw
は起動時に
gateway.auth.tokenを自動生成し、設定へ永続化します。 gateway.auth.modeがすでにpassword、none、またはtrusted-proxyの場合、OpenClaw はその token を自動生成しません。- Gateway と node host は private network(Tailscale)上に保ち、 公開露出は避けてください。
- リモート CDP URL/トークンは秘密情報として扱い、env vars または secrets manager を優先してください。
- 可能なら暗号化されたエンドポイント(HTTPS または WSS)と短命トークンを優先してください。
- 長期トークンを設定ファイルに直接埋め込むのは避けてください。
プロファイル(マルチブラウザー)
OpenClaw は複数の名前付きプロファイル(ルーティング設定)をサポートします。プロファイルは次のいずれかです。- openclaw 管理: 独自のユーザーデータディレクトリ + CDP ポートを持つ専用 Chromium ベースブラウザーインスタンス
- remote: 明示的な CDP URL(別の場所で実行中の Chromium ベースブラウザー)
- existing session: Chrome DevTools MCP 自動接続による既存の Chrome プロファイル
openclawプロファイルは、存在しない場合自動作成されます。userプロファイルは、Chrome MCP の existing-session 接続用に組み込まれています。- existing-session プロファイルは
userを除いて opt-in です。--driver existing-sessionで作成してください。 - ローカル CDP ポートはデフォルトで 18800–18899 から割り当てられます。
- プロファイルを削除すると、そのローカルデータディレクトリは Trash に移動されます。
?profile=<name> を受け付けます。CLI では --browser-profile を使用します。
Chrome DevTools MCP 経由の existing-session
OpenClaw は、公式の Chrome DevTools MCP サーバーを通じて、実行中の Chromium ベースブラウザープロファイルにも接続できます。これにより、そのブラウザープロファイルで すでに開かれているタブとログイン状態を再利用できます。 公式の背景情報とセットアップリファレンス: 組み込みプロファイル:user
- 組み込みの
userプロファイルは Chrome MCP 自動接続を使用し、 デフォルトのローカル Google Chrome プロファイルを対象にします。
userDataDir を使用します。
- そのブラウザーのリモートデバッグ用 inspect ページを開きます。
- リモートデバッグを有効にします。
- ブラウザーを実行したままにし、OpenClaw が接続するときに表示される接続プロンプトを承認します。
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusにdriver: existing-sessionが表示されるstatusにtransport: chrome-mcpが表示されるstatusにrunning: trueが表示されるtabsにすでに開いているブラウザータブが一覧表示されるsnapshotが選択中のライブタブから ref を返す
- 対象の Chromium ベースブラウザーのバージョンが
144+である - そのブラウザーの inspect ページでリモートデバッグが有効になっている
- ブラウザーに接続同意プロンプトが表示され、それを承認した
openclaw doctorは古い拡張ベースのブラウザー設定を移行し、 デフォルト自動接続プロファイル用に Chrome がローカルインストールされているかを確認しますが、 ブラウザー側のリモートデバッグを有効化することはできません
- ユーザーのログイン済みブラウザー状態が必要なときは
profile="user"を使います。 - custom existing-session プロファイルを使う場合は、その明示的なプロファイル名を渡してください。
- このモードは、ユーザーが PC の前にいて接続プロンプトを承認できる場合にのみ選んでください。
- Gateway または node host は
npx chrome-devtools-mcp@latest --autoConnectを起動できます
- この経路は、分離された
openclawプロファイルより高リスクです。サインイン済みブラウザーセッション内で動作できるためです。 - OpenClaw はこの driver ではブラウザーを起動せず、既存セッションにのみ接続します。
- OpenClaw はここで公式の Chrome DevTools MCP
--autoConnectフローを使用します。userDataDirが設定されている場合、OpenClaw はそれを渡してその明示的な Chromium ユーザーデータディレクトリを対象にします。 - existing-session のスクリーンショットは、ページキャプチャと snapshot からの
--ref要素 キャプチャをサポートしますが、CSS--elementセレクターはサポートしません。 - existing-session のページスクリーンショットは、Playwright なしで Chrome MCP 経由で動作します。
ref ベースの要素スクリーンショット(
--ref)もそこで動作しますが、--full-pageは--refまたは--elementと組み合わせられません。 - existing-session アクションは、管理ブラウザー経路より依然として制限があります:
click、type、hover、scrollIntoView、drag、selectには、 CSS セレクターではなく snapshot ref が必要ですclickは左ボタンのみです(ボタン上書きや modifier は不可)typeはslowly=trueをサポートしません。fillまたはpressを使ってくださいpressはdelayMsをサポートしませんhover、scrollIntoView、drag、select、fill、evaluateは 呼び出しごとのタイムアウト上書きをサポートしませんselectは現在単一値のみサポートします
- existing-session の
wait --urlは、他の browser driver と同様に exact、substring、glob パターンをサポートします。wait --load networkidleはまだサポートされていません。 - existing-session の upload hook には
refまたはinputRefが必要で、一度に 1 ファイルだけをサポートし、CSSelement指定はサポートしません。 - existing-session の dialog hook はタイムアウト上書きをサポートしません。
- batch
actions、PDF エクスポート、download interception、
responsebodyなど、 依然として管理ブラウザー経路が必要な機能もあります。 - existing-session は host-local です。Chrome が別マシンまたは別ネットワーク namespace 上にある場合は、代わりに remote CDP または node host を使用してください。
分離の保証
- 専用 user data dir: 個人用ブラウザープロファイルには絶対に触れません。
- 専用ポート: 開発ワークフローとの衝突を避けるため
9222を回避します。 - 決定的なタブ制御: 「最後のタブ」ではなく
targetIdでタブを対象にします。
ブラウザー選択
ローカル起動時、OpenClaw は利用可能な最初のものを選びます。- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath で上書きできます。
プラットフォーム:
- macOS:
/Applicationsと~/Applicationsを確認します。 - Linux:
google-chrome、brave、microsoft-edge、chromiumなどを探します。 - Windows: よくあるインストール場所を確認します。
制御 API(任意)
ローカル統合専用として、Gateway は小さな loopback HTTP API を公開します。- ステータス/開始/停止:
GET /,POST /start,POST /stop - タブ:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - snapshot/スクリーンショット:
GET /snapshot,POST /screenshot - アクション:
POST /navigate,POST /act - hook:
POST /hooks/file-chooser,POST /hooks/dialog - ダウンロード:
POST /download,POST /wait/download - デバッグ:
GET /console,POST /pdf - デバッグ:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - ネットワーク:
POST /response/body - 状態:
GET /cookies,POST /cookies/set,POST /cookies/clear - 状態:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - 設定:
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>またはそのパスワードによる HTTP Basic auth
- このスタンドアロン loopback browser API は
trusted-proxyまたは Tailscale Serve identity header を消費しません。 gateway.auth.modeがnoneまたはtrusted-proxyの場合、これらの loopback browser route はその identity-bearing mode を継承しません。loopback-only のまま保ってください。
Playwright 要件
一部の機能(navigate/act/AI snapshot/role snapshot、要素スクリーンショット、 PDF)には Playwright が必要です。Playwright がインストールされていない場合、これらのエンドポイントは 明確な 501 エラーを返します。 Playwright なしでも動作するもの:- ARIA snapshot
- タブごとの CDP
WebSocket が利用可能な場合の、管理
openclawブラウザーのページスクリーンショット existing-session/ Chrome MCP プロファイルのページスクリーンショット- snapshot 出力からの
existing-sessionref ベーススクリーンショット(--ref)
navigateact- AI snapshot / role snapshot
- CSS セレクター要素スクリーンショット(
--element) - ブラウザー全体の PDF エクスポート
--full-page も拒否されます。この route は fullPage is not supported for element screenshots を返します。
Playwright is not available in this gateway build と表示された場合は、完全な
Playwright パッケージ(playwright-core ではない)をインストールして gateway を再起動するか、browser support 付きで OpenClaw を再インストールしてください。
Docker での Playwright インストール
Gateway を Docker で実行している場合、npx playwright は避けてください(npm override の衝突)。
代わりにバンドル済み CLI を使ってください。
PLAYWRIGHT_BROWSERS_PATH(例:
/home/node/.cache/ms-playwright)を設定し、/home/node が
OPENCLAW_HOME_VOLUME または bind mount で永続化されていることを確認してください。Docker を参照してください。
仕組み(内部)
高レベルのフロー:- 小さな control server が HTTP リクエストを受け取ります。
- CDP を通じて Chromium ベースブラウザー(Chrome/Brave/Edge/Chromium)に接続します。
- 高度なアクション(クリック/入力/snapshot/PDF)には、 CDP の上で Playwright を使用します。
- Playwright がない場合、Playwright 非依存の操作のみ利用可能です。
CLI クイックリファレンス
すべてのコマンドは、特定プロファイルを対象にするために--browser-profile <name> を受け付けます。
すべてのコマンドは、機械可読な出力(安定したペイロード)のために --json も受け付けます。
基本:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- attach-only および remote CDP プロファイルでは、テスト後の適切な
クリーンアップコマンドは引き続き
openclaw browser stopです。基盤となる ブラウザーを kill する代わりに、アクティブな制御セッションを閉じ、一時的な エミュレーション上書きを解除します。 openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
uploadとdialogは arming 呼び出しです。chooser/dialog を発生させる click/press の前に実行してください。- download と trace の出力パスは OpenClaw の temp root に制限されます:
- traces:
/tmp/openclaw(フォールバック:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(フォールバック:${os.tmpdir()}/openclaw/downloads)
- traces:
- upload パスは OpenClaw の temp uploads root に制限されます:
- uploads:
/tmp/openclaw/uploads(フォールバック:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadは--input-refまたは--elementによる file input への直接設定もできます。snapshot:--format ai(Playwright インストール時のデフォルト): 数値 ref(aria-ref="<n>")を含む AI snapshot を返します。--format aria: アクセシビリティツリーを返します(ref なし。確認用のみ)。--efficient(または--mode efficient): compact role snapshot のプリセット(interactive + compact + depth + より低い maxChars)。- 設定のデフォルト(tool/CLI のみ): caller が mode を渡さないときに efficient snapshot を使うには
browser.snapshotDefaults.mode: "efficient"を設定します(Gateway configuration を参照)。 - role snapshot オプション(
--interactive、--compact、--depth、--selector)は、ref=e12のような ref を持つ role-based snapshot を強制します。 --frame "<iframe selector>"は role snapshot を iframe にスコープします(e12のような role ref と組み合わせます)。--interactiveは、操作対象を選びやすいフラットな interactive 要素一覧を出力します(アクション駆動に最適)。--labelsは、ref ラベルをオーバーレイした viewport-only スクリーンショットを追加します(MEDIA:<path>を出力)。
click/type/その他にはsnapshotからのref(数値12または role refe12)が必要です。 CSS セレクターはアクションでは意図的にサポートされていません。
snapshot と ref
OpenClaw は 2 つの「snapshot」スタイルをサポートします。-
AI snapshot(数値 ref):
openclaw browser snapshot(デフォルト。--format ai)- 出力: 数値 ref を含むテキスト snapshot。
- アクション:
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 ベースの一覧/ツリー。 - アクション:
openclaw browser click e12、openclaw browser highlight e12。 - 内部的には、ref は
getByRole(...)(重複にはnth()を追加)で解決されます。 --labelsを追加すると、e12ラベルをオーバーレイした viewport スクリーンショットを含められます。
- 出力:
- ref は ナビゲーションをまたいで安定ではありません。失敗したら
snapshotを再実行して新しい ref を使ってください。 - role snapshot が
--frame付きで取得された場合、role ref は次の role snapshot までその iframe にスコープされます。
Wait の強化機能
時間/テキスト以外も待てます。- URL を待つ(Playwright の glob 対応):
openclaw browser wait --url "**/dash"
- load state を待つ:
openclaw browser wait --load networkidle
- JS predicate を待つ:
openclaw browser wait --fn "window.ready===true"
- セレクターが visible になるのを待つ:
openclaw browser wait "#main"
デバッグワークフロー
アクションが失敗したとき(例: 「not visible」、「strict mode violation」、「covered」):openclaw browser snapshot --interactiveclick <ref>/type <ref>を使う(interactive モードでは role ref を推奨)- まだ失敗する場合:
openclaw browser highlight <ref>で Playwright が何を対象にしているか確認する - ページの挙動がおかしい場合:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- 詳細なデバッグには trace を記録する:
openclaw browser trace start- 問題を再現する
openclaw browser trace stop(TRACE:<path>を出力)
JSON 出力
--json はスクリプトと構造化ツール向けです。
例:
refs と小さな stats ブロック(lines/chars/refs/interactive)が含まれ、ツールがペイロードサイズと密度を判断できます。
状態と環境ノブ
これらは「サイトを X のように振る舞わせる」ワークフローで便利です。- Cookie:
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"}'(legacy のset headers --json '{"X-Debug":"1"}'も引き続きサポート) - HTTP Basic 認証:
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 act kind=evaluate/openclaw browser evaluateとwait --fnは、ページコンテキストで任意の JavaScript を実行します。プロンプトインジェクションが これを誘導できるため、不要ならbrowser.evaluateEnabled=falseで無効化してください。- ログインや anti-bot に関する注意(X/Twitter など)については、Browser login + X/Twitter posting を参照してください。
- Gateway/node host は private(loopback または tailnet-only)に保ってください。
- リモート CDP エンドポイントは強力です。トンネル化し、保護してください。
トラブルシューティング
Linux 固有の問題(特に snap Chromium)については、 Browser troubleshooting を参照してください。 WSL2 Gateway + Windows Chrome の分離ホスト構成については、 WSL2 + Windows + remote Chrome CDP troubleshooting を参照してください。エージェントツール + 制御の仕組み
エージェントはブラウザー自動化用に 1 つのツール を受け取ります。browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotは安定した UI ツリー(AI または ARIA)を返します。browser actは snapshot のrefID を使って click/type/drag/select を行います。browser screenshotはピクセルをキャプチャします(フルページまたは要素)。browserは次を受け付けます:profileで名前付きブラウザープロファイル(openclaw、chrome、または remote CDP)を選択。target(sandbox|host|node)でブラウザーが存在する場所を選択。- sandboxed session では、
target: "host"にagents.defaults.sandbox.browser.allowHostControl=trueが必要。 targetが省略された場合: sandboxed session はデフォルトでsandbox、非 sandbox session はデフォルトでhost。- ブラウザー対応 node が接続されている場合、
target="host"またはtarget="node"を固定しない限り、ツールはそこへ自動ルーティングされることがあります。
関連
- Tools Overview — 利用可能なすべてのエージェントツール
- Sandboxing — sandboxed 環境でのブラウザー制御
- Security — ブラウザー制御のリスクとハードニング