OpenAICloudflare2026/04/15 13:00

Browser Run: give your agents a browser

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

Browser Run:エージェント向けブラウザ機能の強化

Key Points

  • CDP直接接続対応
  • ライブビューで即時デバッグ
  • 人の介入(Human-in-Loop)対応

Summary

Cloudflareの「Browser Rendering」が「Browser Run」に改名され、AIエージェント向けにフルブラウザ機能を提供する主要機能が追加されました。エージェントはCloudflare上のChromeを直接制御でき、リアルタイムの可視化、セッション録画、人の介入、低レベルのCDPアクセス、MCP/WebMCP対応などにより、運用性・デバッグ性・スケーラビリティが大幅に向上しています。

Key Points

  • 新しいCDPエンドポイント

    • 既存のCDPスクリプトは一行の設定変更でそのまま動作します。例: browserWSEndpointwss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser に向け、Authorization: Bearer <API_TOKEN> ヘッダーを付与。
    • 生のCDPメッセージでより細かなブラウザ制御(JSデバッグ等)が可能。
  • MCPクライアントとWebMCP対応

    • Claude Desktop、Cursor、OpenCodeなどのAIエディタ/エージェントがリモートブラウザとして利用可能。
    • WebMCP(Chromium 146+)によりサイトがエージェント向けAPIを公開でき、navigator.modelContext / navigator.modelContextTesting でツール検出・実行が可能。長尾サイトでの信頼性が向上。
  • 観測性とデバッグ

    • Live View:セッションをリアルタイムで確認(DOM/コンソール/ネットワーク含む)。セッションの session_id から devtoolsFrontendURL を開くかダッシュボードで確認。
    • Session Recordings:recording:true を指定してDOM変更・入力イベント・ナビゲーションをJSONで録画し、ダッシュボードまたはAPIで取得して再生可能。
  • クローリングとポリシー準拠

    • 新しい /crawl エンドポイントでサイト全体の自動検出・スクレイピング(HTML/Markdown/JSON出力)が可能。robots.txt、AI Crawl Control、Web Bot Authによる署名済みボットID、固定User-Agentを順守し保護回避を行わない設計。
  • 運用とスケール

    • 同時ブラウザ数が最大120に拡張(従来30)。Quick Actionsは10 req/sec。
    • Wrangler CLIで実験プールを作成可能:npm i -g wrangler@latestwrangler browser create --lab --keepAlive 300
  • 既存ツール互換性

    • Puppeteer、Playwright、Quick Actionsなど既存の高レベルAPIはそのまま利用可能。CDP公開により任意の言語・環境から接続でき、Cloudflare Workerは必須ではありません。

Practical notes for engineers

  • 既存のセルフホストChrome用CDPスクリプトを移行するには、browserWSEndpoint を上記のCloudflare WS URLに差し替え、認証ヘッダーを追加するだけです。
  • デバッグ時はまずLive Viewで状況確認、録画を有効にして後から詳細を再生すると原因特定が速くなります。
  • WebMCP対応サイトを対象にする場合、サイト側の navigator.modelContext を確認してエージェントの呼び出し設計を行ってください。
  • /crawl はポリシー順守型のクローラです。サイト所有者の許可・規約に配慮して利用してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Browser Run:エージェントにブラウザを与える

Browser Run:エージェントにブラウザを与える

2026-04-15 — Kathy Liao — 読了約8分

AIエージェントはウェブとやり取りする必要があります。そのためにはブラウザが必要です。サイトの移動、ページの読み取り、フォーム入力、データ抽出、スクリーンショット取得を行い、期待どおりに動いているか観察し、人間が必要なら介入できる仕組みも必要です。そしてこれらを大規模に実行できなければなりません。

本日、Browser RenderingをBrowser Runに名称変更し、AIエージェント向けのブラウザとして重要な機能をリリースします。

Browser Renderingという名前は製品の全体像を十分に表していませんでした。Browser RunはCloudflareのグローバルネットワーク上でフルブラウザセッションを実行し、コードやAIで操作し、セッションを記録・再生し、コンテンツをクロールし、リアルタイムでデバッグし、エージェントが助けを必要とする際に人間が介入できるようにします。

新機能ハイライト

  • Live View:エージェントが見ているものとその操作をリアルタイムで可視化。動作確認や不具合の原因特定が瞬時に可能。
  • Human in the Loop(ヒューマン・イン・ザ・ループ):ログインページや想定外のエッジケースでエージェントが詰まったときに、人間に引き継いで解決後に制御を戻すことが可能。
  • Chrome DevTools Protocol (CDP) エンドポイント:ブラウザ制御の根幹を成すCDPを直接公開。既存のCDPスクリプトやツールがCloudflare上で動作します(新)。
  • MCPクライアント対応:Claude Desktop、Cursor、OpenCodeなどのAIコーディングエージェントがBrowser Runをリモートブラウザとして使用可能(新)。
  • WebMCPサポート:WebMCPにより、ウェブサイトはエージェントが発見・呼び出せるアクションを宣言でき、ナビゲーションの信頼性が向上します(新)。
  • Session Recordings:DOMの変更、ユーザー操作、ページ遷移を含むセッションを記録し、デバッグに利用可能(新)。
  • 上限強化:同時ブラウザ数が30から120へ(4倍)、Quick Actionsは10リクエスト/秒。

エージェントが必要とするすべて

エージェントがウェブをブラウズするときに必要な要素と、各機能がどのように当てはまるかを整理します。

What an agent needs | Browser Run(旧: Browser Rendering)

  1. ブラウザオンデマンド
  • ChromeブラウザがCloudflareのグローバルネットワーク上で利用可能
  1. ブラウザを制御する手段
  • ナビゲート、クリック、フォーム入力、スクリーンショットなどをPuppeteer、Playwright、CDP(新)、MCPクライアント対応(新)、WebMCP(新)で実行
  1. 可観測性
  • Live View(新)、Session Recordings(新)、ダッシュボード再設計(新)
  1. 人間の介入
  • Human in the Loop(新)
  1. スケール
  • Quick Actions: 10 リクエスト/秒、同時ブラウザ: 120
  1. ブラウザを開く

まず、エージェントにはブラウザが必要です。Browser Runでは、エージェントがCloudflareのグローバルネットワーク上でヘッドレスChromeインスタンスをオンデマンドで起動できます。インフラ管理やChromeのバージョン管理は不要です。ブラウザセッションはユーザーに近い場所で開かれるためレイテンシが低く、必要に応じてスケールします。

Browser RunをAgents SDKと組み合わせれば、ウェブをブラウズし、全てを記憶し、自律的に行動する長時間稼働のエージェントを構築できます。

  1. 操作する

エージェントがブラウザを持ったら、それを制御する手段が必要です。Browser Runは複数のアプローチをサポートします:低レベルのCDPとWebMCP、既存の高レベル自動化であるPuppeteerとPlaywright、そして単純タスク用のQuick Actions。以下で詳述します。

Chrome DevTools Protocol (CDP) エンドポイント

Chrome DevTools Protocol(CDP)はブラウザ自動化を支える低レベルプロトコルです。CDPを直接公開することで、エージェントツールのエコシステムや既存のCDP自動化スクリプトがBrowser Runを利用できるようになります。Chrome DevToolsを開いてページを検査したとき、背後で動いているのがCDPです。Puppeteer、Playwright、および多くのエージェントフレームワークはその上に構築されています。

これまでも実際にはCDPを通じてBrowser Runを利用していましたが、今回CDPを直接エンドポイントとして公開します。これはエージェントにとって重要で、CDPはブラウザに対して可能な限り最大の制御を与えます。エージェントフレームワークはCDPをネイティブに扱えるため、直接Browser Runに接続できます。CDPはPuppeteerやPlaywrightでは提供されない機能、例えばJavaScriptデバッグなどをアンロックします。また高レベルライブラリを介さず生のCDPメッセージを扱えるため、モデルに直接メッセージを渡してトークン効率のよいブラウザ制御ができます。

既にセルフホストのChromeでCDP自動化スクリプトを動かしている場合、1行の設定変更でBrowser Run上で動作します。WebSocket URLをBrowser Runに向けるだけで自前のブラウザインフラ管理を止められます。

// Before: connecting to self-hosted Chrome
const browser = await puppeteer.connect({ browserWSEndpoint: 'ws://localhost:9222/devtools/browser' });

// After: connecting to Browser Run
const browser = await puppeteer.connect({ browserWSEndpoint: 'wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser', headers: { 'Authorization': 'Bearer <API_TOKEN>' } });

CDPエンドポイントにより、Browser Runはより多様な言語や環境からアクセス可能になります。Cloudflare Workerを自分で書く必要はありません(既にWorkersを使っている場合は何も変わりません)。

MCPクライアントでBrowser Runを使う

Browser RunがCDPを公開したので、Claude Desktop、Cursor、Codex、OpenCodeなどのMCPクライアントがBrowser Runをリモートブラウザとして使用できます。chrome-devtools-mcpパッケージはCDPのフル機能にAIコーディングアシスタントがアクセスできるようにするMCPサーバーで、信頼性の高い自動化、詳細なデバッグ、パフォーマンス解析を可能にします。以下はClaude Desktop用の設定例です:

{
  "mcpServers": {
    "browser-rendering": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser?keep_alive=600000",
        "--wsHeaders={\"Authorization\":\"Bearer <API_TOKEN>\"}"
      ]
    }
  }
}

他のMCPクライアントについては、Browser RunとMCPクライアントを使うドキュメントを参照してください。

WebMCPサポート

インターネットは人間向けに作られているため、現状ではAIエージェントによるナビゲーションは信頼性が低いことが多いです。私たちは将来、ウェブを使うのが人間よりもエージェントの方が多くなると予測しています。その世界では、サイトはエージェントフレンドリーである必要があります。そこでWebMCPをサポートします。WebMCPはGoogle Chromeチームが開発したブラウザAPIで、Chromium 146+で導入されました。

WebMCPにより、ウェブサイトはページ上でエージェントが発見し呼び出せるアクションを公開できます。これにより、エージェントはUIを推測してループする代わりに、公開されたツールを直接呼び出してナビゲーションをより確実に行えます。

  • navigator.modelContext:サイトがツールを登録するためのAPI
  • navigator.modelContextTesting:エージェントがそのツールを発見・実行するためのAPI

たとえば旅行予約サイトをエージェントが訪れた際、従来はUIを解析して操作方法を見つける必要がありました。WebMCPを使えばサイトが「search_flightsというツールがあり、origin、destination、dateを受け取る」と宣言でき、エージェントは直接そのツールを呼び出せます。これによりUI変更による壊れやすさが緩和されます。

ツールはページで発見され、事前にロードされるわけではありません。これは、すべてのサイトに対してMCPサーバーを事前に用意することが現実的でない長い尾のウェブにおいて重要です。

開発中のブラウザ機能を安定版より前に試せるよう、Chrome betaを実行する実験プールも用意しています。また、Wranglerのブラウザコマンドを導入し、CLIからブラウザセッションを直接作成・管理・表示できるようになりました。WebMCP対応ブラウザにアクセスするには、実験プールでセッションを作成する次のWranglerコマンドを使用します:

npm i -g wrangler@latest
wrangler browser create --lab --keepAlive 300

既存のBrowser Runの利用方法

CDPとWebMCPは新機能ですが、従来どおりPuppeteer、Playwright、Stagehandを使ってBrowser Runでフルブラウザ自動化を行えます。スクリーンショット取得、PDF生成、Markdown抽出のような簡易タスクにはQuick Actionエンドポイントもあります。

/ crawl エンドポイント — ウェブコンテンツのクロール

最近、単一APIコールでサイト全体をクロールできる /crawl エンドポイントを公開しました。開始URLを与えるとページを自動的に発見してスクレイピングし、HTML、Markdown、構造化JSONのいずれかで返します。クロール深度や範囲の指定、変更のないページをスキップ、特定パスの包含・除外などの追加パラメータも用意しています。

/ crawl は「マナーの良いクローラ」として設計しました。デフォルトでサイトオーナーの設定を尊重し、署名済みのエージェントIDを持つエージェントとして振る舞い(Web Bot Authで暗号的に署名)、カスタマイズ不可のUser-Agentを使用し、robots.txtとAI Crawl Controlに従います。Cloudflareのボット保護やCAPTCHAを回避することはありません。サイトオーナーがコンテンツのアクセス可否を選び、/crawlはそれを尊重します。

Initiate a crawl

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl' \
 -H 'Authorization: Bearer <apiToken>' \
 -H 'Content-Type: application/json' \
 -d '{ "url": "https://blog.cloudflare.com/" }'

3) 観察する

自動化は常に一発でうまく行くとは限りません。自動化が失敗したときに原因が分からないというフィードバックを多く受けたため、エージェントが見ているものをライブでも事後でも正確に把握できる複数の方法を追加しました。

Live View

Live Viewでは、エージェントのブラウザセッションをリアルタイムで監視できます。デバッグ中や長時間の自動化スクリプト実行時に、発生していることをそのまま確認できます。ページ本体だけでなくDOM、コンソール、ネットワークリクエストも含まれます。期待したボタンがない、認証が必要、CAPTCHAが出る、といった問題を即座に検知できます。

Live Viewには2つのアクセス方法があります。コードからは、検査したいブラウザのsession_idを取得してレスポンスに含まれるdevtoolsFrontendURLをChromeで開きます。ダッシュボードからは、Browser Runの新しいLive Sessionsタブで任意のアクティブセッションをクリックします。

Session Recordings

常時監視できるわけではないため、Session RecordingsでDOMの変更、マウス・キーボードイベント、ページ遷移を構造化JSONとしてキャプチャし、セッション終了後に再生できます。ブラウザ起動時に recording:true を渡すとSession Recordingsを有効にできます。セッション終了後はCloudflareダッシュボードのRunsタブから録画にアクセスするか、APIで取得してrrweb-playerで再生できます。次のアップデートでは録画中の任意のポイントでDOM状態やコンソール出力を検査する機能を追加予定です。

ダッシュボード再設計

以前はBrowser Runダッシュボードはブラウザセッションのログのみを表示していました。リクエスト(スクリーンショット、PDF、Markdown、クロール...)