Tools

Chrome 拡張機能

Chrome 拡張機能

OpenClaw Chrome 拡張機能を使用すると、別の管理対象ブラウザーを起動することなく、また Chrome の処理を妨げる「Allow remote debugging?」プロンプトも表示せずに、エージェントがログイン済みの Chrome タブを制御できます。

これは、スマートフォン(Telegram、WhatsApp など)から OpenClaw を操作する場合に重要です。user プロファイルは Chrome のリモートデバッグポート経由で接続するため、外出中には誰もクリックできないデスクトップの同意ダイアログが表示されます。代わりに、拡張機能は chrome.debugger API を使用するため、ページ内に表示されるのは、閉じることができる Chrome の「OpenClaw started debugging this browser」バナーだけです。

これは、Anthropic の Claude in Chrome および OpenAI の Codex Chrome 拡張機能で使用されているものと同じ構成です。

仕組み

3 つの要素で構成されます。

  • ブラウザー制御サービス(Gateway または Node ホスト):browser ツールが呼び出す API。
  • 拡張機能リレー(ループバック WebSocket):制御サービスが 127.0.0.1 で起動する小規模なサーバー。Chrome DevTools Protocol エンドポイントを OpenClaw に提供し、拡張機能と通信します。双方がホストローカルのトークンで 認証します(以下を参照)。
  • OpenClaw Chrome 拡張機能(MV3):chrome.debugger でタブに接続し、 CDP トラフィックを転送して、OpenClaw タブグループを管理します。

OpenClaw が認識および制御できるのは、OpenClaw タブグループ内のタブだけです。このグループが同意の境界になります。タブをグループ内にドラッグすると共有され、グループ外にドラッグする(またはツールバーボタンをクリックする)とアクセスが即座に取り消されます。

インストールとペアリング

  1. 展開済み拡張機能のパスを表示します。

    bash
    openclaw browser extension path
  2. chrome://extensions を開き、Developer mode を有効にして、Load unpacked をクリックし、表示されたディレクトリを選択します。

  3. ペアリング文字列を表示します。

    bash
    openclaw browser extension pair
  4. OpenClaw のツールバーアイコンをクリックし、ポップアップにペアリング文字列を貼り付けます。 拡張機能がリレーに接続すると、バッジが ON に変わります。

ペアリングトークンは初回使用時に作成されるホストローカルのシークレットで、状態ディレクトリ内の credentials/ に保存されます(モード 0600)。ブラウザーを実行する各マシン(Gateway ホストとすべてのブラウザー Node ホスト)がそれぞれ独自のトークンを所有するため、マシン間で認証情報を転送する必要はありません。ローテーションするには、browser-extension-relay.secret ファイルを削除して再度ペアリングします。

使用方法

browser ツール呼び出しで組み込みの chrome プロファイルを選択するか、デフォルトに設定します。

bash
openclaw config set browser.defaultProfile chrome
json5
{  browser: {    profiles: {      chrome: { driver: "extension", color: "#FF4500" },    },  },}
  • タブを共有するには、そのタブで OpenClaw ツールバーボタンをクリックするか(OpenClaw タブグループに追加されます)、任意のタブをグループ内にドラッグします。
  • エージェントが新しいタブを開くこともできます。そのタブは自動的にグループに追加されます。
  • アクセスを取り消すには、ボタンをもう一度クリックするか、タブをグループ外にドラッグするか、Chrome のデバッグバナーを閉じます。エージェントはそのタブへのアクセスを即座に失います。

タブコパイロットのサイドパネル

拡張機能をペアリングした後、ツールバーのポップアップで Open tab copilot をクリックします。 OpenClaw は、その Chrome タブ専用に sidepanel.html を設定します。マニフェストにはグローバルなサイドパネルパスはありません。そのため、各タブに個別のパネルドキュメント、Gateway セッション、メッセージサブスクリプション、および型付きブラウザーツールバインディングが割り当てられます。

パネルは、ページの URL、タイトル、DOM、または表示テキストをメッセージに含めません。送信されるのは入力したテキストだけです。ブラウザー操作には、Chrome タブと CDP ターゲットを含む、Gateway で認証された別個のバインディングが付随します。また、ブラウザーツールは、そのターゲットを置き換えたり、ブラウザー全体を対象とする操作を使用したりする試みを拒否します。応答はパネル内(deliver: false)に留まり、Telegram、Discord、その他のチャネルルートを継承しません。

コパイロットは、operator.read および operator.write スコープを持つ、ペアリング済みの専用 Gateway デバイスです。初回使用時に、そのリクエストを確認して承認します。

bash
openclaw devices listopenclaw devices approve <requestId>

拡張機能は、そのデバイス ID と Gateway が発行したデバイストークンを保持します。これらは、発行元となった正規の Gateway エンドポイントにスコープされます。別の Gateway とペアリングすると、個別の ID、トークン、およびセッション管理が作成されます。認証情報とセッションがエンドポイント間で再利用されることはありません。拡張機能は Gateway の共有シークレットを永続化しません。パネルがサブスクライブできるのは、そのパネル自身のタブセッションのみであり、Gateway は配信前にそれらのイベントをフィルタリングします。

実行中に Gateway 接続が切断された場合、拡張機能はその実行 ID を永続的に保持します。再接続すると、パネルを再度有効にする前に未解決の実行を中止し、その後トランスクリプト履歴を再読み込みします。このフェイルクローズ手順により、配信が途切れている間にブラウザー操作が見えない状態で継続することを防ぎます。

タブを閉じると、ライブサブスクリプションが即座に削除され、表示中の実行が中止され、そのタブのセッションがアーカイブ済みとしてマークされます。Gateway が一時的にオフラインの場合、拡張機能は保留中のアーカイブを永続化し、同じ Gateway エンドポイントが再接続された場合にのみ再試行します。別の Gateway にアーカイブリクエストを送信することはありません。ブラウザーのクラッシュ後は、次回の起動時に、以前のブラウザーインスタンスが残したセッションがアーカイブされます。アーカイブ済みセッションは新しい処理を拒否しますが、そのトランスクリプトはセッション履歴で引き続き利用できます。ブラウザーコパイロットのキーはスレッドセッションであるため、通常の経過時間およびエントリ数に基づくメンテナンスで保持されます。エージェントごとのセッションディスク予算も引き続き適用され(デフォルト 2gb)、容量が逼迫すると最も古いセッションが削除される可能性があります。セッションのメンテナンスを参照してください。

現在、サイドパネルには、Gateway がホストする拡張機能リレーまたはリモート Gateway への直接リレーのいずれかが必要です。ブラウザー Node 上のループバックリレーは、型付きタブバインディングに必要な Node ルートをまだ提供できません。そのため、パネルはブラウザー全体のルーティングにフォールバックせず、このトポロジーを拒否します。

ページを OpenClaw に送信する

ツールバーのポップアップにある Send page to OpenClaw を使用して、読み取り可能なページテキストをメインの OpenClaw セッションと共有します。任意のメモを追加したり、ページまたは選択範囲の右クリックメニューを使用したり、Alt+Shift+S を押したりできます。現在の選択範囲がある場合、OpenClaw はそれを優先し、共有内容をシステムイベントとしてキューに追加して、メインセッションを即座に起動します。

タブが OpenClaw タブグループに含まれている必要はありません。これは明示的な 1 回限りの共有です。ページ上のその他の内容は公開されず、継続的なアクセス権も付与されません。Google Docs は、Google API を設定せずに、ログイン済みのブラウザーセッションを使用してプレーンテキストとしてエクスポートされます。X および Twitter のスレッドは、周囲のインターフェース要素を除外して抽出されます。

ページテキストは、OpenClaw の外部コンテンツ安全境界で囲まれます。任意のメモは、ユーザー自身の指示としてその境界の外側に置かれます。ページテキストと選択範囲は約 120,000 文字に制限され、短縮された場合は切り詰めマーカーが含まれます。

ページ共有は、Gateway が拡張機能リレーをホストし、同一ホストでのペアリングまたは直接 wss:// Gateway ペアリングを使用している場合に機能します。Node がホストするリレーは、現時点では明確なエラーを返します。キーボードショートカットを再割り当てするには、chrome://extensions/shortcuts を開きます。

リモート/マシン間

Chrome を Gateway ホスト上で実行する必要はありません。次の 3 つのトポロジーが利用できます。

  • 同一ホスト(1 台のマシン上に Gateway と Chrome):そのマシン上で openclaw browser extension pair を使用してペアリングします。リレーはループバックのみに制限されます。 ローカル Gateway が TLS を使用する場合は、--gateway-url wss://gateway-host.example で証明書のホスト名を明示的に渡します。ペアリングでループバック IP が代用されることはありません。
  • リモート Gateway への直接接続(ノート PC 上に Chrome、VPS 上に Gateway があり、 ノート PC 上にはほかに何もない場合):Gateway 上で openclaw browser extension pair --gateway-url wss://your-gateway.example.com を実行します。 wss://…/browser/extension#<secret> 文字列が表示されるので、ノート PC 上で拡張機能を読み込み、ペアリングします。拡張機能は wss:// 経由でGateway に直接接続します。ノート PC 上に OpenClaw、Node、CLI、または開放された受信ポートは必要ありません。これはマネージドホスティング向けの経路です。
  • ブラウザー Node ホスト経由(すでに OpenClaw Node が実行されているマシン上に Chrome がある場合):Node 上で pair を実行してローカルでペアリングします。Gateway は、既存の認証済み Node リンクを介してブラウザー操作を Node にプロキシします。

ペアリングシークレットはホストごとに固有であり(直接接続の場合は Gateway のシークレット)、Gateway の /browser/extension ルートで検証されます。直接接続の場合、Gateway を TLS(wss://)経由で提供し、ペアリングシークレットと CDP トラフィックを暗号化します。シークレットはペアリング文字列の URL フラグメント内に残り、WebSocket ハンドシェイク時にサブプロトコル認証情報として提示されます。そのため、通常のプロキシアクセスログがリクエスト URL 内のシークレットを受け取ることはありません。すべてのリバースプロキシが標準の Sec-WebSocket-Protocol ヘッダーを保持するようにしてください。

診断

bash
openclaw browser status --browser-profile chromeopenclaw browser doctor --browser-profile chrome

拡張機能のポップアップに Connected と表示されるまで、doctorChrome 拡張機能リレーのチェックを失敗として報告します。

セキュリティモデル

  • リレーはループバックのみにバインドされます。WebSocket の双方が派生トークンで認証され、拡張機能側ではオリジンが chrome-extension:// であることが確認されます。
  • Gateway への直接ペアリングでは、リクエスト URL 内のリレートークンを受け付けません。代わりに、バンドルされた拡張機能が WebSocket サブプロトコルリスト内でトークンを送信します。
  • エージェントが認識および操作できるのは、OpenClaw タブグループ内のタブだけです。その他のタブは非公開のままです。
  • サイドパネルの実行には二重のスコープ制限があります。Gateway による配信ではセッションごとの許可リストが使用され、ブラウザーツールではプロンプト外で伝達される Chrome タブ/ターゲットバインディングが適用されます。
  • リモートデバッグのプロンプトを承認するとログイン済みブラウザー全体が公開される user(Chrome MCP)プロファイルと比較して、この拡張機能では、共有対象を一目で管理できるタブグループに限定できます。

プロファイルモデル全体と、管理対象の openclaw および Chrome MCP user プロファイルについては、ブラウザーも参照してください。

Was this useful?
On this page

On this page