0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code、外部サイトを操作する内蔵ブラウザの安全設計を読む

0
Posted at

コーディングエージェントにブラウザを持たせる、という発想自体は新しくない。新しいのは「どこまで信用するか」の線引きだ。7月6〜10日のWeek 28リリース(v2.1.202〜v2.1.206)で、Claude Code のデスクトップアプリに外部サイトを開けるタブ型ブラウザが載った。ドキュメントもIssueトラッカーも、Claudeが自分で開いて読み、クリックし、フォームに入力する。ここで真っ先に気になるのは機能ではなく、任意のWebページを操作するエージェントがプロンプトインジェクションの格好の的になる、という点のはずだ。Anthropicがその危険をどう畳んだのかを、公式ドキュメントから読み解く。

もともとブラウザ枠はあった、外に出られるようになった

前提を1つ。Claude Code のデスクトップには以前から「Browser pane(ブラウザペイン)」があった。これはローカルの開発サーバをClaudeが自分で立ち上げ、スクリーンショットを撮り、DOMを覗き、要素をクリックし、フォームを埋めて、自分の変更を検証するための窓だ。フロントだけでなくバックエンドのAPIエンドポイント叩きやログ確認にも使う。つまり「自分が今書いているアプリ」を触る道具だった。

Week 28で変わったのは、このペインがタブ型ブラウザになり、localhost の外、つまり外部の任意サイトを開けるようになったことだ。開くショートカットは決まっている。

macOS:   Cmd + Shift + B   (Browserペインの開閉)
Windows: Ctrl + Shift + B
macOS:   Cmd + Shift + S   (ページ内の要素を選択)

Viewsメニューからも開ける。チャット内の外部リンクをクリックすると「Open in app(ペインで開く)」か「Default browser(自分の既定ブラウザ)」を選ぶチューザが出る。Google OAuthのようなポップアップ型サインインもペイン内で通る。地味だが、ここがログイン可能である事実が後述の安全設計と直結する。

線引きは「読む」と「書く」の間に引かれている

外部ページに対して、Claudeは開発サーバ検証と同じツール(クリック・入力・スクロール等)を使う。ただし公式ドキュメントは、外部ページには2つの追加チェックがかかると明記している。

Safety classifiers review Claude's write actions on external pages, such as clicking and typing, in every permission mode.

ポイントは「write actions(書き込み系の操作)」に限って安全分類器(classifier、操作の危険度を判定する軽量モデル)が走ること。しかもどのパーミッションモードでも動く。分類器がフラグを立てれば、モードに関係なく人間への確認プロンプトが出る。これはAuto modeが使っているのと同じ分類器だ。裏返せば、単にページを読むだけなら止められないが、フォーム送信やボタン押下のような副作用のある行為は常に監視下に置かれる、という設計になっている。

もう1つがドメイン許可リスト(allowlist)チェックだ。AutoとBypass permissions以外のモードでは、Claudeが新しいサイトへ遷移する前に許可リストを照合する。組織管理者はbrowserExternalPageToolsというマネージド設定を"disabled"にすれば、外部ページ上でClaudeのツールを完全に無効化できる。この場合ユーザ自身は外部サイトに移動できるが、Claudeは読むことも操作することもできない。

// マネージド設定(組織で外部ページ操作を止める)
{ "browserExternalPageTools": "disabled" }

--dangerously-skip-permissions 相当のBypass permissionsモードにしても、外部サイト上の操作については分類器が強制的にプロンプトを出す、という但し書きも入っている。エージェントの権限を全開にしても、外の世界に手を出す瞬間だけは別扱いにする。この非対称性が今回のいちばんの肝だと私は見ている。

「自分になりすます」のは別の道具

もう1つ実務上ハマりやすいのが、このBrowserペインと「Claude in Chrome拡張」の使い分けだ。ドキュメントは明確に区別している。

The Browser pane uses a clean browser profile, separate from your personal browser, with none of your saved logins or history.

Browserペインはまっさらなプロファイルで動く。あなたの保存済みログインも履歴も持ち込まない。だからアプリのビルドと検証、あるいは身元が要らないサイト閲覧に向く。逆に「あなたとしてログイン済みセッションを操作してほしい」ときは、ブラウザのログイン状態を共有するClaude in Chrome拡張(Week 27で全直販プランにGA)を使え、という住み分けだ。しかもBrowserペインで承認済みのサイトでも、Claudeは購入・アカウント作成・CAPTCHA突破は人間の入力なしにはやらない。

紛らわしいので、Claudeがブラウザに触る4つの経路を整理しておく。

経路 触る対象 ログイン状態 主な用途
Browserペイン(開発プレビュー) ローカルの開発サーバ 開発用に永続化を選択可 自分の変更の自動検証
Browserペイン(外部サイト) 任意のWebサイト クリーンプロファイル(履歴なし) ドキュメント閲覧・調査
Claude in Chrome拡張 実ブラウザ あなたのログインを共有 自分として作業させる
Computer use デスクトップ画面全体 ブラウザは閲覧のみに制限 GUIでしか確認できない作業

セッションを永続化するか(Cookieやローカルストレージを再起動後も保持するか)は自分で選べる。開発サーバのプレビューではドロップダウンの「Persist sessions」で有効化でき、保存済みデータの消去やブラウザ自体の無効化はSettings → Claude Codeのトグルで行う。組織単位では、Claude in Chrome拡張向けに設定済みのサイト許可・拒否リストをBrowserペインがそのまま尊重する。

エンジニアとして何が変わるか

正直に言えば、機能そのものはPlaywright MCPやChrome DevTools MCPで各自やってきたことと重なる。差分は、ブラウジングの安全モデルがエージェント側に統合され、「読み取りは自由・副作用のある操作は分類器と許可リストで常時ガード」という方針が既定で効くところにある。自前でヘッドレスブラウザをMCP経由で生やすと、この監視レイヤは自分で用意しなければならない。エージェントに外部Webを触らせる構成を検討しているなら、今回の線引き(書き込み操作だけを全モードで監視する、なりすましは別プロファイルに隔離する)は、自作の権限設計を見直すたたき台としてそのまま使える。

細かい注意も1つ。ペイン周りのUIは Claude Desktop v1.2581.0 以降が必要とされており、Claude Code本体のv2.1.x系とはバージョン番号の体系が別だ。デスクトップ側が古いと機能が出ないことがあるので、動かないときはアプリ側の更新を先に疑うといい。

一次情報は公式ドキュメントに揃っている。外部サイト操作の詳細は下記が出発点になる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?