ブラウザ(openclaw 管理)
OpenClaw は、エージェントが制御する専用の Chrome/Brave/Edge/Chromium プロファイルを実行できます。 これはあなたの個人用ブラウザから分離されており、Gateway 内の小さなローカル 制御サービス(loopback のみ)を通じて管理されます。 初心者向けの見方:- これはエージェント専用の別ブラウザだと考えてください。
openclawプロファイルは、あなたの個人用ブラウザプロファイルに触れません。- エージェントは安全なレーン内でタブを開き、ページを読み取り、クリックし、入力できます。
- 組み込みの
userプロファイルは、Chrome MCP を通じてあなたの実際のサインイン済み Chrome セッションに接続します。
利用できる機能
- openclaw という名前の個別ブラウザプロファイル(デフォルトではオレンジのアクセント)。
- 決定論的なタブ制御(一覧表示/開く/フォーカス/閉じる)。
- エージェントアクション(クリック/入力/ドラッグ/選択)、スナップショット、スクリーンショット、PDF。
- オプションのマルチプロファイル対応(
openclaw、work、remote、…)。
クイックスタート
openclaw browser 自体がまったく存在しない場合、またはエージェントがブラウザツールを
利用できないと言う場合は、ブラウザコマンドまたはツールが見つからない に進んでください。
プラグイン制御
デフォルトのbrowser ツールは、現在はデフォルトで有効な状態で同梱されるバンドル済みプラグインです。
つまり、OpenClaw の残りのプラグインシステムを削除しなくても、これを無効化または置き換えできます。
browser ツール名を提供する別のプラグインをインストールする前に、バンドル済みプラグインを無効化してください。デフォルトのブラウザ体験には、以下の両方が必要です。
plugins.entries.browser.enabledが無効化されていないことbrowser.enabled=true
openclaw browser)、
Gateway メソッド(browser.request)、エージェントツール、デフォルトのブラウザ制御サービスはすべてまとめて消えます。
browser.* 設定は、置き換え用プラグインが再利用できるようそのまま残ります。
バンドル済みブラウザプラグインは、現在ではブラウザランタイム実装も所有しています。
コアには、共有の Plugin SDK ヘルパーと、古い内部 import パス向けの互換性 re-export のみが残されています。
実際には、ブラウザプラグインパッケージを削除または置き換えると、2 つ目のコア所有ランタイムが残るのではなく、ブラウザ機能セット全体が取り除かれます。
ブラウザ設定の変更では、新しい設定でバンドル済みプラグインがブラウザサービスを再登録できるようにするため、引き続き Gateway の再起動が必要です。
ブラウザコマンドまたはツールが見つからない
アップグレード後にopenclaw browser が突然未知のコマンドになった場合、または
エージェントがブラウザツールがないと報告する場合、最も一般的な原因は、browser を含まない制限的な plugins.allow リストです。
壊れた設定の例:
browser をプラグイン許可リストに追加して修正してください。
plugins.allowが設定されている場合、browser.enabled=trueだけでは不十分です。plugins.allowが設定されている場合、plugins.entries.browser.enabled=trueだけでも不十分です。tools.alsoAllow: ["browser"]は、バンドル済みブラウザプラグインを読み込みません。これは、プラグインがすでに読み込まれた後にツールポリシーを調整するだけです。- 制限的なプラグイン許可リストが不要な場合、
plugins.allowを削除してもデフォルトのバンドル済みブラウザ動作が復元されます。
openclaw browserが未知のコマンドになる。browser.requestがない。- エージェントがブラウザツールを利用不可または欠落と報告する。
プロファイル: openclaw と user
openclaw: 管理された分離ブラウザ(拡張機能不要)。user: あなたの実際のサインイン済み Chrome セッション用の組み込み Chrome MCP 接続プロファイル。
- デフォルト: 分離された
openclawブラウザを使用します。 - 既存のログイン済みセッションが重要で、ユーザーがコンピューターの前にいて接続プロンプトのクリック/承認ができる場合は、
profile="user"を優先します。 profileは、特定のブラウザモードを使いたいときの明示的な上書きです。
browser.defaultProfile: "openclaw" を設定してください。
設定
ブラウザ設定は~/.openclaw/openclaw.json にあります。
- ブラウザ制御サービスは、
gateway.portから導出されたポートの loopback にバインドされます (デフォルト:18791、つまり gateway + 2)。 - Gateway ポート(
gateway.portまたはOPENCLAW_GATEWAY_PORT)を上書きすると、 導出されるブラウザポートも同じ「ファミリー」に収まるようにずれます。 cdpUrlは、未設定時には管理対象のローカル CDP ポートがデフォルトになります。remoteCdpTimeoutMsは、リモート(非 loopback)CDP 到達性チェックに適用されます。remoteCdpHandshakeTimeoutMsは、リモート CDP WebSocket 到達性チェックに適用されます。- ブラウザのナビゲーション/タブを開く操作には、ナビゲーション前に SSRF ガードが適用され、ナビゲーション後の最終
http(s)URL に対してベストエフォートで再チェックされます。 - strict SSRF モードでは、リモート CDP エンドポイントの検出/プローブ(
cdpUrl。/json/version参照を含む)もチェックされます。 browser.ssrfPolicy.dangerouslyAllowPrivateNetworkのデフォルトはtrueです(trusted-network モデル)。strict な public-only ブラウジングにするにはfalseに設定してください。browser.ssrfPolicy.allowPrivateNetworkは、互換性のため従来のエイリアスとして引き続きサポートされています。attachOnly: trueは、「ローカルブラウザを絶対に起動せず、すでに実行中の場合のみ接続する」ことを意味します。colorとプロファイルごとのcolorはブラウザ UI に色味を付け、どのプロファイルがアクティブかを視覚的に確認できるようにします。- デフォルトプロファイルは
openclawです(OpenClaw 管理のスタンドアロンブラウザ)。サインイン済みのユーザーブラウザを使うにはdefaultProfile: "user"を使用してください。 - 自動検出順序: Chromium ベースであればシステムのデフォルトブラウザ、それ以外の場合は Chrome → Brave → Edge → Chromium → Chrome Canary。
- ローカルの
openclawプロファイルにはcdpPort/cdpUrlが自動割り当てされます。これらを設定するのはリモート CDP の場合だけにしてください。 driver: "existing-session"は、生の CDP の代わりに Chrome DevTools MCP を使用します。 この driver ではcdpUrlを設定しないでください。- 既存セッションプロファイルを Brave や Edge などのデフォルト以外の Chromium ユーザープロファイルに接続する場合は、
browser.profiles.<name>.userDataDirを設定してください。
Brave(または別の Chromium ベースブラウザ)を使う
システムのデフォルトブラウザが Chromium ベース(Chrome/Brave/Edge など)の場合、 OpenClaw は自動的にそれを使用します。自動検出を上書きするにはbrowser.executablePath を設定してください。
CLI の例:
ローカル制御とリモート制御
- ローカル制御(デフォルト): Gateway が loopback 制御サービスを起動し、ローカルブラウザを起動できます。
- リモート制御(ノードホスト): ブラウザがあるマシン上でノードホストを実行すると、Gateway はブラウザアクションをそこにプロキシできます。
- リモート CDP:
browser.profiles.<name>.cdpUrl(またはbrowser.cdpUrl)を設定して、 リモートの Chromium ベースブラウザに接続します。この場合、OpenClaw はローカルブラウザを起動しません。
- ローカル管理プロファイル:
openclaw browser stopは OpenClaw が起動したブラウザプロセスを停止します - attach-only および remote CDP プロファイル:
openclaw browser stopはアクティブな 制御セッションを閉じ、Playwright/CDP のエミュレーション上書き(ビューポート、 カラースキーム、ロケール、タイムゾーン、オフラインモード、および類似の状態)を解放します。 この場合でも、OpenClaw が起動したブラウザプロセスは存在しません
- クエリトークン(例:
https://provider.example?token=<token>) - HTTP Basic 認証(例:
https://user:pass@provider.example)
/json/* エンドポイント呼び出し時と
CDP WebSocket 接続時の両方で認証情報を保持します。
トークンを設定ファイルにコミットする代わりに、環境変数またはシークレットマネージャーを使うことを推奨します。
ノードブラウザプロキシ(デフォルトでゼロ設定)
ブラウザがあるマシン上でノードホストを実行している場合、OpenClaw は 追加のブラウザ設定なしでブラウザツール呼び出しをそのノードへ自動ルーティングできます。 これはリモート Gateway のデフォルトパスです。 注意点:- ノードホストは、ローカルのブラウザ制御サーバーをプロキシコマンド経由で公開します。
- プロファイルはノード自身の
browser.profiles設定から取得されます(ローカルと同じ)。 nodeHost.browserProxy.allowProfilesはオプションです。従来/デフォルトの動作にするには空のままにしてください。設定済みのすべてのプロファイルが、プロファイル作成/削除ルートを含めて、プロキシ経由で引き続き到達可能です。nodeHost.browserProxy.allowProfilesを設定すると、OpenClaw はそれを最小権限の境界として扱います。許可リストにあるプロファイルのみを対象にでき、永続プロファイルの作成/削除ルートはプロキシ面でブロックされます。- 不要であれば無効化できます:
- ノード側:
nodeHost.browserProxy.enabled=false - Gateway 側:
gateway.nodes.browser.mode="off"
- ノード側:
Browserless(ホスト型リモート CDP)
Browserless は、HTTPS と WebSocket 経由で CDP 接続 URL を公開するホスト型 Chromium サービスです。OpenClaw はどちらの形式も使用できますが、 リモートブラウザプロファイルでは、もっとも簡単なのは Browserless の接続ドキュメントにある 直接の WebSocket URL です。 例:<BROWSERLESS_API_KEY>を実際の Browserless トークンに置き換えてください。- Browserless アカウントに対応するリージョンエンドポイントを選択してください(詳細はそのドキュメントを参照)。
- Browserless から HTTPS ベース URL が提供される場合は、それを
直接 CDP 接続用の
wss://に変換するか、HTTPS URL のままにして OpenClaw に/json/versionを検出させることができます。
直接 WebSocket CDP プロバイダー
一部のホスト型ブラウザサービスは、標準の HTTP ベース CDP 検出(/json/version)ではなく
直接 WebSocket エンドポイントを公開しています。OpenClaw はその両方をサポートします:
- HTTP(S) エンドポイント — OpenClaw は
/json/versionを呼び出して WebSocket デバッガー URL を検出し、その後接続します。 - WebSocket エンドポイント(
ws:///wss://)— OpenClaw は/json/versionをスキップして 直接接続します。これは、 Browserless、 Browserbase、または WebSocket URL を提供する任意のプロバイダーのようなサービスで使用してください。
Browserbase
Browserbase は、組み込みの CAPTCHA 解決、ステルスモード、 住宅用プロキシを備えたヘッドレスブラウザ実行用のクラウドプラットフォームです。- サインアップ して、 Overview ダッシュボード から API Key をコピーしてください。
<BROWSERBASE_API_KEY>を実際の Browserbase API キーに置き換えてください。- Browserbase は WebSocket 接続時にブラウザセッションを自動作成するため、 手動のセッション作成手順は不要です。
- 無料プランでは、同時セッション 1 つと月あたり 1 ブラウザ時間が利用できます。 有料プランの上限については pricing を参照してください。
- 完全な API リファレンス、SDK ガイド、統合例については Browserbase docs を参照してください。
セキュリティ
主な考え方:- ブラウザ制御は loopback のみです。アクセスは Gateway の認証またはノードペアリングを経由します。
- スタンドアロンの loopback ブラウザ HTTP API は、shared-secret 認証のみを使用します:
Gateway トークンの Bearer 認証、
x-openclaw-password、または 設定された Gateway パスワードを使う HTTP Basic 認証です。 - Tailscale Serve の identity ヘッダーと
gateway.auth.mode: "trusted-proxy"は、 このスタンドアロン loopback ブラウザ API を認証しません。 - ブラウザ制御が有効で、shared-secret 認証が設定されていない場合、OpenClaw は
起動時に
gateway.auth.tokenを自動生成し、それを設定に永続化します。 gateway.auth.modeがすでにpassword、none、またはtrusted-proxyの場合、OpenClaw はそのトークンを自動生成しません。- Gateway とすべてのノードホストはプライベートネットワーク(Tailscale)上に置いてください。公開露出は避けてください。
- リモート CDP URL/トークンはシークレットとして扱ってください。環境変数またはシークレットマネージャーの使用を推奨します。
- 可能な場合は、暗号化されたエンドポイント(HTTPS または WSS)と短命トークンを優先してください。
- 長寿命トークンを設定ファイルに直接埋め込むのは避けてください。
プロファイル(マルチブラウザ)
OpenClaw は複数の名前付きプロファイル(ルーティング設定)をサポートします。プロファイルには次の種類があります:- openclaw 管理: 専用の Chromium ベースブラウザインスタンス。独自のユーザーデータディレクトリ + CDP ポートを持ちます
- リモート: 明示的な CDP URL(別の場所で動作している Chromium ベースブラウザ)
- 既存セッション: Chrome DevTools MCP 自動接続経由の既存 Chrome プロファイル
openclawプロファイルは、存在しない場合に自動作成されます。userプロファイルは、Chrome MCP の既存セッション接続用に組み込まれています。user以外の既存セッションプロファイルはオプトインです。--driver existing-sessionで作成してください。- ローカル CDP ポートは、デフォルトで 18800–18899 から割り当てられます。
- プロファイルを削除すると、そのローカルデータディレクトリはゴミ箱に移動されます。
?profile=<name> を受け付けます。CLI では --browser-profile を使用します。
Chrome DevTools MCP 経由の既存セッション
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が、選択されたライブタブから refs を返す
- 対象の Chromium ベースブラウザがバージョン
144+であること - そのブラウザの inspect ページでリモートデバッグが有効になっていること
- ブラウザが接続同意プロンプトを表示し、あなたがそれを承認したこと
openclaw doctorは古い拡張機能ベースのブラウザ設定を移行し、 デフォルトの自動接続プロファイル用に Chrome がローカルにインストールされていることを確認しますが、 ブラウザ側のリモートデバッグをあなたの代わりに有効化することはできません
- ユーザーのログイン済みブラウザ状態が必要な場合は
profile="user"を使ってください。 - カスタム既存セッションプロファイルを使う場合は、その明示的なプロファイル名を渡してください。
- このモードを選ぶのは、ユーザーが接続プロンプトを承認できるようコンピューターの前にいる場合だけにしてください。
- Gateway またはノードホストは
npx chrome-devtools-mcp@latest --autoConnectを起動できます
- この経路は、サインイン済みブラウザセッション内で操作できるため、分離された
openclawプロファイルより高リスクです。 - OpenClaw はこの driver でブラウザを起動しません。既存セッションにのみ接続します。
- OpenClaw はここで公式の Chrome DevTools MCP
--autoConnectフローを使用します。userDataDirが設定されている場合、OpenClaw はそれを渡して、その明示的な Chromium ユーザーデータディレクトリを対象にします。 - 既存セッションのスクリーンショットは、ページキャプチャとスナップショットからの
--ref要素キャプチャをサポートしますが、 CSS--elementセレクターはサポートしません。 - 既存セッションのページスクリーンショットは、Playwright なしで Chrome MCP を通じて動作します。
ref ベースの要素スクリーンショット(
--ref)もそこで動作しますが、--full-pageは--refや--elementと組み合わせられません。 - 既存セッションのアクションは、管理ブラウザ経路より依然として制限があります:
click、type、hover、scrollIntoView、drag、selectでは、 CSS セレクターではなくスナップショット refs が必要ですclickは左ボタンのみです(ボタン上書きや修飾キーは不可)typeはslowly=trueをサポートしません。fillまたはpressを使ってくださいpressはdelayMsをサポートしませんhover、scrollIntoView、drag、select、fill、evaluateは 呼び出しごとのタイムアウト上書きをサポートしませんselectは現在単一値のみサポートします
- 既存セッションの
wait --urlは、他のブラウザ driver と同様に完全一致、部分一致、glob パターンをサポートします。wait --load networkidleはまだサポートされていません。 - 既存セッションのアップロードフックは
refまたはinputRefを必要とし、一度に 1 ファイルのみをサポートし、 CSSelementターゲティングはサポートしません。 - 既存セッションのダイアログフックはタイムアウト上書きをサポートしません。
- 一部の機能は引き続き管理ブラウザ経路が必要で、バッチアクション、PDF エクスポート、ダウンロードのインターセプト、
responsebodyなどが該当します。 - 既存セッションはホストローカルです。Chrome が別のマシンまたは別のネットワーク名前空間にある場合は、 代わりにリモート CDP またはノードホストを使用してください。
分離の保証
- 専用のユーザーデータディレクトリ: あなたの個人用ブラウザプロファイルには決して触れません。
- 専用ポート: 開発ワークフローとの衝突を防ぐため
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 - スナップショット/スクリーンショット:
GET /snapshot、POST /screenshot - アクション:
POST /navigate、POST /act - フック:
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 認証が設定されている場合、ブラウザ HTTP ルートでも認証が必要です:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>またはそのパスワードを使う HTTP Basic 認証
- このスタンドアロン loopback ブラウザ API は
trusted-proxyや Tailscale Serve の identity ヘッダーを利用しません。 gateway.auth.modeがnoneまたはtrusted-proxyの場合、これらの loopback ブラウザ ルートはそうした identity 付きモードを継承しません。loopback のみに保ってください。
/act エラー契約
POST /act は、ルートレベルのバリデーションと
ポリシー失敗に対して構造化されたエラーレスポンスを使用します:
code 値:
ACT_KIND_REQUIRED(HTTP 400):kindが欠落しているか、認識されません。ACT_INVALID_REQUEST(HTTP 400): アクションペイロードの正規化またはバリデーションに失敗しました。ACT_SELECTOR_UNSUPPORTED(HTTP 400): サポートされていないアクション種別でselectorが使用されました。ACT_EVALUATE_DISABLED(HTTP 403):evaluate(またはwait --fn)が設定で無効になっています。ACT_TARGET_ID_MISMATCH(HTTP 403): トップレベルまたはバッチ化されたtargetIdがリクエスト対象と競合しています。ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): このアクションは既存セッションプロファイルではサポートされていません。
code フィールドなしの
{ "error": "<message>" } が返ることもあります。
Playwright 要件
一部の機能(navigate/act/AI snapshot/role snapshot、要素スクリーンショット、 PDF)には Playwright が必要です。Playwright がインストールされていない場合、 これらのエンドポイントは明確な 501 エラーを返します。 Playwright なしでも動作するもの:- ARIA スナップショット
- タブごとの CDP WebSocket が利用可能な場合の、管理
openclawブラウザのページスクリーンショット existing-session/ Chrome MCP プロファイルのページスクリーンショット- スナップショット出力からの
existing-sessionの ref ベーススクリーンショット(--ref)
navigateact- AI スナップショット / role スナップショット
- CSS セレクター要素スクリーンショット(
--element) - ブラウザ全体の PDF エクスポート
--full-page も拒否されます。このルートは fullPage is not supported for element screenshots を返します。
Playwright is not available in this gateway build と表示された場合は、完全な
Playwright パッケージ(playwright-core ではなく)をインストールして Gateway を再起動するか、
ブラウザサポート付きで 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 を参照してください。
仕組み(内部)
高レベルのフロー:- 小さな制御サーバーが HTTP リクエストを受け付けます。
- CDP を介して Chromium ベースのブラウザ(Chrome/Brave/Edge/Chromium)に接続します。
- 高度な操作(クリック/入力/スナップショット/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です。これは、基盤となるブラウザを終了する代わりに、 アクティブな制御セッションを閉じ、一時的なエミュレーション上書きを解除します。 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は事前待機呼び出しです。ファイル選択ダイアログやダイアログを 発生させる click/press の前に実行してください。- ダウンロードとトレースの出力パスは OpenClaw の一時ルートに制限されます:
- traces:
/tmp/openclaw(フォールバック:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(フォールバック:${os.tmpdir()}/openclaw/downloads)
- traces:
- アップロードパスは OpenClaw の一時アップロードルートに制限されます:
- uploads:
/tmp/openclaw/uploads(フォールバック:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadは、--input-refまたは--elementによってファイル input を直接設定することもできます。snapshot:--format ai(Playwright がインストールされている場合のデフォルト): 数値 refs を含む AI スナップショットを返します(aria-ref="<n>")。--format aria: アクセシビリティツリーを返します(refs なし。調査専用)。--efficient(または--mode efficient): コンパクトな role スナップショットのプリセットです(interactive + compact + depth + lower maxChars)。- 設定のデフォルト(ツール/CLI のみ): 呼び出し側が mode を渡さないときに efficient スナップショットを使うには、
browser.snapshotDefaults.mode: "efficient"を設定してください(Gateway configuration を参照)。 - role スナップショットオプション(
--interactive、--compact、--depth、--selector)は、ref=e12のような refs を持つ role ベーススナップショットを強制します。 --frame "<iframe selector>"は role スナップショットを iframe に限定します(e12のような role refs と組み合わせます)。--interactiveは、対話可能要素のフラットで選びやすい一覧を出力します(アクション操作に最適)。--labelsは、ref ラベルが重ねられたビューポート限定のスクリーンショットを追加します(MEDIA:<path>を出力します)。
click/type/その他は、snapshotからのref(数値の12または role ref のe12)を必要とします。 アクションで CSS セレクターは意図的にサポートしていません。
スナップショットと refs
OpenClaw は 2 種類の「スナップショット」スタイルをサポートします:-
AI スナップショット(数値 refs):
openclaw browser snapshot(デフォルト。--format ai)- 出力: 数値 refs を含むテキストスナップショット。
- アクション:
openclaw browser click 12、openclaw browser type 23 "hello"。 - 内部的には、ref は Playwright の
aria-refで解決されます。
-
Role スナップショット(
e12のような role refs):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ラベルを重ねたビューポートスクリーンショットを含められます。
- 出力:
- refs はナビゲーションをまたいで安定しません。何か失敗した場合は、
snapshotを再実行して新しい ref を使用してください。 - role スナップショットを
--frame付きで取得した場合、role refs は次の role スナップショットまでその iframe に限定されます。
Wait の強化機能
時間やテキストだけでなく、さらに多くの条件で待機できます:- URL を待機(Playwright の glob をサポート):
openclaw browser wait --url "**/dash"
- 読み込み状態を待機:
openclaw browser wait --load networkidle
- JS 述語を待機:
openclaw browser wait --fn "window.ready===true"
- セレクターが可視になるのを待機:
openclaw browser wait "#main"
デバッグワークフロー
アクションが失敗したとき(たとえば「not visible」「strict mode violation」「covered」):openclaw browser snapshot --interactiveclick <ref>/type <ref>を使う(interactive モードでは role refs を優先)- それでも失敗する場合:
openclaw browser highlight <ref>を使って Playwright が何を対象にしているか確認する - ページの挙動がおかしい場合:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- 深いデバッグには、トレースを記録する:
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 - オフライン:
set offline on|off - ヘッダー:
set headers --headers-json '{"X-Debug":"1"}'(従来の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 - タイムゾーン / ロケール:
set timezone ...、set locale ... - デバイス / ビューポート:
set device "iPhone 14"(Playwright のデバイスプリセット)set viewport 1280 720
セキュリティとプライバシー
- openclaw ブラウザプロファイルにはログイン済みセッションが含まれる可能性があります。機密として扱ってください。
browser act kind=evaluate/openclaw browser evaluateとwait --fnは ページコンテキストで任意の JavaScript を実行します。プロンプトインジェクションによって これが誘導される可能性があります。不要な場合はbrowser.evaluateEnabled=falseで無効にしてください。- ログインおよびアンチボットに関する注意(X/Twitter など)については、Browser login + X/Twitter posting を参照してください。
- Gateway/ノードホストはプライベート(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はスナップショットのrefID を使って click/type/drag/select を行います。browser screenshotはピクセルをキャプチャします(ページ全体または要素)。browserは以下を受け付けます:profileは名前付きブラウザプロファイル(openclaw、chrome、または remote CDP)を選択します。target(sandbox|host|node)はブラウザの存在場所を選択します。- サンドボックス化セッションでは、
target: "host"にはagents.defaults.sandbox.browser.allowHostControl=trueが必要です。 targetが省略された場合: サンドボックス化セッションはデフォルトでsandbox、非サンドボックスセッションはデフォルトでhostになります。- ブラウザ対応ノードが接続されている場合、
target="host"またはtarget="node"に固定しない限り、ツールは自動的にそこへルーティングされることがあります。
関連
- Tools Overview — 利用可能なすべてのエージェントツール
- Sandboxing — サンドボックス環境でのブラウザ制御
- Security — ブラウザ制御のリスクとハードニング