Browser Identity
ブラウザーのログイン状態をIdentityごとに分離し、タスクとAutorunへ割り当て、取込・消去・削除する方法です。
Browser Identityは、アプリ内ブラウザーのログイン状態とサイトデータを分けるローカルの永続領域です。仕事、顧客、検証条件ごとにIdentityを分けると、同じサイトへ異なるアカウントで安全に接続できます。
エージェントのアカウントプロファイルとは別の概念です。Browser IdentityはWebサイトの状態を分離し、エージェントプロファイルはClaude、Codexなどの実行認証を分離します。
分離されるデータ
Identityごとに次を分離します。
- Cookieとcache
- localStorageとsite permission
- proxy認証
- ブラウザーsessionとnavigation履歴
- passkeyとWebAuthnに関するIdentity側の状態
popupとOAuth windowは親タブのIdentityを引き継ぎます。別のIdentityへ切り替えてもデータはコピーされません。
Default Identity
Identityを明示しないタスクとAutorunはDefault Identityを使います。Defaultは従来のpersist:in-app-browser領域と既存のログイン状態を維持します。
Default Identityは名前と色を確認できますが、削除できません。ログインなしの公開状態を検証する場合は、DefaultのCookieを消すのではなく、専用の空のIdentityを作る方が安全です。
cockpit browser identity create --name logged-out-check
cockpit task browser-identity logged-out-check
cockpit browser open https://example.com --browser-identity logged-out-check --json
Identityを作成・確認する
画面左下のアプリメニューから「Browser Identity」を開くと、Identityの作成、名前と色の変更、データ消去、削除を行えます。CLIでは次を使います。
cockpit browser identity list --in-use --json
cockpit browser identity get work --json
cockpit browser identity usages work --json
cockpit browser identity create --name work --color "#3B82F6" --json
cockpit browser identity update work --name client-a --color "#8B5CF6" --json
listは使用数を返し、すべて、使用中、未使用で絞り込めます。getとusagesはIdentityのmetadata、使用数、参照しているタスク、Autorun、browser sessionを返します。
タスクへ割り当てる
各タスクは一つのBrowser Identityを持ちます。新規タスクでは作成時に選択でき、既存タスクではブラウザーのサイドパネルまたはCLIから変更できます。
cockpit task browser-identity <taskId> work
cockpit task browser-identity <taskId>
タスク内でtask IDを省略すると、現在のタスクを変更します。切り替え後に開くsessionは新しいIdentityの領域を使います。既存sessionは元のIdentityに残り、元へ戻すと再び利用できます。
cockpit browser open ... --browser-identity workの指定は、現在の割り当てがworkであることを検証するだけで、割り当て自体を変更しません。別Identityのsessionまたはtab IDを指定すると拒否され、割り当て変更コマンドが案内されます。
AutorunとFleetへ割り当てる
新規タスクを作るAutorunはBrowser Identityの割り当てを保存し、発火時に作成する各タスクへ引き継ぎます。Identityを指定しないAutorunはDefaultを使います。既存タスクへ送るAutorunは、そのタスクの割り当てを変更しません。
Fleetでは各task nodeへBrowser Identityを割り当てられます。異なるログイン状態が必要なnodeは、同じIdentityを共有させず、用途別のIdentityを明示します。
macOSでChromeのsessionを取り込む
macOSでは、Chromeでログインを完了した後、選択中タブのregistrable domainに属するCookieと、その正確なoriginのlocalStorageを同じBrowser Identityへ取り込めます。
cockpit browser import-session --browser-identity work --profile "Profile 2" --json
--browser-identityはAGI Cockpit側の取込先、--profileはChrome側のprofileです。初回はmacOS Keychainが「Chrome Safe Storage」への許可を求める場合があります。
sessionStorage、IndexedDB、extension状態、device-bound認証、passkey自体は取り込みません。siteがログイン状態にならない場合は、そのIdentityのアプリ内ブラウザーで一度ログインしてください。import-cookiesは互換性用でCookieだけを取り込むため、通常はimport-sessionを使います。この取込はmacOSだけに対応します。
データを消去・Identityを削除する
消去と削除は取り消せず、どちらも--confirmが必要です。
cockpit browser identity clear client-a --cookies --confirm --json
cockpit browser identity clear client-a --all --confirm --json
cockpit browser identity remove client-a --replace-with default --confirm --json
clearは対象Identityのlive sessionを閉じてから、all、cookies、cacheのいずれかを消去します。removeはすべての永続データを消去してIdentity自体を削除します。
実行中タスクまたはAutorunが参照するIdentityは、--replace-withで移行先を指定しない限り削除できません。移行後の削除に失敗した場合は割り当てを元へ戻します。完了済みタスクだけが参照しているIdentityを移行先なしで削除すると、それらの参照はDefaultへ戻ります。
削除前にusagesで影響するタスク、Autorun、sessionを確認してください。