Browser(openclaw 管理)
OpenClaw は、エージェントが制御する 専用の Chrome/Brave/Edge/Chromium プロファイル を実行できます。 これは個人用ブラウザーから分離されており、Gateway(ゲートウェイ)内の小さなローカル 制御サービス(local loopback のみ)を通じて管理されます。 個人用ブラウザから分離され、ゲートウェイ内の小さなローカル 制御サービスを通じて管理されます(ループバックのみ)。 個人用ブラウザから分離され、ゲートウェイ内の小さなローカル 制御サービスを通じて管理されます(ループバックのみ)。 初心者向けの見方:- エージェント専用の別ブラウザー と考えてください。
openclawプロファイルは、個人用ブラウザープロファイルに 一切触れません。- エージェントは、安全なレーンで タブを開く、ページを読む、クリック、入力 ができます。
- 既定の
chromeプロファイルは、拡張機能リレー経由で システム既定の Chromium ブラウザー を使用します。 分離された管理対象ブラウザーに切り替えるにはopenclawを使用します。
あなたが得るもの
- openclaw という名前の独立したブラウザープロファイル(既定ではオレンジのアクセント)。
- 決定論的なタブ制御(一覧/オープン/フォーカス/クローズ)。
- エージェントアクション(クリック/入力/ドラッグ/選択)、スナップショット、スクリーンショット、PDF。
- オプションのマルチプロファイル対応(
openclaw、work、remote、…)。
クイックスタート
プロファイル:openclaw vs chrome
openclaw:管理対象の分離ブラウザー(拡張機能不要)。chrome:システムブラウザー への拡張機能リレー(OpenClaw 拡張機能をタブにアタッチする必要があります)。
browser.defaultProfile: "openclaw" を設定します。
設定
ブラウザー設定は~/.openclaw/openclaw.json にあります。
- ブラウザー制御サービスは、
gateway.portから導出されたポートで loopback にバインドされます (既定:18791。gateway + 2)。リレーは次のポート(18792)を使用します。 リレーは次のポート (18792) を使用します。 リレーは次のポート (18792) を使用します。 - Gateway ポート(
gateway.portまたはOPENCLAW_GATEWAY_PORT)を上書きすると、 派生するブラウザーポートも同じ「ファミリー」を保つようにシフトします。 cdpUrlは未設定時、既定でリレーポートになります。remoteCdpTimeoutMsはリモート(非 loopback)の CDP 到達性チェックに適用されます。remoteCdpHandshakeTimeoutMsはリモート CDP WebSocket の到達性チェックに適用されます。attachOnly: trueは「ローカルブラウザーを起動しない。既に実行中の場合のみアタッチする」を意味します。colorと各プロファイルのcolorにより、どのプロファイルがアクティブか分かるように ブラウザー UI を着色します。- 既定プロファイルは
chrome(拡張機能リレー)です。管理対象ブラウザーにはdefaultProfile: "openclaw"を使用します。 管理されたブラウザにdefaultProfile: "openclaw"を使用します。 - 自動検出の順序:Chromium ベースのシステム既定ブラウザー、そうでなければ Chrome → Brave → Edge → Chromium → Chrome Canary。
- ローカルの
openclawプロファイルはcdpPort/cdpUrlを自動割り当てします。 これらはリモート CDP の場合のみ設定してください。
Brave(または他の Chromium ベース)を使用する
システム既定 のブラウザーが Chromium ベース(Chrome/Brave/Edge など)の場合、 OpenClaw は自動的にそれを使用します。自動検出を上書きするにはbrowser.executablePath を設定します。 browser.executablePath を
自動検出を上書きするように設定します: browser.executablePath を
自動検出を上書きするように設定します:
CLI の例:
ローカル制御 vs リモート制御
- ローカル制御(既定):Gateway が loopback 制御サービスを起動し、ローカルブラウザーを起動できます。
- リモート制御(node host):ブラウザーがあるマシンで node host を実行し、Gateway がブラウザー操作をプロキシします。
- リモート CDP:
browser.profiles.<name>.cdpUrl(またはbrowser.cdpUrl)を設定して、 リモートの Chromium ベースブラウザーにアタッチします。この場合、OpenClaw はローカルブラウザーを起動しません。 .cdpUrl(またはbrowser.cdpUrl`)を設定して、 リモートの Chromium ベースブラウザーにアタッチします。この場合、OpenClaw はローカルブラウザーを起動しません。 この場合、OpenClawはローカルブラウザを起動しません。
- クエリトークン(例:
https://provider.example?token=<token>) - HTTP Basic 認証(例:
https://user:[email protected])
/json/* エンドポイントの呼び出し時および
CDP WebSocket 接続時に認証を保持します。
トークンは設定ファイルにコミットするのではなく、環境変数やシークレットマネージャーを使用してください。 設定ファイルにコミットするのではなく、
トークンの環境変数やシークレットマネージャを優先します。
Node ブラウザープロキシ(ゼロ設定の既定)
ブラウザーがあるマシンで node host を実行している場合、OpenClaw は追加のブラウザー設定なしで ブラウザーツール呼び出しをその node に自動ルーティングできます。 これはリモート Gateway の既定パスです。 これは、リモートゲートウェイのデフォルトのパスです。 これは、リモートゲートウェイのデフォルトのパスです。 注記:- node host は プロキシコマンド を介してローカルのブラウザー制御サーバーを公開します。
- プロファイルは node 自身の
browser.profiles設定(ローカルと同じ)から取得されます。 - 不要な場合は無効化できます:
- node 側:
nodeHost.browserProxy.enabled=false - gateway 側:
gateway.nodes.browser.mode="off"
- node 側:
Browserless(ホスト型リモート CDP)
Browserless は、HTTPS 経由で CDP エンドポイントを公開する ホスト型 Chromium サービスです。OpenClaw のブラウザープロファイルを Browserless のリージョンエンドポイントに向け、API キーで認証できます。 OpenClawブラウザプロファイルを ブラウザレスリージョンエンドポイントで指定し、APIキーで認証することができます。 OpenClawブラウザプロファイルを ブラウザレスリージョンエンドポイントで指定し、APIキーで認証することができます。 例:<BROWSERLESS_API_KEY>を実際の Browserless トークンに置き換えてください。- Browserless アカウントに対応するリージョンエンドポイントを選択してください(詳細は同社ドキュメント参照)。
セキュリティ
主なアイデア:- ブラウザー制御は loopback のみです。アクセスは Gateway の認証または node のペアリングを通じて行われます。
- ブラウザ制御が有効で、かつ認証が構成されていない場合、OpenClaw は起動時に
gateway.auth.tokenを自動生成し、config に永続化します。 - Gateway および node host はプライベートネットワーク(Tailscale)上に保ち、公開露出を避けてください。
- リモートの CDP URL/トークンをシークレットとして扱います。
- 可能であれば HTTPS エンドポイントと短命トークンを使用してください。
- 長命トークンを設定ファイルに直接埋め込まないでください。
プロファイル(マルチブラウザー)
OpenClaw は、複数の名前付きプロファイル(ルーティング設定)をサポートします。プロファイルは次のいずれかです: プロファイルは次のようになります: プロファイルは次のようになります:- openclaw-managed:独自のユーザーデータディレクトリと CDP ポートを持つ専用の Chromium ベースブラウザー
- remote:明示的な CDP URL(別所で稼働する Chromium ベースブラウザー)
- extension relay:ローカルリレー + Chrome 拡張機能を介した既存の Chrome タブ
openclawプロファイルは、存在しない場合に自動作成されます。chromeプロファイルは、Chrome 拡張機能リレー用に組み込みで提供されます (既定ではhttp://127.0.0.1:18792を指します)。- ローカル CDP ポートは既定で 18800–18899 から割り当てられます。
- プロファイルを削除すると、ローカルのデータディレクトリはゴミ箱に移動されます。
?profile=<name> を受け付けます。CLI は --browser-profile を使用します。
Chrome 拡張機能リレー(既存の Chrome を使用)
OpenClaw は、ローカル CDP リレー + Chrome 拡張機能を介して、 既存の Chrome タブ を制御することもできます (別の「openclaw」Chrome インスタンスは不要)。 完全ガイド:Chrome extension フロー:- Gateway をローカル(同一マシン)で実行するか、ブラウザーマシンで node host を実行します。
- ローカルの リレーサーバー が loopback の
cdpUrl(既定:http://127.0.0.1:18792)で待ち受けます。 - 制御したいタブで OpenClaw Browser Relay 拡張機能アイコンをクリックしてアタッチします (自動アタッチはされません)。
- エージェントは、正しいプロファイルを選択することで、通常の
browserツール経由でそのタブを制御します。
サンドボックス化されたセッション
エージェントセッションがサンドボックス化されている場合、browser ツールは
既定で target="sandbox"(サンドボックスブラウザー)になることがあります。
Chrome 拡張機能リレーの引き継ぎにはホストブラウザー制御が必要なため、次のいずれかを行ってください:
Chrome拡張リレーの乗っ取りにはホストブラウザの制御が必要なので、以下のいずれかが必要です:
- セッションを非サンドボックスで実行する、または
agents.defaults.sandbox.browser.allowHostControl: trueを設定し、ツール呼び出し時にtarget="host"を使用する。
セットアップ
- 拡張機能を読み込む(dev/unpacked):
- Chrome →
chrome://extensions→ 「Developer mode」を有効化 - 「Load unpacked」→
openclaw browser extension pathが出力したディレクトリを選択 - 拡張機能をピン留めし、制御したいタブでクリックします(バッジに
ONが表示されます)。
- 使用する:
- CLI:
openclaw browser --browser-profile chrome tabs - エージェントツール:
browser(profile="chrome"を指定)
- このモードは、ほとんどの操作(スクリーンショット/スナップショット/アクション)で Playwright-on-CDP に依存します。
- 切断するには、拡張機能アイコンを再度クリックします。
分離の保証
- 専用ユーザーデータディレクトリ:個人用ブラウザープロファイルに触れません。
- 専用ポート:開発ワークフローとの衝突を防ぐため、
9222を回避します。 - 決定論的なタブ制御:「最後のタブ」ではなく、
targetIdでタブを指定します。
ブラウザー選択
ローカル起動時、OpenClaw は次の順で利用可能なものを選択します:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath で上書きできます。
プラットフォーム:
- macOS:
/Applicationsと~/Applicationsを確認します。 - Linux:
google-chrome、brave、microsoft-edge、chromiumなどを探します。 - Windows:一般的なインストール場所を確認します。
Control 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> を受け付けます。
gateway 認証が構成されている場合、ブラウザの HTTP ルートにも認証が必要です:
Authorization: Bearer <gateway token>- OpenClaw は、
/json/*エンドポイントの呼び出し時および CDP WebSocket 接続時に認証を保持します。 トークンは設定ファイルにコミットするのではなく、環境変数やシークレットマネージャーを使用してください。 設定ファイルにコミットするのではなく、 トークンの環境変数やシークレットマネージャを優先します。
Playwright の要件
いくつかの機能 (ナビゲーション/アクト/AIスナップショット/ロールスナップショット、要素スクリーンショット、PDF) Playwrightが必要です。 Playwrightがインストールされていない場合、それらのエンドポイントはクリア501 エラーを返します。 ARIAのスナップショットと基本的なスクリーンショットは、まだオープンクロー管理Chromeで動作します。 いくつかの機能 (ナビゲーション/アクト/AIスナップショット/ロールスナップショット、要素スクリーンショット、PDF) Playwrightが必要です。 Playwrightがインストールされていない場合、それらのエンドポイントはクリア501 エラーを返します。 ARIAのスナップショットと基本的なスクリーンショットは、まだオープンクロー管理Chromeで動作します。 Chrome拡張リレードライバの場合、ARIAスナップショットとスクリーンショットにはPlaywrightが必要です。Playwright is not available in this gateway build が表示された場合は、完全な
Playwright パッケージ(playwright-core ではありません)をインストールして Gateway を再起動するか、
ブラウザー対応で OpenClaw を再インストールしてください。
Docker での Playwright インストール
Gateway を Docker で実行している場合は、npx playwright(npm の上書き競合)を避けてください。
同梱の CLI を使用します:
代わりにバンドルされた CLI を使用します。
代わりにバンドルされた CLI を使用します。
PLAYWRIGHT_BROWSERS_PATH(例:/home/node/.cache/ms-playwright)を設定し、
/home/node が OPENCLAW_HOME_VOLUME または bind mount により永続化されていることを確認してください。
Docker を参照してください。 Docker を参照してください。 Docker を参照してください。
仕組み(内部)
高レベルのフロー:- 小さな 制御サーバー が HTTP リクエストを受け付けます。
- CDP を介して Chromium ベースのブラウザー(Chrome/Brave/Edge/Chromium)に接続します。
- 高度な操作(クリック/入力/スナップショット/PDF)には、 CDP の上に Playwright を使用します。
- Playwright がない場合は、非 Playwright の操作のみ利用可能です。
CLI クイックリファレンス
すべてのコマンドは--browser-profile <name> を特定のプロファイルをターゲットにします。
すべてのコマンドは、特定のプロファイルを指定するために --browser-profile <name> を受け付けます。
また、機械可読出力(安定したペイロード)のために --json も受け付けます。
すべてのコマンドは、特定のプロファイルを指定するために --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 erroropenclaw 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 /tmp/report.pdfopenclaw browser waitfordownload /tmp/report.pdfopenclaw browser upload /tmp/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 --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は アーミング 呼び出しです。選択ダイアログを トリガーするクリック/キー押下の前に実行してください。- ダウンロードおよびトレースの出力パスは、OpenClaw の一時ルートに制限されます:
- traces:
/tmp/openclaw(フォールバック:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(フォールバック:${os.tmpdir()}/openclaw/downloads)
- traces:
- アップロードパスは、OpenClaw の一時 uploads ルートに制限されます:
- 既定プロファイルは
chrome(拡張機能リレー)です。管理対象ブラウザーにはdefaultProfile: "openclaw"を使用します。 管理されたブラウザにdefaultProfile: "openclaw"を使用します。
- 既定プロファイルは
uploadは、--input-refまたは--elementにより ファイル入力を直接設定することもできます。snapshot:--format ai(Playwright がインストールされている場合の既定): 数値参照(aria-ref="<n>")付きの AI スナップショットを返します。--format aria:アクセシビリティツリーを返します(参照なし、検査のみ)。--efficient(または--mode efficient): コンパクトなロールスナップショットのプリセット(インタラクティブ + コンパクト + 深さ + 低い maxChars)。- 設定の既定(ツール/CLI のみ):
呼び出し側がモードを渡さない場合に効率的なスナップショットを使うには
browser.snapshotDefaults.mode: "efficient"を設定します(Gateway configuration を参照)。 - ロールスナップショットのオプション(
--interactive、--compact、--depth、--selector)は、ref=e12のような参照を持つロールベースのスナップショットを強制します。 --frame "<iframe selector>"は、ロールスナップショットを iframe にスコープします (e12のようなロール参照と組み合わせます)。--interactiveは、操作に最適なフラットで選びやすいインタラクティブ要素一覧を出力します。--labelsは、参照ラベルをオーバーレイしたビューポート限定のスクリーンショットを追加します (MEDIA:<path>を出力)。
click/type/ などは、snapshotから取得したref(数値の12またはロール参照のe12)が必要です。 CSS セレクターは意図的にアクションではサポートされていません。 CSS セレクターは意図的にアクションに対してサポートされていません。 CSS セレクターは意図的にアクションに対してサポートされていません。
スナップショットと参照
OpenClaw は 2 種類の「スナップショット」スタイルをサポートします:-
AI スナップショット(数値参照):
openclaw browser snapshot(既定;--format ai)- 出力:数値参照を含むテキストスナップショット。
- アクション:
openclaw browser click 12、openclaw browser type 23 "hello"。 - 内部的には、参照は Playwright の
aria-refにより解決されます。
-
ロールスナップショット(
e12のようなロール参照):openclaw browser snapshot --interactive(または--compact、--depth、--selector、--frame)- 出力:
[ref=e12](および任意の[nth=1])を含むロールベースの一覧/ツリー。 - アクション:
openclaw browser click e12、openclaw browser highlight e12。 - 内部的には、参照は
getByRole(...)(重複時はnth())により解決されます。 --labelsを追加すると、参照ラベルe12を重ねた ビューポートスクリーンショットを含めます。
- 出力:
- 参照は ナビゲーション間で安定しません。失敗した場合は、
snapshotを再実行し、 新しい参照を使用してください。 - ロールスナップショットが
--frame付きで取得された場合、 次のロールスナップショットまでロール参照はその iframe にスコープされます。
待機のパワーアップ
時間やテキスト以外にも待機できます:- URL を待機(Playwright のグロブをサポート):
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>を使用(インタラクティブモードではロール参照を優先)- それでも失敗する場合:
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 local|session get|set|clear - オフライン:
set offline on|off - ヘッダー:
set headers --json '{"X-Debug":"1"}'(または--clear) - HTTP Basic 認証:
set credentials user pass(または--clear) - 位置情報:
set geo <lat> <lon> --origin "https://example.com"(または--clear) - メディア:
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で無効化してください。 17. 17. プロンプトインジェクションによって、 これが誘導される可能性があります。 プロンプトインジェクションによって、 これが誘導される可能性があります。browser.evaluateEnabled=falseで無効にします。- ログインやアンチボットの注意点(X/Twitter など)については、 Browser login + X/Twitter posting を参照してください。
- Gateway/node host はプライベート(loopback または tailnet のみ)に保ってください。
- リモート CDP エンドポイントは強力です。トンネル化し、保護してください。
トラブルシューティング
Linux 固有の問題(特に snap の Chromium)については、 Browser troubleshooting を参照してください。エージェントツールと制御の仕組み
エージェントは、ブラウザー自動化のために 1 つのツール を使用します:browser— ステータス/開始/停止/タブ/オープン/フォーカス/クローズ/ スナップショット/スクリーンショット/ナビゲーション/アクション
browser snapshotは安定した UI ツリー(AI または ARIA)を返します。browser actは、スナップショットのrefID を使用して クリック/入力/ドラッグ/選択を行います。browser screenshotはピクセルをキャプチャします(全ページまたは要素)。browserは次を受け付けます:profile:名前付きブラウザープロファイル(openclaw、chrome、または remote CDP)を選択。target(sandbox|host|node): ブラウザーの配置場所を選択。- サンドボックス化されたセッションでは、
target: "host"にagents.defaults.sandbox.browser.allowHostControl=trueが必要です。 targetを省略した場合: サンドボックス化セッションは既定でsandbox、 非サンドボックスセッションは既定でhostになります。- ブラウザー対応の node が接続されている場合、
target="host"またはtarget="node"で固定しない限り、 ツールは自動的にそこへルーティングされることがあります。