Briefing
ハーネスは、AIに任せる前の約束ごとを決める
この記事では、ブラウザエージェントを本番で使う前に決めるべき確認点、記録、再利用の仕組みを整理します。
「ハーネス」という言葉は便利です。便利すぎて、少しふわっとしています。
モデルの外側にある実行環境、ツール、ログ、権限、評価まで含めて「ハーネス」と呼ぶことがあります。ここまで広げると、言葉の輪郭はぼやけます。
ブラウザエージェントでは、もう少し狭く考えられます。問題は「モデルとブラウザの間で、何を見せ、何を触らせ、何を証跡として残すか」に集まるからです。
ブラウザには、信用できないWebページ、ログイン後に見える情報や権限、クリックや送信のような副作用のある操作、あとから検証するためのスクリーンショットやtraceが同時に存在します。だからハーネスは、抽象的な実行環境ではなく、入力、認証、実行、記録、再利用の境界を決める層として具体化します。
AIにブラウザを触らせるときに必要なのは、クリックや入力の能力だけではありません。信用できない入力をどう扱うか。認証情報をどこで止めるか。実行結果をどう証拠にするか。同じ探索を次回どう省くか。ここまで含めた外側の仕組みが要ります。
言い換えると、ブラウザエージェント・ハーネスは「実行」の話ではありません。誰が、どの条件で、どの操作を許可し、どの証跡を見て結果を受け入れるのか。人間が暗黙に処理していた判断を、実行前の契約と実行後の証跡に分解する仕組みです。
この記事では、内製Browser QAの詳細には深く入りません。主に参照するのは、Browserbaseのbrowser agent harnessの記事です。
Section 00
2026年の前提をそろえる
「AIがブラウザを操作できる」は、もう主張ではなく前提になっている。見るべき差分は、実行ループ、安全確認、記憶、証跡、介入設計にある。
2026年時点で、Computer Useやブラウザエージェントの主要な発信は、かなり収束しています。OpenAIは、モデルがスクリーンショットを見てアクションを返し、ハーネスが実行して次のスクリーンショットを返すループとしてComputer Useを説明しています。
GoogleのGemini Computer Useは、モデルが提案した操作に対してsafety_decisionを返し、人間確認が必要な場合は実行前に止める形をAPIの一部にしています。
AnthropicのComputer Useも、サンドボックス、allowlist、人間確認、画面内のprompt injectionを明示的なリスクとして扱っています。Microsoft Research系のMagentic-UIやWeb agentの介入研究も、人間の関与を「最後に確認する人」ではなく、co-planning、action guard、long-term memory、介入タイミングの設計として扱っています。
つまり、「責任を外側で持つ」はもう当たり前です。ここから先で考えるべきなのは、責任をどう分解するかです。許可された観測、許可された操作、止める条件、記録すべき証跡、次回に残す知識を、実行ループの中で更新できる形にする必要があります。
2026 current signals
いまのComputer Useは、すでにハーネス前提になっている
最新の発信を見ると、「モデルがブラウザを操作できる」はもう差分ではない。差分は、誰が実行し、どこで止め、何を記録し、次回に何を残すかへ移っています。
01
OpenAIComputer Useは、モデル単体ではなく外側の実行ループとして説明されている
モデルはスクリーンショットを見てアクションを返し、ハーネスがそれを実行し、次のスクリーンショットを返す。つまり、実行者はモデルではなく外側のループです。
02
GoogleGemini Computer Useは、実行前のsafety decisionをAPIの一部にしている
提案されたUI操作に対してrequire_confirmationが返る場合があり、クライアント側はユーザー確認なしに実行できない。安全確認は運用メモではなく、実行プロトコルの一部になっています。
03
AnthropicClaude Computer Useは、画面上の命令とprompt injectionを明示的なリスクとして扱う
コンピュータ操作はbetaで、インターネット接続時のリスクが高い。サンドボックス、allowlist、人間確認、prompt injection対策が前提として並んでいます。
04
ResearchHuman-in-the-loopは、ただ人間を待たせる話ではなくなっている
Magentic-UIやWeb agentの介入研究は、co-planning、action guard、long-term memory、介入タイミングの予測を扱う。人間確認はボタン1つではなく、協働設計の問題です。
Browserbaseの記事が面白いのは、raw CDPか抽象化か、という道具選びの話に留めていないところです。Security、cache、identity、credential broker、skill、filesystemという分解は、「ブラウザを動かす」ではなく「ブラウザ経由の委任を運用する」ための分解です。
ただし、この分解を読むにはBrowserbase自体の位置づけを先に見たほうがよい。Browserbaseは単に「クラウドでChromeを起動するサービス」ではなく、ブラウザエージェントがWebに出るときの実行面を束ねようとしているからです。
Section 01
Browserbaseを何の会社として読むか
Browserbaseは、遠隔ブラウザだけではなく、検索、取得、セッション、認証状態、身元、ログ、実行基盤までを束ねる。だからハーネスの議論が具体になる。
Browserbaseの話を薄く扱うと、この記事は「Browserbaseの記事を読んで、自分のBrowser QAに当てはめました」で終わってしまいます。それでは少し弱い。
公式ドキュメントでは、Browserbaseは「Webを人間のように閲覧し操作するエージェントを作り、デプロイするためのプラットフォーム」と説明されています。中身は、クラウドブラウザだけではありません。
Browser API、Search API、Fetch API、Functions、Model Gateway、Agent Identity、Stagehand、observabilityが同じ面に置かれています。つまり、Webを読む、開く、ログイン状態を持つ、操作する、記録する、モデルへ渡す、再実行する、という工程を1つの実行面として扱おうとしている。
ここで重要なのは、Browserbaseが「ブラウザをAPI化する会社」だと言い切るだけでは足りないことです。API化だけならCDPやPlaywrightですでにあります。Browserbaseが足しているのは、AIにブラウザを任せたときに必ず出てくる、状態、身元、証跡、記憶、デプロイの面です。
Browserbase platform reading
Browserbaseを、6つの委任インフラとして読む
公式ドキュメント上のプロダクト要素をそのまま列挙すると、遠隔ブラウザ、検索、認証、ログの集合に見えます。ハーネスの観点では、それぞれが「AIに任せる前後の境界」を受け持っています。
Browserbase要素
何を提供しているか
この記事での読み方
01
Browsers何を提供しているか
クラウド上の隔離されたブラウザセッション
Browserbaseの基本単位は、クラウドで動く1つのブラウザセッションです。PlaywrightやPuppeteerから接続でき、region、viewport、recording、logging、metadataなどを実行単位に紐づけられます。
この記事での読み方
実行環境を、あとから参照できるsession idと設定に閉じる。
何を提供しているか
読むだけのWeb取得と、操作が必要なブラウザ実行を分ける
Browserbaseは、SearchとFetchをブラウザセッションの補助として置いています。すべてをブラウザで開かず、探索や事前調査は軽いAPIで済ませ、ログインや動的UIが必要な時だけブラウザに渡す設計です。
この記事での読み方
観測コストを下げ、ブラウザ操作を必要な局面へ絞る。
03
Contexts何を提供しているか
ログイン状態をセッション間で再利用する
Contextsはcookies、localStorage、IndexedDB、Service Workerなどを保存し、複数のブラウザセッションで再利用する仕組みです。毎回ログインし直すのではなく、認証済み状態を実行単位から分離できます。
この記事での読み方
認証済み状態を、モデルの文脈ではなくブラウザ側の状態として扱う。
04
Identity何を提供しているか
正当な自動化としてWebに到達する
Agent Identityは、Verified browser、proxy、CAPTCHA対応、allowed domainsなどを含む層です。単にブロックを回避する話ではなく、どのサイトに、どの権限と身元でアクセスするかを管理する話です。
この記事での読み方
実行できる範囲、信頼の示し方、止める条件を環境側で持つ。
何を提供しているか
人間があとから判断できる証跡を残す
Session Inspector、live view、recording、replay、console、network、CDP eventsは、ブラウザが動いたかではなく、採用できる実行だったかを判断する材料になります。
この記事での読み方
実行結果を、レビュー可能なpacketへ変換する。
何を提供しているか
操作知識を再利用できる単位へ戻す
Stagehandはact、observe、extractなどのAI向けブラウザ操作を提供し、Browse.shやAutobrowseはサイトごとのSkillを蓄積する方向を示しています。1回の成功を、次回の短い手順へ戻すための層です。
この記事での読み方
探索で得た知識を、手順、schema、selector fallbackとして残す。
だからBrowserbaseの記事の「Security、cache、identity、credential broker、skill、filesystem」という6層は、単なる概念整理ではありません。彼らのプラットフォームが実際に持っている論点から出てきた分類です。
セッションを作る。必要ならSearchやFetchで先に読む。Contextでログイン状態を再利用する。Identityで正当な自動化として到達する。Observabilityで実行をあとから見返す。StagehandやBrowse.shで操作知識をSkillへ戻す。この流れは、そのまま「委任を運用する」ための構成になります。
この記事では、この分解をBrowser QAに引き寄せて読みます。ブラウザQAは、単なる画面確認の自動化ではありません。どの範囲ならAIに任せてよいかを、実行結果から更新していく委任契約の台帳になります。
Section 02
CDPだけでは方針は決まらない
ブラウザを動かすAPIはすでにある。ただし、そのAPIは何を信用し、何を隠し、何を記録として残すかまでは決めてくれない。
ブラウザを動かすための道具は、すでにあります。Chrome DevTools ProtocolはChromiumやChromeを検査、操作、デバッグするためのプロトコルです。
PlaywrightやPuppeteerは、ブラウザ操作の高水準APIを提供しています。Stagehandのように、AIによる操作と決定論的なコードを組み合わせる道具もあります。
でも、CDPやPlaywrightが与えるのは「ブラウザを動かす能力」です。何を信用するか。何を隠すか。何を記録するか。失敗をどう再利用するか。そうした運用上の方針は、別に決める必要があります。
Capability vs harness
raw CDPでできることと、本番で必要になること
操作APIは、ブラウザを動かすための道具です。ハーネスは、その操作をどこまで任せてよいかを決めるための外側の仕組みです。
01
画面を操作する
APIがくれるもの
クリック、入力、DOM取得、スクリーンショット
ハーネスが決めること
許可された操作か、どのドメインで実行してよいかを決める。
02
ページを読む
APIがくれるもの
HTML、表示テキスト、ログ、ネットワークを取得する
ハーネスが決めること
外部入力として扱い、ユーザーの指示と混ぜない形に整理する。
03
結果を返す
APIがくれるもの
最終画面や値を読み取る
ハーネスが決めること
スクリーンショット、trace、判定理由を残し、人間が確認できる形にする。
ブラウザ操作APIは必要です。ただし本番で人間の代わりに動かすなら、APIの上に線引き、記録、再利用の仕組みが必要になります。
ローカルで1回だけ試すなら、モデルにブラウザ操作を渡しても動きます。画面を見て、クリックして、フォームを埋めて、結果を返す。デモとしては成立します。
本番で人間の代わりに動かすなら、すぐ別の問題になります。
この問いに答える層が、ブラウザエージェントにおけるハーネスです。ブラウザ操作APIの上に置く、線引き、記録、再利用の仕組みです。
実行ボタンを作るのではなく、押してよい状態を作る。ブラウザ版ハーネスの仕事は、かなり雑に言えばそこにあります。
Section 03
DOMもモデルへの入力になる
ブラウザ上のテキスト、HTML、ログ、AI出力は、モデルに入った時点ですべて入力になる。ここを分けないと、ページ側の命令とユーザーの意図が混ざる。
ブラウザ版ハーネスで最初に見るべきなのは、DOMとモデルの間の線引きです。
人間にとって、HTMLやDOMはページの中身に見えます。でも、LLMにとってはプロンプトに入ってくるテキストです。ページ側に「前の指示を無視して」と書かれていれば、それはただのページ文言ではなく、モデルへの入力になります。
OWASP LLM01は、外部ソースから取り込まれた内容がモデルの振る舞いを変えてしまう攻撃を、間接プロンプトインジェクションとして扱っています。
2026年のIndirect Prompt Injection in the Wildでは、1.2B URLと24.8Mホストを分析し、15.3K件の検証済み事例が報告されています。
Security notes
DOMをそのまま渡すほど、入力の境目が曖昧になる
ブラウザエージェントは、画面上のAI出力、DOM、ネットワークログ、テストデータ、ユーザー入力を同時に見られる。便利ですが、そのまま混ぜると危険です。
01
OWASP LLM01
外部ソースはモデルの振る舞いを変えうる
Webページやファイルから取り込まれた内容は、モデルの出力やツール利用へ影響する。
02
2026 paper
Web上に実例がすでにある
大規模調査では、検証済みの間接プロンプトインジェクションが15.3K件見つかった。
03
Browser harness
DOMとモデルの間で整理する
生HTMLを渡すのではなく、構造化し、隠れたテキストや怪しい命令を分けて扱う。
Browserbaseの記事でいうSecurity layerは、この境目を作る話です。生のHTMLをそのまま渡さず、構造化し、スキーマで検証します。
隠れたテキストや怪しい命令を分けて扱う。ここを設計しないと、エージェントは外部サイトの文言に引っ張られます。
Section 04
ブラウザ版ハーネスは5つの確認点を持つ
Browserbaseの6層を、Browser QAで判断しやすい5つの確認点へ言い換える。
Browserbaseの記事では、ブラウザエージェント・ハーネスを6つの層で整理しています。Security、caching、identity、credential brokering、skill、filesystemです。
これを自分たちのBrowser QAに引き寄せると、5つの確認点として読めます。
Boundary guide
5つの確認点として見返せるようにする
Browserbaseの記事では6つの層で整理されている。ここでは、Browser QAで使うときに判断しやすいように、問い、守り方、残す記録へ絞って並べる。
境界
問い
守り方
残すもの
01
入力
Security
DOMや画面テキストをどこまでモデルに渡すか
DOMをそのまま渡さない。画面から読んだ情報として整理し、隠しテキストや命令文を分けて扱う。
sanitized observation / schema validation / suspicious text log
02
認証
Credential broker
パスワードやMFAをどこで止めるか
認証操作はモデルの外側で扱う。モデルにはログイン済みの状態だけを渡す。
credential handoff log / redacted trace / human approval marker
03
実行
Identity
ブロック、CAPTCHA、セッションをどう扱うか
クラウドブラウザ、固定セッション、許可ドメイン、実行権限を分けて管理する。
browser session id / domain allowlist / run configuration
04
記憶
Cache / Skill
毎回ゼロから探索させないために何を残すか
サイトごとの手順、セレクタ、fallback、前回見た結果をSkillやScenarioとして残す。
site skill / selector fallback / scenario cache / previous observation
05
記録
Filesystem / Runtime
人間があとから何を見れば判断できるか
screenshot、video、trace、console、network、判定理由をレビュー材料としてまとめる。
review packet / screenshot / trace / video / verdict
DOMや画面テキストをどこまでモデルに渡すか
守り方
DOMをそのまま渡さない。画面から読んだ情報として整理し、隠しテキストや命令文を分けて扱う。
残すもの
sanitized observation / schema validation / suspicious text log
パスワードやMFAをどこで止めるか
守り方
認証操作はモデルの外側で扱う。モデルにはログイン済みの状態だけを渡す。
残すもの
credential handoff log / redacted trace / human approval marker
ブロック、CAPTCHA、セッションをどう扱うか
守り方
クラウドブラウザ、固定セッション、許可ドメイン、実行権限を分けて管理する。
残すもの
browser session id / domain allowlist / run configuration
毎回ゼロから探索させないために何を残すか
守り方
サイトごとの手順、セレクタ、fallback、前回見た結果をSkillやScenarioとして残す。
残すもの
site skill / selector fallback / scenario cache / previous observation
人間があとから何を見れば判断できるか
守り方
screenshot、video、trace、console、network、判定理由をレビュー材料としてまとめる。
残すもの
review packet / screenshot / trace / video / verdict
Delegation rule
モデルに渡してよいのは、確認済みの画面情報と、許可された次の操作だけです。未整理の入力、秘密情報、失敗の記録は、モデルの外側で扱う。
たとえばcredential brokerを外すと、事故が起きやすくなります。モデルにパスワードやMFAコードを見せると、その情報はscratchpad、実行ログ、trace、デバッグ出力に残る可能性があります。
ブラウザを操作するエージェントは、人間が到達できる認証済みの画面にも到達できます。だから、認証情報をモデルに渡さない層が必要になります。
OpenAIのComputer Useドキュメントでも、ブラウザ操作は単なる便利機能ではなく、安全上の線引きが必要なものとして説明されています。
隔離されたブラウザやコンテナで実行すること、ドメインやアクションをallowlistで制限することが推奨されています。
ここはもう少し深い話があります。最初のハーネスは、CDPやPlaywrightを補う実行補助に見えます。
でも、実行履歴、動画、trace、レビュー判断、失敗修正が溜まってくると、それは単なるログではなくなります。「どの条件ならAIに任せてよいか」を判断するための記録台帳になります。ブラウザ版ハーネスは、実行補助から、任せる範囲と確認条件を明文化していく場所へ変わっていきます。
Section 05
Browser QAで見ると分かりやすい
ブラウザQAは、画面確認の自動化だけではない。AIに任せてよい範囲と確認条件を確かめ、記録し、次に使える形へ戻す仕組みになっていく。
自分たちのBrowser QAも、最初はPlaywright MCPを操作するSkillから始めました。その後、Claude Agent SDK + TypeScript workflowに載せ替えました。
今はBrowserbaseベースのBrowser Eval Harnessに寄せています。
雑に言うと、同じ問題を3回ぐらい作り直しています。
Browser QA evolution
同じ問題を3回作り直して、今の形に近づいた
01
Playwright MCPを操作するSkill
最初は、AIにブラウザを触らせれば画面確認になると考えていた。ローカルでは動いたが、記録、再実行、レビューへの接続が弱かった。
Lesson
記録がなければ、チームの判断材料にならない。
02
Claude Agent SDK + TypeScript workflow
PR、ログ、レビューには接続できた。一方で、録画、cache、セッション、失敗ケースの再利用はまだ弱かった。
Lesson
ワークフローだけでは、ブラウザ実行の状態を保存しきれない。
03
BrowserbaseベースのBrowser Eval Harness
今は、クラウドブラウザでシナリオを実行し、動画やtraceを残し、失敗を次の検証ケースへ戻す形に寄せている。
Lesson
失敗を次の検証ケースに戻して、運用で使える材料に変える。
ここまで来ると、Browser QAは画面確認の自動化ではありません。
Browser QAは、AIに任せてよい範囲と確認条件を、ブラウザ上で確かめ、記録し、再利用する仕組みである。
この考え方は、以前のハーネスエンジニアリング登壇で話した内容にも近いです。
Section 06
毎回ゼロから探索させない
Skillとcacheは、モデルを賢く見せるためではない。モデルに毎回同じ探索をさせないための運用設計である。
もう1つ、運用で効くのがSkillとcacheです。
BrowserbaseのBrowse.shやAutobrowseの記事では、同じサイトを毎回探索し直す問題が扱われています。
サイトごとの手順、落とし穴、API、セレクタ、fallbackをSkillとして残す発想です。
これはBrowser QAでもそのまま効きます。クラウドでPRごとにBrowser QAを回すと、モデルにスクリーンショットを何十枚も見せることになります。
やり直しもあります。複数ユーザーや複数環境まで見るなら、さらに増えます。
毎回モデルにゼロから考えさせると、コストと時間がすぐ膨らみます。だから、決まった手順で書けるものはPlaywrightなどで書く。サイトごとのSkillやScenarioを残す。前回見た結果や手順を再利用する。
ここでのハーネスは、モデルを賢く見せるための仕掛けではありません。モデルに毎回同じことを考えさせないための仕組みです。
Takeaway
クリックではなく、どこまで任せるか
AIブラウザエージェントに必要なハーネスとは、クリックや入力をするための薄いラッパーではありません。
信用できない入力を扱う。認証情報を守る。探索結果を再利用する。実行の記録を人間が受け取れる形にする。失敗を次の検証へ戻す。
ふわっとした「ハーネス」という言葉も、ブラウザに持ち込むとこのくらい生々しくなります。ブラウザエージェントの難しさは、操作ではなく、委任を契約、証跡、再利用できる知識に分解することにあります。
Appendix
方法と出典
本文で参照した一次情報、関連資料、運用メモの扱いを明示します。
Sources
Browserbase
The web wasn't built for browser agents, here's how we built a harness to make it work.
browserbase.com/blog/what-is-a-browser-agent-harness
Browserbase Docs
What is Browserbase?
docs.browserbase.com/welcome/what-is-browserbase
Browserbase Docs
Browser agents
docs.browserbase.com/use-cases/agents
Browserbase Docs
Create a browser session
docs.browserbase.com/platform/browser/getting-started/create-browser-session
Browserbase Docs
Contexts
docs.browserbase.com/platform/browser/core-features/contexts
Browserbase Docs
Agent Auth & Identity
docs.browserbase.com/platform/identity/overview
Browserbase Docs
Observability
docs.browserbase.com/platform/browser/observability/observability
CDP
Chrome DevTools Protocol
chromedevtools.github.io/devtools-protocol
Stagehand
Introducing Stagehand
docs.stagehand.dev/v3/first-steps/introduction
OWASP
LLM01:2025 Prompt Injection
genai.owasp.org/llmrisk/llm01-prompt-injection
Paper
Indirect Prompt Injection in the Wild
arxiv.org/abs/2604.27202
OpenAI
Computer use: Keep a human in the loop
developers.openai.com/api/docs/guides/tools-computer-use#keep-a-human-in-the-loop
OpenAI
Computer use: Run the built-in Computer use loop
developers.openai.com/api/docs/guides/tools-computer-use#option-1-run-the-built-in-computer-use-loop
Gemini API: Computer Use
ai.google.dev/gemini-api/docs/computer-use
Anthropic
Claude API: Computer use tool
platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool
Research
Magentic-UI: Towards Human-in-the-loop Agentic Systems
arxiv.org/abs/2507.22358
Research
Modeling Distinct Human Interaction in Web Agents
arxiv.org/abs/2602.17588
Browserbase
Browse.sh, a catalog of browser skills for the agentic future
browserbase.com/blog/browse.sh
Browserbase
Autobrowse: The Mythos moment for Browser Agents is here
browserbase.com/blog/autobrowse
Deck
How to approach Harness Engineering
speakerdeck.com/rkaga/how-to-approach-harness-engineering