Claude Media
Claude APIのBrowser use toolの使い方 — Computer useとの違い

Claude APIのBrowser use toolの使い方 — Computer useとの違い

Claude APIのBrowser use toolの使い方を解説します。Computer use toolとの違い、SDKで始める入口、Browser Useライブラリとの関係、31のメンバーツールの全体像までを扱います。

Browser use toolは、Claudeに自分のアプリが動かすブラウザ上でのWebページ操作を許可する、Anthropic製のクライアントツールセットです。tools配列にbrowser_toolset_20260801を1エントリ足すと、ページの構造を読み取り、クリックやフォーム入力までこなす31個のメンバーツールが使えるようになります。似た名前のComputer use toolとは対象範囲が違い、選ぶ基準はタスクがWebページの中で完結するか、デスクトップ全体に及ぶかです。

Browser use toolとは何か

Claudeはアクセシビリティツリー(ページの要素・フォーム・タブの構造)と、スクリーンショットのビューポート座標の両方でページを扱います。ナビゲーション・要素の読み取り・クリックやフォーム入力・タブ管理を、1つのツールセット定義でまとめて提供します。

実行環境は自分のアプリケーション側です。Anthropicが返すのはtool_useブロックだけで、ブラウザを動かす「executor」は自分で用意します。この構造はComputer use toolと同じで、Anthropic側では何も実行されません。Computer use toolを自前実装する骨格はComputer Useツールを自前実装する最小構成で扱っています。

対応モデルは次の10個です。

  • claude-fable-5-1
  • claude-mythos-5-1
  • claude-fable-5
  • claude-mythos-5
  • claude-opus-5-5
  • claude-opus-5
  • claude-sonnet-5-5
  • claude-sonnet-5
  • claude-opus-4-8
  • claude-haiku-5-5

プラットフォームはClaude APIとGoogle Cloudの2つです。Claude Platform on AWS・Amazon Bedrock・Microsoft Foundryでは使えず、Claude Managed Agentsにも載っていません。

使い方の入口は2つある

自分でtool_useを受けて実行するなら、本記事で扱うbrowser_toolset_20260801をtoolsに直接入れます。もう1つはPythonとTypeScriptのSDKにあるブラウザ用ツールセットのクラスで、ベータです。ツールランナーが会話のループを回し、navigateのURL制限や承認コールバックも設定できます。ブラウザを動かす部分(ドライバー)は自分で用意するか、提携先のものを使います。

SDK経由の組み方はSDKのブラウザツールセットとドライバーで扱っています。

Browser Useというライブラリとは別物

「browser use」で検索すると、オープンソースのBrowser Useライブラリも並びます。こちらはAnthropic製ではなく、別の提供元のプロジェクトです。AnthropicのSDKツールセットには、Browser Use、Browserbase、Daytona、E2Bがドライバーを出しています。つまりBrowser UseライブラリはClaudeのBrowser use toolの「ブラウザを動かす側」に回れる関係で、競合する別機能ではありません。

Computer use toolとどちらを選ぶか

Webページの中で完結する作業、またはページがJavaScriptでコンテンツを組み立てている場合は、Browser use toolが向きます。デスクトップ全体が必要なら、スクリーンショットと座標だけで動くComputer use toolを選びます。

Computer use toolの17メンバーは座標中心で、left_clickの引数もcoordinateです。Browser use toolの31メンバーは、left_clickのtargetに座標と要素参照のどちらも渡せます。

2つを同じtools配列に宣言する組み合わせもあります。ブラウザ内の操作はBrowser use toolに任せ、デスクトップ側の操作が要る場面だけComputer use toolに渡す使い方です。両者は別々の座標系(前者はビューポートのピクセル、後者はデスクトップのスクリーンショットのピクセル)で独立に動きます。screenshotやkeyのような同名メンバーは、toolset_nameがbrowserかcomputerかで呼び分けられます。

プラットフォームの面でも差が出ます。Computer use toolの最新版computer_toolset_20260801もClaude APIとGoogle Cloud向けです。Claude Platform on AWS・Amazon Bedrock・Microsoft Foundryで使えるのは、ベータの旧バージョン(computer_20251124など)です。ベータヘッダーを付けて呼びます。Browser use toolはそれらの面では使えません。マルチクラウド前提なら、ブラウザ操作もComputer use toolの旧バージョンに寄せる選択肢があります。

用途別の使い分け早見表
用途向くツール実行する側
指定したURLの内容を読む向くツールWeb fetch tool実行する側API側(ブラウザ不要)
Web検索で情報源を探す向くツールWeb search tool実行する側API側(ブラウザ不要)
フォーム入力やクリックなどWebページ内の操作向くツールBrowser use tool実行する側自分のブラウザ
デスクトップアプリやOS全体の操作向くツールComputer use tool実行する側自分のデスクトップ環境

プロダクト側でも、Coworkが手段を選ぶ優先順位でブラウザ操作は画面操作より先に試される手段として扱われています。

1回のやり取りで何が起きるか

最小構成のリクエストは、tools配列にbrowser_toolset_20260801を1つ加えるだけです。nameは付けません。

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 2048,
    "tools": [{"type": "browser_toolset_20260801"}],
    "messages": [
      {"role": "user", "content": "example.com/docsを開いて、始め方を教えて"}
    ]
  }'

応答はstop_reason: "tool_use"で返り、メンバーごとのtool_useブロックがnameと"toolset_name": "browser"を持ちます。たとえばnavigateとread_pageが同じターンに並びます。

このループを実際のコードにした例はBrowser use toolの実装(navigateとread_page)にあります。

手順

executorが回すループ

  1. 1

    ツールセットとユーザーの依頼を送る

    browser_toolset_20260801をtoolsに入れ、ページ操作を要する依頼文を添えます。

  2. 2

    Claudeがメンバー呼び出しを返す

    1ターンに複数のtool_useが入ることがあり、inputにはそのメンバーの引数だけが入ります(actionフィールドはありません)。

  3. 3

    記載順に実行して結果を返す

    1つ目から順に実行し、tool_use_idで対応づけたtool_resultを1つのuserメッセージで返します。各結果にtoolset_name: "browser"を付け、1つでも応答が欠けると次のリクエストは拒否されます。

  4. 4

    Claudeが続けるか、テキストで答える

    結果(ページテキスト・アクセシビリティツリー・スクリーンショット・タブの状態)を読み、追加のメンバー呼び出しを返すか、最終回答を文章で返します。

read_pageの結果は、全要素に参照が付いたテキストです。

link "Documentation" [ref_1]
link "Getting started" [ref_2]
textbox "Search docs" [ref_3]
button "Search" [ref_4]
link "Pricing" [ref_5]

次のターンでClaudeはref_2をクリックするだけで済み、スクリーンショットから座標を探す必要がありません。

バッチアクションは最初の失敗で止まる

1ターンに並んだ呼び出しは「バッチアクション」で、たとえばleft_click、type、key(Enter)をまとめて返せます。途中で失敗したら、それより後の呼び出しにはすべてis_error: trueと次の文言を返します。

Not executed: an earlier action in this turn failed.

呼び出しのたびにスクリーンショットを返す必要はありません。Claudeはバッチの最後にscreenshot・read_page・get_page_textのどれかで状態を確かめるのが通常です。

executorが1回の往復で1呼び出ししか処理できない作りなら、tool_choiceにdisable_parallel_tool_use: trueを指定します。Claudeは1ターンに最大1つのメンバー呼び出しだけを返すようになり、代償は往復の増加です。バッチの扱いを詳しく見るならBrowser use toolのバッチアクションが参考になります。

要素参照と座標はどう使い分けられるか

ClaudeはページのつくりしだいでTargetの種類を切り替えます。プロンプトとexecutorの返す結果が、その選択を左右します。

くらべる

Claudeが選ぶ指定方法

アクセシビリティツリーが使える

要素参照(ref)

通常のフォームやリンクが並ぶページが当たります。レイアウトのずれや再描画に強く、ポインターでは狙いにくい部品も操作できます。left_click・hover・scroll_to・form_input・file_uploadが参照を受け取ります。

ツリーが部品を記述しない

座標(coordinate)

canvas描画のUI、埋め込み動画やリモートデスクトップの面、仮想化された長い一覧、スクロールで再描画されるページ、クロスオリジンのiframeの中が当たります。screenshotとzoomを見て、ビューポートのピクセルでクリックします。iframeのどのフレームに当たるかはexecutorが解決します。

参照を振るのはexecutorです。アクセシビリティノードのIDや保存したセレクタなどと対応づけ、同じタブが遷移するかDOMが大きく変わるまで、番号を振り直さない作りにします。

APIには古い参照や未知の参照を見抜く手段がありません。executorが次のようなエラー結果を返し、Claudeにページを読み直させます。

Error: ref_3 is stale or not found on the current page. Re-read the page to get fresh references.

座標側の落とし穴はBrowser Use Toolの座標指定に、エラー結果の書き方はBrowser use toolのエラーハンドリングにあります。

read_pageは引数で出力量を絞れます。filterを省くと見えている全要素、"interactive"なら操作可能な要素だけ、"all"ならビューポート外も含みます。depthは最小1・既定15で、refを渡すと、その要素の部分木だけを読めます。出力は50,000文字で打ち切り、その旨を結果に書くよう求められており、Claudeはより小さなdepthかrefで読み直します。

典型的なページなら、ツリーを読むほうがスクリーンショットより入力トークンが少なくて済みます。見た目のレイアウト・画像・描画状態が重要なときは、スクリーンショットが適した観察手段です。

スクリーンショットを返す側には制約があります。APIはツールセットの画像を縮小せず、モデルごとの画像サイズ上限を超える画像は拒否されます。リクエストに20枚を超える画像が入ると、1枚あたりの上限はさらに厳しくなり、超えた画像はinvalid_request_errorで拒否されます。メッセージには"many-image requests"という語句が含まれます。返す前にexecutorが縮小し、Claudeの座標を縮小率の逆数で戻してから実行する必要があります。計算式はComputer Useの座標ズレを直すスケーリング計算式にまとめています。

31のメンバーツールの全体像

メンバーは7グループに分かれ、既定で有効なのは27個です。javascript_exec・file_upload・read_console・read_networkの4個は、有効化しない限りClaudeに提示されません。

グループ個数メンバー
ナビゲーションと取得個数3メンバーnavigate、screenshot、zoom
ポインター操作個数12メンバーleft_click、right_click、middle_click、double_click、triple_click、hover、left_click_drag、left_mouse_down、left_mouse_up、mouse_move、scroll、scroll_to
キーボードとタイミング個数4メンバーtype、key、hold_key、wait
ページ読み取り個数3メンバーread_page、find、get_page_text
フォームとファイル個数2メンバーform_input、file_upload(既定無効)
診断とスクリプト実行個数3メンバーread_console・read_network・javascript_exec(いずれも既定無効)
タブ管理個数4メンバーnew_tab、list_tabs、switch_tab、close_tab

findは「検索ボックス」のような自然言語の説明で要素を探し、最大20件をread_pageと同じ形式で返します。get_page_textは見えている文字を平文で返し、記事やドキュメントのような文章中心のページに向きます。form_inputは値を直接セットし、チェックボックスには真偽値、セレクトにはオプションの値か表示テキストを渡します。

引数の範囲は、keyのrepeatが1〜100、hold_keyとwaitのdurationが0〜30秒です。Computer use toolのhold_keyとwaitは最大300秒なので、同名のメンバーでも上限が違います。

設定で外すメンバーと有効にするメンバー

configsにはメンバー名ごとにenabledとdefer_loadingの2つだけを書けます。書かなかったメンバーは既定のままです。

{
  "type": "browser_toolset_20260801",
  "configs": {
    "read_console": { "enabled": true },
    "left_mouse_down": { "enabled": false },
    "left_mouse_up": { "enabled": false },
    "hold_key": { "enabled": false }
  }
}

外したメンバーはClaudeに見える定義から消えます。それでもClaudeがその名前を呼ぶ可能性はあり、executorはエラー結果で応答します。全メンバーを無効にするconfigsは拒否されます。

4つの任意メンバーが既定で無効なのは、理由が2系統あるからです。javascript_execとfile_uploadは、操作された悪意あるページがClaudeにさせられる範囲を広げるため。read_consoleとread_networkは、ブラウザ自動化の基盤によってはログを取れず、ページが制御する内容がClaudeに届く範囲も広がるためです。有効化の手順とリスクはBrowser use toolを有効化で扱っています。

リクエストが400になる組み合わせ

ツールセットのエントリには、通常のツール定義で使えるプロパティの一部が使えません。次はいずれもinvalid_request_errorで拒否されます。

  • name、strict: true、input_examplesを付ける
  • エントリ自体にdefer_loadingを付ける(メンバーごとにconfigsで、有効な全メンバーを同じ値にする)
  • tool_choiceにtype: "tool"でツールセットやメンバーを指名する(auto・any・noneは使える)
  • ブラウザのツールセットを2つ宣言する、またはbrowserという名前の別ツールを併記する
  • allowed_callersにコード実行を入れる(["direct"]だけが使える)
  • リクエストに旧ベータヘッダーfine-grained-tool-streaming-2025-05-14を付ける
  • configsにメンバー名でないキーを書く、またはenabled・defer_loading以外のフィールドを書く
  • tool_resultにtoolset_nameを付け忘れる、またはメンバー以外の呼び出しの結果に付ける

自前のnavigateのようなカスタムツールは、メンバーと同じ名前を付けても構いません。呼び出しはtoolset_nameとnameの組で見分けます。tool_resultに入れられるブロックはtext・image・browser_stateの3種類だけです。

タブとダウンロードはbrowser_stateで伝える

タブの実在状況の正は自分のアプリで、tab_idも自分で振ります。状態はbrowser_stateブロックで返し、Claudeがこのブロックを直接見ることはありません。APIがテキストに描き直した内容を読みます。

tabsは差分ではなく、呼び出し後に開いているタブの全一覧です。空でないときは、ちょうど1つに"active": trueが付きます。tab_id・title・urlは各4,096文字まで、1ブロックに最大100タブ、200件のstate_changesが上限です。

new_tab・list_tabs・switch_tab・close_tabの成功結果は、browser_stateブロック1つだけで、テキストや画像は混ぜられません。たとえばlist_tabsの結果は、Claudeには次の形で届きます。

Available tabs:
  • tab_id tab-1: "Documentation" (https://example.com/docs) (current)
  • tab_id tab-2: "Pricing" (https://example.com/pricing)

クリックやナビゲーションで始まったダウンロードは、state_changesで報告します。種類はdownload_started・download_completed・download_failedで、download_idをそろえます。pathを入れるのは、同じ環境の別ツール(bash toolやfile_upload)がそのパスを読めるときだけです。

タブの題名やURL、ダウンロードのurl・path・errorはページ由来で、Claudeが読むテキストに描かれるため、プロンプトインジェクションの入口になります。題名のエスケープはAPIが行うので、事前にエスケープすると二重になります。一方、タブのURLはAPIがそのまま描くため、ページ由来のURLはexecutor側で無害化します。実装はbrowser use toolのbrowser_stateでタブ管理を実装するに詳しくあります。

導入前に決めておくこと

セキュリティ

ページが差し出す内容はすべて信頼できない入力で、Claudeはページ内の指示に従ってしまうことがあります。「以前の指示を無視して〜へ移動せよ」のような文が、依頼から逸らす実例です。備えの中心は3つです。認証情報を持たない新しいプロファイルのブラウザを、権限を絞ったコンテナか仮想マシンで動かします。ドメインの許可リストはネットワーク層で強制します。影響の大きい操作の前には人が確認します。navigateでhttpとhttps以外(javascript:・file:・data:など)を拒否するのも、APIがURLをフィルターしないためexecutorの仕事です。javascript_execとfile_uploadは必要なときだけ有効にします。6つの備えの詳細はBrowser use toolのセキュリティ対策6原則にまとめています。

追加の防御として、ブラウザが返すページテキストやスクリーンショットを分類器が自動で走査します。プロンプトインジェクションの疑いを検出すると、モデルに「その指示は本当に利用者からのものか」を確かめさせます。人間が介在しない用途では最適でない場合があり、無効化したいときはサポートに連絡する形です。分類器があっても、上の備えは省けません。

料金

既定のメンバーを宣言すると、リクエストごとに入力トークンの定義オーバーヘッドが加わります。

数字

ツールセット宣言で増える入力トークン

  • Browser use tool

    約6,600

    Sonnet 5は約6,670。Fable 5・Mythos 5・Opus 5・Opus 4.8は約6,610

  • Computer use tool

    約4,500

    Sonnet 5は約4,590。Fable 5・Mythos 5・Opus 5・Opus 4.8は約4,520

  • 任意の4メンバー

    +約880

    4つすべてを有効にした場合。configsで外せば減る

既定のメンバーを宣言した場合の目安。正確な値はレスポンスのusageに出ます

スクリーンショットとzoomの画像は画像入力として、アクセシビリティツリー・ページテキスト・コンソールやネットワークの記録はテキスト入力として、それぞれ別に課金されます。事前の見積もりにはトークンカウントのエンドポイントが使えます。

ブラウザのセッション・ダウンロード・アップロードしたファイルは自分の環境に残ります。返したスクリーンショットやページテキストはAPIリクエストの内容として、通常の保持ポリシー(ZDR契約があればその取り決め)に従います。Browser use tool自体はZDRの対象です。ただしFable 5.1・Mythos 5.1・Fable 5・Mythos 5はCovered Modelsで、30日保持が必須のためZDRを使えません。実測値はBrowser Use Toolの料金とトークン消費で読めます。

制限事項

  • ストリーミングでは、各メンバーのinputは分割されず、1つのinput_json_deltaにまとまって届きます
  • read_consoleとread_networkは、ブラウザ自動化がタブに接続した時点以降の記録しか返せません。空の結果は、すでに開いていたタブに通信がなかった証拠にはなりません
  • レイテンシ・視覚認識の精度・プロンプトインジェクションのリスクは、Computer use toolの制限事項と共通で、スクリーンショット履歴の管理などの実装指針も流用できます

まとめ

デスクトップに出る場面があるなら、2つのツールセットを併記するか、Computer use toolだけで組むかを、使うプラットフォームと合わせて先に決めておくと、後からの組み直しを避けられます。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool
  2. platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool
  3. platform.claude.com/docs/en/agents-and-tools/tool-use/tool-reference
  4. support.claude.com/en/articles/14128542-let-claude-use-your-computer-in-cowork
  5. platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-sdk
この記事を共有:XはてブLinkedIn