セキュリティとデータ
ローカル実行、外部サービスとAsk転送への送信、承認、Cockpit Hooks、認証情報、添付、Browser Identity、Remote Accessの保存境界を説明します。
AGI Cockpitは、タスクとエージェントプロセスを利用者のコンピューターで実行します。ただし、選択したAIプロバイダー、Webサイト、AGIラボの認証・会員確認、匿名利用状況など、機能に必要な通信は外部サービスへ送られます。
ローカルに残るもの
タスク状態、会話履歴、Autorun、Fleet、Cockpit Hooksの定義と実行履歴、テンプレート、CLIランタイム情報、ログなどCockpitの主要データは~/.agi-tools/data/cockpit配下に保存されます。添付やElectronのブラウザープロファイルなど一部データはOSのアプリデータ領域に保存されます。作業ファイルは選択したプロジェクト、一時フォルダ、Git Worktreeにあります。AntigravityのネイティブUIへ送る作業場所外の画像だけは、読み取り用の一時コピーも作業場所内へ置かれます。
エージェントプロセスはその作業場所を読み書きします。Cockpit内に表示されていないファイルでも、選択した承認モードとエージェントの権限でアクセスできる場合があります。タスクへ必要なディレクトリだけを指定してください。
Cockpit AgentのOpenCode GoまたはOpenCode Zen接続のためにCockpitが起動したローカルOpenCode serverはCockpitが所有し、Cockpit終了時に停止します。Cockpitの外で利用者が起動したserverは停止しません。
v4.90.0から、Cockpit Agentの会話データベースはCockpitのデータ領域内のopencode/v1/opencode.dbに保存されます。初回起動時に従来のOpenCodeデータベースがあれば、その内容をコピーして既存の会話を引き継ぎます。コピー元にはCockpit外で使ったOpenCodeの会話が含まれる場合があります。元のデータベースは変更せず、移行後の会話は相互に同期しません。互換性を確認できない場合はエラーを表示し、Cockpit Agentの起動を停止します。
PWAのタスク検索語と最近の検索履歴は、接続先ごとに利用中のブラウザーのlocalStorageへ保存します。別端末へ同期しません。検索欄の「検索をクリア」と「履歴を消去」は別の操作です。両方を消す場合はそれぞれ実行してください。
PWAの入力途中のメッセージ本文はタスクごとに同じブラウザータブのsessionStorageへ保存します。タスク切り替えと再読み込みでは復元されますが、別端末へ同期せず、タブセッションを閉じた後まで残す永続保存ではありません。添付はこの下書き保存に含みません。
スマートルーティングのオン・オフと「ルーティング方針」は、Cockpitのローカルデータ領域へAGIアカウントごとに保存します。新規タスク画面とローカルCLIは同じ値を使い、別端末へは同期しません。
プロジェクトのフォルダとエージェントのアクセス
Muse CodeのネイティブUIは各ターンで追加workspace rootを受け取るため、フォルダ変更は次のメッセージから反映します。ターミナルUIには追加フォルダを渡しません。
プロジェクトには複数のフォルダを登録できます。エージェントのセッションを開始・再開すると、Cockpitは各エージェントが対応する方法でプロジェクト内の追加フォルダを渡します。フォルダの追加により、エージェントが読み書きできるファイルが増える場合があるため、タスクの再接続前にフォルダ一覧を確認してください。承認モードとエージェント固有の制限は引き続き適用されます。Git Worktreeが置き換えるのは元のフォルダだけで、他のプロジェクトフォルダは元の場所で使用します。エージェントごとの動作はproject CLIリファレンスを参照してください。
プロジェクトを削除しても、タスクとフォルダは残ります。タスク用フォルダをプロジェクトに登録すると、そのタスクを完了・削除してもフォルダは保持されます。
既存セッションの取り込み
オンボーディングの最後と空のタスクボードにある「続きから始める」では、直近30日の Claude Code・Codex のセッションを最大200件、作業場所ごとに表示します。セッション単位または作業場所単位で選んでまとめて取り込むか、スキップできます。作業場所の候補は既存のプロジェクト作成画面から登録できます。取り込んだタスクはターミナルUIで再開します。
走査と取り込みは端末内で完結し、会話の内容や作業場所のパスを外部に送信しません。元のセッションファイルは読むだけで、変更・削除せず、エージェントも起動しません。オンボーディングの匿名イベントに含まれるのは、表示段階・取り込み件数・スキップ操作だけです。
外部へ送られるもの
指示、会話、添付、ファイル内容、ツール結果がAIプロバイダーへ送られる範囲は、選択したエージェント、UIモード、モデル、ツールに従います。Cockpit Agentでは選択したOpenRouter、OpenCode Go、OpenCode Zen、LM Studioなどの接続先が処理します。OpenCode GoとOpenCode Zenは別のAPI keyを使います。LM Studioをローカルで動かすか別ホストで動かすかは設定したURLで決まります。
タスクを別のエージェントへ切り替えると、過去の会話、ツールの入力・出力、ファイル変更、画像、圧縮時の要約が切り替え先のプロバイダーへ送られる場合があります。切り替えを適用するメッセージの送信前に、引き継ぎプレビューを確認してください。思考内容と暗号化された推論は対象外です。
新規タスク画面またはローカルCLIからスマートルーティングを実行すると、タスクの指示、ルーティング方針、利用可能なエージェント・モデル・推論レベル、候補ワークスペースの表示名・ローカルパス・種類を、認証済みのAGI Backendへ送って組み合わせを選びます。ファイル内容と添付内容はルーティング要求へ含めません。指示が空で添付だけがある場合は、添付のファイル名を指示の代わりに送ります。ローカルパスを外部へ送信したくない場合は、スマートルーティングをオフにして作業場所と実行条件を手動で選択してください。
アプリ内ブラウザーで開いたサイトには、入力、アップロード、Cookie、WebAuthnなど通常のブラウザー通信が発生します。Remote Accessでは、接続中のPWAまたは対応するリモートCLIコマンドに必要なタスク、Ask、Autorun、Fleet、Hook、アカウントの情報が転送されます。リモートのHooksコマンドは、接続先コンピューターへshell codeを登録・実行できます。
PWAのCockpit Browser表示では、認証済みRemote Access接続へホストtabのviewport画像と限定したmetadataを送ります。task、割り当て済みBrowser Identity、session、tabの所属を要求ごとに検証し、一般browser RPC、storage、完全なURLは公開しません。画像は最大1280px・256KiBのJPEGへ制限し、ホストのディスクにもPWAのbrowser storageにも保存しません。PWAからのスクロールはホストページの位置を変更しますが、link、入力、送信は操作しません。
PWAのApp Surface表示は、認証済みRemote Access接続へ、そのタスクに接続済みの対象情報とホストが保持する最新frameだけを送ります。要求時にタスクとsessionの対応を検証し、対象へのcaptureや入力、Desktop panelの変更を実行しません。frameは最大1280px・256KiBのJPEGへ再変換され、PWAの表示中memoryに一件だけ保持し、host diskやPWA storageへ保存しません。
PWAのスキル表示は、タスクの作業場所からホストが検出したproject skillとglobal skillの一覧、定義metadata、SKILL.md本文を認証済み接続へ送ります。requestから任意のdirectoryを指定できず、タスク自体から探索範囲を導出し、そのタスクのskill discoveryで許可された定義だけを読みます。本文は先頭256 KiBまでで、閲覧専用です。秘密情報を含むスキル本文をPWAから読めることを前提に、接続済み端末を保護してください。
「設定」→「Ask通知」でDiscordまたはSlackへの転送を有効にすると、Askの概要、質問、選択肢、タスク名、Cockpitへのlinkと、許可した場合はAskの画像・動画を、選択したチャンネルへ送ります。チャンネルを閲覧できるメンバーは投稿内容を読めますが、Cockpitが回答を受け付けるのは設定した一人のallowedUserIdだけです。転送は既定で無効で、CockpitからDiscord GatewayまたはSlack Socket Modeへ外向きに接続します。
Muse CodeのContributorモデル(ID末尾が-contributor)では、利用条件に基づき、会話やコードが学習に使われる場合があります。モデル一覧では既定で非表示で、設定の「Contributor モデルを表示」をオンにすると選べます。表示設定だけでは選択中のモデルは変わりません。ネイティブUIでは、選択したモデルに応じてセッションのContributorモードを明示的にオン・オフし、モデル未指定ならオフで起動します。Contributorモデルの開始・切り替え位置に一行の通知を表示しますが、会話とともにスクロールし、同じモデルの利用中は再開時も繰り返しません。
ゲスト利用時の匿名データ
パッケージ版のゲスト利用では、ランダムなinstallation ID、アプリバージョン、1日単位のセッション確認、オンボーディングの到達・離脱・ゲスト選択・サインインのイベントと対象ステップをAGI Backendへ送ります。タスクの指示、会話、ファイル内容、プロジェクト名はこの匿名イベントに含めません。
送信に失敗したオンボーディング離脱イベントは、再送のためOSのアプリデータ領域へ一時保存されます。匿名イベントはパッケージ版のゲスト利用だけで送られます。サインイン済み利用では、認証セッション確認時にアプリバージョンを送ります。
承認とAskを区別する
supervised、accept-edits、auto、full-accessは、エージェントが利用できるツール操作の境界です。一回許可、常に許可、拒否が表示される場合は、操作内容、対象パス、コマンド、外部送信先を確認します。「常に許可」は同種操作へ継続して影響するため、範囲を理解できない場合は一回許可を選びます。
auto(自動審査)はClaude、Codex、GrokのネイティブUIで利用でき、エージェント自身がコマンドや編集を審査します。通常の操作を許可し、危険な操作を止めるか、人の承認へ回します。質問やAskには回答しません。ほかのエージェントはautoを受け付けません。Claudeでは変更が即時に、Codexでは次のターンから適用されます。Grokは待機中のセッションを再起動して会話を保持しますが、処理中や承認・質問待ちの変更は拒否します。ClaudeやCodexでモデル・アカウント・組織の制約により自動審査が使えない場合は、実際のモードを表示してチャットで通知します。Grokの実行モードは読み戻せないため、この確認の対象外です。フルアクセスへ自動的に切り替わることはありません。
Muse CodeのネイティブUIはaccept-edits(既定)とfull-accessだけに対応します。workspace内の編集では承認を求めないため、supervisedとautoは使えません。accept-editsではMuse Codeのルールが許可していないコマンドや操作を人が承認します。拒否するとその呼び出しを拒否してターンを続けます。full-accessはシェルのサンドボックスも無効にし、残りの確認を承認します。一回の承認は表示されたシェルコマンドの全段階に適用します。「常に許可」はMuse Codeが提供する最も狭い永続ルールを使い、永続ルールがなければセッション内のルールを使います。
Askは人の方針判断を返す仕組みであり、ツール承認ではありません。Askで「公開する」を選んでも、OS、外部サービス、別のツールが要求する権限を自動的に付与しません。
CLIからも保留中のツール承認を操作できます。task approveやtask denyの前に、cockpit task get <id>のturnRequestsで対象を確認してください。approveは標準で一回限りの許可、--scope alwaysは判断を記憶する許可です。別のエージェントタスクから行った判断は、人ではなくそのエージェントに帰属します。task answerは実行環境の質問への回答、cockpit ask answerはAskへの回答です。
task create --approval-mode <mode>とtask approval-mode <id> <mode>は、そのタスクだけの承認モードを設定します。後者はモードを省略すると現在値の読み取りだけを行います。値はsupervised、accept-edits、auto、full-accessです。ターミナルUIのタスクはこれらの操作に対応しません。CLIへのアクセスはタスクの権限を変更できるものとして管理してください。確認フラグがあっても、人が許可した証拠にはなりません。対応エージェントとコマンドはtask CLIリファレンスを参照してください。
cockpit task clear <id> --confirmは会話を破棄し、開いているすべてのデスクトップ・モバイル画面で最初の指示を非表示にします。ほかの画面で入力中の下書きは保持します。実行中、承認待ち、質問への回答待ちのターンは、会話のリセットも圧縮も拒否します。task cancelはタスクを残して現在のターンを中断します。リセット前に対象タスクを確認し、必要な履歴を保存してください。
ビジュアルタスクのMCPツール確認は一回限りの承認です。CLIで--scope alwaysを指定しても一回限りになります。MCPフォームは実行環境の質問としてtask answerで回答するか、デスクトップ・PWAの質問カードで辞退します。task denyの対象は承認だけです。
Cockpit Hooksを安全に実行する
Cockpit Hooksは、登録したシェルアクションを利用者のローカル権限で自動実行します。エージェントの承認モードとは別の仕組みであり、Hookのアクションをsandboxへ制限しません。内容を理解し管理しているスクリプトだけを登録し、cockpit hooks testで明示的に試してから有効にしてください。cockpit hooksは--hostによるリモートでの登録・実行に対応します。リモートのHooksはリモートのタスクと同じ方法で認証します。同じtailnetで、Tailscaleの所有者が同じコンピューターにはtokenは不要で、それ以外の接続にはペアリング済みのBearer tokenが必要です。どちらでも接続先の利用者の権限で任意のシェルコードを登録・実行できるため、Tailscaleの端末とtokenを接続先インスタンスの操作権限として厳重に管理してください。スクリプトのパスは接続先のパスです。
イベントの完全なJSONは標準入力へ渡されます。タスク名、作業場所、Askの概要、選択テキストなど一部の値は環境変数にも入ります。Hookが外部コマンドやネットワークサービスを呼ぶ場合、それらの値を外部へ送信できます。必要なイベントとフィルターだけに絞り、token、個人情報、ローカルパスを標準出力と標準エラーへ書かないでください。末尾4 KBは実行履歴へ保存され、設定画面とCLIから確認できます。
設定画面ではHookを無効化または削除できますが、削除しても既存の実行履歴は残ります。履歴は最大2,000行または2 MBでローテーションし、直近1,000行を保持します。macOSでグローバルホットキーから選択テキストを取得する場合はアクセシビリティ権限が必要です。権限がなくてもHookは実行されますが、選択値は空になります。実行数制限、タイムアウト、depth制限、circuit breakerは暴走を抑えるための保護であり、登録したコマンドの安全性を保証するものではありません。
認証情報を保存する
AGI Cockpit自身のtokenとAPIキーは、OSのKeychainまたはkeyringなど暗号化ストレージへ保存します。DiscordのBot tokenとSlackのBot token・App-level tokenもこの境界に含まれ、通常の設定値やstatus出力へ値を返しません。安全なストレージを利用できない場合、平文へ切り替えず保存を拒否します。削除に失敗した認証情報は利用を停止し、次回起動時に削除を再試行します。
Muse CodeのログインはPC共通の一か所(macOSではKeychain)に保存され、Cockpitのプロファイルでは分離しません。「Muse Code ログイン」方式では、ネイティブUI・ターミナルUIの起動前に継承したMETA_API_KEYを取り除きます。ただしターミナルUIはログインシェル内で動くため、起動ファイルが再びキーをexportする場合があります。「Meta API キー」方式ではagents.credential.metaに暗号化保存したキーを渡します。これはAGI Laboの認証情報とは別です。CLIのagents.museAuthMode(muse-loginまたはapi-key)で方式を選びます。キーの読み取り結果は設定の有無だけです。
名前付きエージェントプロファイルは認証を分離します。Antigravityは会話、ログ、キャッシュ、利用履歴をプロファイル専用homeへ保存します。macOSでは各プロファイルのOAuth tokenを専用Keychainへ保存し、そのKeychainが検索順の先頭であることをタスク開始前に確認します。ホストのlogin KeychainはGitHub CLIなどのため後段に残りますが、Antigravityの項目はprofile Keychainのplaceholderまたはtokenが先に解決します。WindowsとLinuxではOS keyring自体が共有されるため、host loginが全profileで使われます。profileごとのtoken fileへ分離したい場合は、先にdefaultアカウントから共有loginをlogoutします。
Antigravityのaccounts logoutは、--confirmなしで消去対象と共有範囲をpreviewします。名前付きprofileから実行してもhost loginは消さず、共有認証を使っている場合はdefaultアカウント側のlogoutを案内します。defaultのlogoutは、そのhost認証に依存するほかのprofile、通常のterminalで起動したAgy、同じhomeのGemini CLI認証にも影響し得ます。Cockpitが自動でlogoutすることはありません。Browser Identityはエージェントのアカウントプロファイルとは別です。
実行中のClaude、Codex、Grok Build、Antigravity、Cursor、Qoderタスクでアカウントを切り替えると、保存済み会話が選択先のアカウントプロファイルへコピーされます。切り替え先の異なる履歴を置き換える場合は先にアーカイブします。ポリシー上、会話内容をプロファイル間で移してはならない場合は、アカウント切り替えではなく別タスクを使ってください。
CLIではcockpit settings set agents.credential.<name> --stdinまたは--key-fileでOpenRouter、OpenCode Go、OpenCode Zen、Anthropic、MetaのAPIキーを保存できます。キーをコマンド引数やタスクのメッセージへ直接書かないでください。読み取り結果は設定の有無だけです。settings reset agents.credential.<name>は設定画面と共通の暗号化ストレージから対象キーを削除します。これらはローカル操作です。CLIへのアクセスはプロバイダーの認証情報を置換・削除できる権限として管理してください。CLIのリクエスト本文は一時ファイルを作らずに渡します。Cockpitのlocal tokenや認証headerなど、CLI内部の認証情報は子processのコマンドライン引数へ含めず、標準入力または短命な一時ファイルで渡します。後者には値ではなく一時ファイルのpathだけを渡し、受け渡し後に削除します。
パスワードを一度だけ入力する
エージェントがcockpit secret requestで依頼すると、Desktopの専用ウィンドウとAskタブ、またはHTTPS接続のPWAの「受信箱」から、指定されたブラウザーのパスワード欄へ一度だけ入力できます。専用ウィンドウはAskウィンドウの設定に従いますが、Askの回答とは別の機能です。入力前にPC、タスク、目的、Browser Identity、実際のURL、入力先と期限を確認し、この入力欄に一度だけ入力を選びます。ログインボタンのクリックやフォーム送信は自動では行いません。
対象はHTTPSまたはループバックHTTPのメインフレーム内にある、一意で表示中かつ入力可能なパスワード欄です。依頼後にページや入力欄が変わると失敗し、別の欄へ切り替えません。有効期限は最長10分です。PWAからの入力と取消には認証済みのHTTPS/WSS接続が必要で、暗号化されていない接続へは切り替えません。CLIで値を渡したり取り出したりする機能はありません。
値は配送中のメモリーだけで扱い、Cockpitの会話、Ask回答、CLI結果、診断ログ、保存済みタスク、PWAのストレージやAsk転送へ保存しません。再起動後の復元や再送も行いません。配送結果が不明な場合は自動再試行せず、状態を確認してください。取消は入力開始前だけ有効です。入力が完了、失敗、取消、または期限切れになると、入力画面はすべての表示面からすぐに消え、結果は画面に残りません。依頼元はcockpit secret statusまたはタスクへ届く値を含まない通知で結果を確認できます。CLI応答は接続先のinstanceを示し、失敗時は固定のcodeとerrorを返しますが、入力値やページ本文は含めません。
入力先のサイトは値を保持でき、入力後はDOMやスクリプトを読むツールがその値を取得できる場合があります。「AIから絶対に読めない」機能ではありません。配送用のコピーを破棄しても、サイトの入力欄は消去されません。信頼できるPC、PWA端末、サイトで利用してください。詳しくは安全な入力のCLIリファレンスを参照してください。
Browser Identityを分離する
アプリ内ブラウザーは、通知、位置情報、クリップボードの読み取り・書き込みなどのサイト権限を、Cockpitの確認画面を出さずに既定で許可します。OSやWeb API側の制約は引き続き適用されます。カメラ・マイクを含むメディア取得、画面収録、全画面化、自動全画面化、外部アプリを開く権限、キーボードロック、旧式の同期クリップボード読み取りは拒否します。信頼できるサイトだけを開いてください。この方針はすべてのBrowser Identityに共通で、Identityの分離によってサイト権限が制限されるわけではありません。
Browser IdentityごとにCookie、キャッシュ、localStorage、権限、プロキシ認証、ブラウザーセッションが永続領域へ保存されます。タスクには複数のIdentityと一つのプライマリIdentityを割り当てられ、各sessionは一つのIdentityに属します。エージェントは割り当て済みのIdentityだけを操作できます。Autorunは新規タスクの初期Identityを指定し、指定しない場合はDefault Identityを使います。
Chromeからのimport-sessionは、表示中サイトのregistrable domainに属するCookieと、正確なoriginのlocalStorageを選択したIdentityへ取り込みます。sessionStorage、IndexedDB、拡張機能状態、device-bound認証、パスキー自体は取り込みません。
macOSではBrave、Edge、Arc、Vivaldi、Opera、Firefoxも取込元に選べます。cockpit browser import-sourcesで候補を確認し、--browserと--profile-idで明示的に指定できます。取込元を省略すると、検出した各ブラウザーの優先profileのうち、最も最近使われたものを選びます。Chromium系ではCookieと正確なoriginのlocalStorage、FirefoxではCookieのみを取り込み、制限を結果に表示します。Chromium系はブラウザーごとに別のSafe Storage Keychain項目を使い、FirefoxのCookie取込はKeychainへアクセスしません。
Identityのデータ消去はそのIdentityのセッションを閉じます。削除は永続データも削除します。実行中タスクやAutorunから参照されるIdentityは、置換先を指定しない限り削除できません。Default Identityは削除できません。
割り当てと削除の手順はBrowser Identityを参照してください。
ブラウザーのサインインの取り込みは、取込元ブラウザーのセッションのコピーです。別アカウントへのサインインではありません。Identityへ取り込む前に取込元のアカウントを確認してください。
添付とAskメディアを扱う
Askに添えられたHTML説明は、未回答のAskとともに保存され、回答または終了時に削除されます。DesktopとPWAでは表示専用の分離された領域に描画し、スクリプト、フォーム、Cockpit操作は実行しません。HTTP/HTTPSリンクはシステムブラウザーで開きます。DiscordやSlackの転送にはHTML本文を含めないため、判断に必須の情報は質問や選択肢にも記載してください。
PWAの会話に表示するローカル画像プレビューは、認証済みRemote Access接続を通じてホストから縮小JPEGとして送ります。対象タスクの保存済みimage_view結果に記録された絶対パスだけを許可し、任意のローカルファイルは取得できません。元画像のサイズと画素数も検査します。
添付はCockpit管理領域へランダムな保存名で、内容を変更せず保存します。アーカイブ、実行形式、未知の拡張子も受け付け、拡張子による拒否や、申告されたMIMEと内容形式の一致確認は行いません。実サイズと件数の上限は確認します。1メッセージは最大8ファイル、1ファイル512MB、合計1GBで、JSONは25MBまでです。受け付けたことは、そのファイルの安全性を保証するものではありません。
AntigravityのネイティブUIはDesktopとPWAの画像添付を直接扱います。画像が作業場所外にある場合、Cockpitは正規化した作業場所の.agi-cockpit-attachments配下へ、セッションごとのランダム名で一時コピーし、その中を.gitignoreで除外します。作業場所内にすでにある画像はコピーしません。シンボリックリンクなど実ディレクトリでないstaging rootをたどらず、セッション停止、CLI終了、アプリ終了時に対象セッションのコピーを削除します。次のセッション開始時には、実行中セッションが所有せず24時間以上経過したディレクトリも削除します。
この一時配置はAntigravityのsupervisedで作業場所外のファイル読み取りが拒否される境界を広げるものではありません。画像を作業場所内へ明示的に準備してから読み取らせる処理です。したがって、機密画像を添付すると作業プロジェクト内へ一時的に存在し、作業場所へ書き込めなければターンは失敗します。
Ask転送で、DiscordまたはSlackへ投稿したファイルを回答に添付する設定を有効にすると、許可した回答者が設定済みチャンネルへ投稿したファイルをCockpitの管理領域へdownloadし、該当Askの次の回答へ添付します。reply先がある場合はそのAskへ、ない場合は同じチャンネルの最新の未回答Askへ割り当てます。不要な場合はこの設定を無効にし、機密ファイルを共有チャンネルへ投稿しないでください。
ファイル名と内容は信頼済みの指示ではありません。Desktopのチャットは、認識できるローカルファイルのリンクだけをプレビュー操作にし、ファイルを実行しません。Windowsのドライブパスは利用可否を先に確認しますが、UNCパスは会話の表示時に接続せず、利用者がリンクを選んだ後に初めて読み込みます。Windowsの対応するfile: URLはローカルまたはUNCパスへ正規化してプレビューし、POSIXのfile: URL、未対応のURL scheme、実行可能な内容を含み得るdata URLは開きません。外部共有前に個人情報、ローカルパス、token、セッション情報を確認してください。
Desktopの動画プレビューは、ファイルパスをURLへ含めず、表示中のrendererだけが使える推測困難な一時URLからローカルファイルの必要な範囲を読み込みます。プレビューを閉じる、別のmain pageへ移動する、またはrendererを終了すると権限を破棄します。読み込みのたびに同じ通常ファイルであることを確認するため、URLの再利用で別のファイルやsymbolic linkへ切り替えることはできません。
Fleetのcommand gateはstdout / stderr全量をRunのfleet-runs/<runId>/gates/へ試行ごとに保存し、20 MBを超える場合は先頭と末尾だけを残します。出力にはtoken、local path、テストfixture、個人情報が含まれ得ます。Fleetパネルまたはcockpit fleet outputで外部共有する前に確認し、不要な終端Runを削除する前には必要な診断証拠だけを安全な場所へ保存してください。
ローカルのtask createとtask sendは、繰り返し指定できる--mediaでファイルを添付できます。GUIと同じ管理領域と容量制限を使い、元ファイルはコピーするだけで移動・削除しません。添付は選択したエージェントのプロバイダーへ送られる場合があります。--hostによるリモート送信には対応しません。
Remote Accessを保護する
Desktopのデバイスフィルターで他のPCを表示すると、同じTailscale所有者として認証されたPCから、タスク名、状態、エージェント、作業パス、指示のプレビュー、時刻、未回答Askの有無などの一覧用情報を受け取ります。この一覧専用接続では会話本文や添付を同期せず、タスクを操作しません。接続が切れると取得済みの一覧を消去します。
一覧のリモートタスクを開くと、DesktopはそのPCのRemote Accessページへ別のPWA接続を作ります。この接続はPWAと同じ認証境界を使い、認証後は会話とタスク詳細を読み取り、メッセージ送信、Askへの回答、停止、完了を対象PCへ送信できます。対象端末名を確認し、Tailscale端末とペアリング済み接続を、そのCockpitを操作できる権限として保護してください。
タスク通知、状態全体の同期、最近使ったフォルダの一覧は、認証済みの同期接続にだけ送信します。未ペアリングの接続は2分後に切断します。PWAは再接続中もペアリング画面と入力したコードを保持し、認証結果が届く前に切断された場合は送信済みコードを再送します。
推奨構成はTailscale限定とHTTPSです。Tailscale端末情報と6桁ペアリングコードで端末を認証し、失敗回数と有効期限を制限します。HTTPS証明書を取得できない場合にHTTPへ自動降格しません。
HTTPSのRemote Accessが実行中の場合だけ、Cockpitは証明書を開始時と24時間ごとに確認し、残り30日以下ならTailscaleから更新します。既存接続を切断せず、更新後の証明書は新しい接続へ適用します。失敗時は6時間後に再試行し、期限が14日以内または期限切れなら理由を含む警告を表示します。更新履歴には証明書、秘密鍵、コマンド出力、個人アカウント情報を保存しません。
リモートCLI制御は、同じtailnetで、Tailscaleの所有者が同じコンピューターからならtokenなしで使えます。それ以外の接続にはペアリング済みBearer tokenが必要で、Tailscale限定モードではTailscale peerでもloopbackでもない接続を拒否します。tokenは接続先Cockpitの操作権限として保護してください。リモートのfile pathは接続先コンピューター上の値で、transportはローカルfile IPCへfallbackしません。
ローカルWi-Fiモードは通信が暗号化されず、明示確認後にだけ有効になります。公共または信頼できないネットワークでは使わないでください。Remote Accessを停止すると接続中セッションは終了し、standalone状態が保存されます。
詳細はリモートアクセスを参照してください。
App Surfaceを保護する
App Surfaceは一つの対象を一つのタスクへ排他的に接続します。Android実機への初回接続はAsk承認を要求し、secure fieldへのfillは拒否します。切断後も最後の画面が表示される場合がありますが、古い状態として操作を無効にします。PWAはこの画面を閲覧できますが、attach、detach、再接続、入力はできません。
Cockpitは対象のアプリを起動、終了、インストールしません。タスクを完了または削除すると接続だけを解除し、対象アプリは終了しません。
接続と操作の手順はApp Surfaceを参照してください。
完了と削除を確認する
一時フォルダのタスクは完了時に作業場所が削除されます。DesktopでGit Worktreeのタスクを完了するとWorktreeを維持しますが、CLIのtask completeは既定で削除します。タスク削除、Fleet Runと関連タスクの一括削除、Identity削除は、履歴とローカルデータを失う可能性があります。
削除前に、対象ID、パス、Git状態、必要な成果、復旧方法を確認します。公開、外部送信、購入、権限変更などは、実行直前に利用者の承認を得てください。
Fleet Runのメニューとcockpit fleet complete-tasks <runId>で、完了・失敗・停止・一時停止中のRunに残るタスクを一括完了できます。実行中のRunは拒否し、処理中のタスクや未完了のループが再利用するセッションは対象外です。--dry-runで対象を事前確認できます。Runとタスクの履歴は保持しますが、Git Worktreeは保持します。一時フォルダのタスクは完了時に作業場所が削除されます。必要なファイルを先に保存してください。
PWAのファイルアクセスとHTML Surface
ペアリング済みのPWAから、選択したタスクの作業フォルダ内を参照し、ファイルをプレビューできます。読み取り専用ですが、表示を有効にすると隠しファイルも対象になります。Remote Accessで共有するフォルダに機密情報を置かないでください。ビルド出力、依存関係、Gitのフォルダは対象外です。作業フォルダ内を指す場合もシンボリックリンクはたどりません。テキストは1 MB、画像は10 MB、PDF・音声・動画は50 MBまで表示できます。バックグラウンドプロセスの表示は、そのタスクに記録されたログだけを読み取り、停止や再起動はできません。
HTML SurfaceはDesktopとPWAの両方で、既定ではスクリプトを禁止します。<meta name="cockpit-scripts" content="isolated">を含むSurfaceでは、分離されたフレーム内でインラインJavaScriptを実行し、ローカル計算や表示の切り替えができます。Cockpit、Node、ローカルファイル、認証情報、Cookie、アプリのストレージにはアクセスできません。通信、外部リソース、ページの埋め込み、画面遷移、ダウンロード、ポップアップは禁止されます。インラインイベント属性とJavaScript URLも引き続き禁止されます。Display通知ではスクリプトを実行しません。
所定のアクションや検証済みの送信コントロールを人が実際にクリックした場合だけ、操作と入力値を所有元のタスクへ送信できます。スクリプトから生成したクリックやメッセージでは送信できません。--non-interactiveではローカル計算はできますが、タスクへ送信しません。Surfaceを開き直したり更新したりすると、スクリプトの状態は初期化されます。制限と復旧方法はHTML Referenceを参照してください。HTMLファイルのプレビューは別の仕組みです。sandbox内でスクリプトを実行できますが、PWA、そのストレージ、親ページにはアクセスできません。