このページは、macOS版エージェントが利用する外部サービスと送信条件を説明します。Windows版についてはこちら。両者は同じ製品ですが、名前の読み取り方がはっきり違います。
エージェントはあなたのMacの外向き通信を見張ります。その役目のツールは、自分自身の外向き通信について具体的でなければなりません。「信用してください」は、利用者が確かめられる答えではないからです。
このページは、エージェントのサービス接続先、その理由、そのとき端末から出ていくものを列挙します。アプリ本体とシステム拡張の両方に同梱している PrivacyInfo.xcprivacy マニフェストの、散文版です。
ホストアプリの PrivacyInfo.xcprivacy は、配布CDNまたは任意の外部サービスで保持され得るデータ種別を宣言します。その他のデータ(更新要求元・観測先のIPアドレスや通信の集計)、閲覧履歴(AIへ渡す文脈に含まれるWebサイト)、その他のユーザーコンテンツ(AIへの質問と会話)、ユーザーID(サービスのアカウント)です。これらは送信可能な範囲であり、任意機能が常に有効という意味ではありません。 システム拡張は観測結果をホストアプリへローカルに渡すだけで、外部リクエストを行わないため、そのマニフェストの収集データ一覧は空です。利用者自身が運用するHubへの送信は、開発者や開発者のために運用する外部サービスへの送信とは分けて扱います。
| ホスト | いつ | 送るもの | 返るもの |
|---|---|---|---|
| あなたのHub(入力したアドレス) | 登録後、かつ送信が有効なときのみ | このMacのホスト名と、観測した接続メタデータ(ローカル/リモートアドレスとポート、プロトコル、プロセス名とID、取得できた場合のbundle ID、時刻、バイト数、収集方式と確度、取得できた場合の宛先ホスト名) | 受領応答、脅威フィードデータ、既に観測済みのアドレスの地図上の位置 |
dl.egressview.com |
定期的な更新チェックと、「更新を確認」を押したとき | AgentとOSのバージョンを含むHTTPS GET。識別子もアカウントも観測データも含みません | リリースのmanifest、インストールを選んだ場合は .pkg |
feodotracker.abuse.ch / threatfox.abuse.ch / urlhaus.abuse.ch / www.spamhaus.org |
フィードの直接ダウンロードを有効にした場合のみ(Hubがフィードを供給するときは無効) | 公開リスト全体を取得する通常のHTTPS GET。あなたの観測結果は送りません — 照合はダウンロードしたリストに対してMac上で行います | 公開されている指標リスト |
download.maxmind.com |
ローカルのGeoLite2国別テーブルを設定した場合のみ | MaxMindのアカウントIDとライセンスキー。観測した宛先IPは送りません | GeoLite2データベース |
ipwho.is |
位置情報の補完照会を有効にした場合のみ | 観測した宛先IPアドレス。1日最大500件 | 問い合わせたアドレスの位置 |
api.openai.com / api.anthropic.com |
対象のクラウドAIを設定し、質問を送信した場合のみ | 画面でプレビューした範囲の情報、質問、会話の文脈 | モデルの回答 |
これは設定可能なサービスの区分であり、すべてのネットワークホストの許可リストではありません。たとえばダウンロード先からCDNへリダイレクトされる場合があります。想定外の接続は、目的を確認できるよう報告してください。
dl.egressview.com への接続は、任意のWebサイトを訪れるのと同じように、あなたのIPアドレスをそのホストのCDNに知らせ、CloudFrontはアクセスログを書きます。これはHTTPSリクエストを行うこと自体の性質であり、エージェントが上乗せしているものではありません。 ここに書いているのは、都合の良い事実しか書かないプライバシーページは読む価値がないからです。
リクエストのUser-AgentにはAgentとOSのバージョンが含まれますが、インストールID、アカウント、観測データは付きません。一方、CDNのアクセスログには送信元IPアドレスが残ります。インストールIDが無いだけで匿名のログになるわけではありません。
クラウドAIは任意ですが、送信した内容が直ちに破棄されるとは限りません。OpenAIのResponses APIは既定で応答状態を保持し、Anthropic APIも通常は入出力を処理後に保持します。送信する文脈には閲覧したWebサイトや通信の集計が含まれ得ます。質問には利用者が入力した内容が含まれます。そのため、ホストのマニフェストにはクラウドAIを使わない人も含めて、送信可能なデータ種別を宣言します。ipwho.is は有効化した場合だけ観測先IPを受け取ります。保持方針を確認できていないため、マニフェストには慎重にそのIPも含めます。MaxMindのアカウントIDは、ローカルGeoLite2の取得を利用者が設定した場合だけ送信します。
Appleの「収集」の判定は、開発者または第三者が、リクエスト処理に必要な時間を超えて読み取り可能なデータにアクセスできるかによります。外部リクエストがあるだけで収集とは限りません。マニフェストはサービス別の保持期間の保証ではありません。現行方針はAppleの説明、OpenAIのAPIデータ管理、Anthropicの保持方針を確認してください。
上の表は「何を送るか」を言葉で述べています。実際に送られるJSONの項目名は次のとおりです。macOS版とWindows版は同じ項目を送ります。
schemaVersion, batchId, sentAt, agent (hostName, platform, osVersion, agentVersion), observations (observationId, networkProtocol, localAddress, localPort, remoteAddress, remotePort, processID, processName, bundleID, firstObservedAt, lastObservedAt, bytesIn, bytesOut, collector, confidence)
remoteHostname は、Hubが対応を通知したときだけ追加されます。認証情報はBearer tokenとして、そのHubへ送られます。
この一覧は、エージェントが登録前に画面へ表示するものと同じです。登録は、その内容を読んだことを確認しない限り開始できません。
macOSは、接続が終わるときにその接続の送受信量を報告します。ところがNetwork.framework(URLSessionを含むため多くのアプリと、それらのQUIC=HTTP/3の接続)の接続では、実際には何MBも流れていても、この報告が送受信とも0になります。その本当の量を記録するために、システム拡張はパケットフィルタも動かせます。
オンにするまでオフです(設定→データ量)。オフの間は、アプリがフィルタの設定にパケットフィルタを含めないので、macOSはそれを起動せず、パケットは拡張機能に届きません。CPUを使います。macOSはパケットを1件ずつフィルタへ渡すため、試験したMacでは、監視のCPUが平均で1コアの約0.1%から約1.2%になりました。通信量が多いとさらに増えます。
すること・しないこと:
bytesIn/bytesOutの値そのものです。パケットも、ヘッダーも、ディスクへの保存・ログ出力・送信はしません。数えるのはデータ部分のバイト数なので、アプリがダウンロードしたものの大きさに近いですが、同じではありません。QUICで78,450,688バイトのファイルを取得したときは79,840,999バイトと記録しました。差はQUIC自身の枠組みと暗号化の分です。TCPでmacOSも数えている接続と比べると、多くは完全に一致し(30分間の試料で107件中79件)、合計の差は0.1%以内でした。
既定では無効。 取り出した名前はローカルの履歴と画面で使い、Hubが受け付けると答えた場合はHubへも送ります(P3-14段階2、Agent 0.5.59以降)。古いHubには送りません —— 送る前に受け付けるかを尋ね、答えが無ければ送らないためです。
TLSでは、クライアントは鍵を合意する前に、行き先を平文で告げます。それを読むのに復号は不要です。
QUICではそのメッセージは暗号化されており、これは復号します。 そうでないと書けば嘘になりますし、この設定が信頼に値するかどうかは、その一点にかかっています。
可能な理由は、QUICのInitialパケットの鍵が、平文で流れる接続IDから、RFC 9001に公開された手順で導けるからです。ネットワークを見ている誰にでもできることです。 観測者から守られていたものは、何も明らかになりません。
届くのは最初のメッセージだけです。以降のパケットはTLSハンドシェイクから導かれた鍵で守られており、観測者はそれを持ちません。Agentは QUIC の会話を読めませんし、今後も読めるようにはなりません。
ブラウザのClientHelloは1つのInitialパケットに収まらないことが多く、2つに分かれて届きます。そのため最初のメッセージが揃うまで読み、揃った時点で終わります(2026-08-24に実測: 27フローで callback 56回、うち28回が2つ目のパケット)。読む範囲は「最初のメッセージ」のままで、広がってはいません。
ECH(Encrypted Client Hello)を使う接続では、平文で告げられる名前が多数のサイトが共有する公開名です(例: cloudflare-ech.com)。本当の宛先はその内側で暗号化されており、読めません——ネットワークを見ている誰にとっても読めません。
そしてAgentは、ある名前が公開名かどうかを判定できません。 ChromeはECHを使わない接続にも同じ拡張を送る(GREASE)ため、観測者から見て本物のECHとGREASEは区別できません。それがECHの設計目的です。 判定できないものに印を付ければ、正しい名前の大多数に誤った印を付けることになります。
実測ではまれです(このMacで、名前のある観測521,575件のうちcloudflare-ech.comは8件=0.002%)。まれであっても、書いておかないと「その名前が行き先だ」と読まれます。
エージェントは「このアドレスは悪性か」と誰かに尋ねません。公開されている指標リストをダウンロード(またはHubから受領)し、ローカルで比較します。あなたが通信した相手のアドレスは、脅威インテリジェンス提供者へ送られません。 守るために、守るべき対象そのものを第三者に渡すことになるからです。
地球儀は、既に観測済みの宛先を配置します。あなた自身のHubの api/agent/geo-cache またはローカルに取得したGeoLite2の国別テーブルを利用できます。補完照会を有効にした場合は、位置が分からない宛先IPを ipwho.is へ送ることがあります。位置情報源がなければ配置できず、第三者への照会が自動で始まることはありません。
Appleは、フィンガープリンティングに使われてきた一部のAPIについて理由の宣言を求めています。エージェントが宣言しているのは2カテゴリで、実際の用途は以下のとおりです。
| カテゴリ | 理由コード | エージェントが実際に行っていること |
|---|---|---|
| User defaults | CA92.1 |
自分の設定(ウィンドウ状態、再描画レート、言語)の読み書き |
| User defaults | 1C8F.1 |
双方が属するapp groupを通じたシステム拡張との設定共有 |
| File timestamp | C617.1 |
自分で書いたファイルのサイズの読み取り。app groupコンテナ内の観測journalとstore、およびアプリの一時ディレクトリ内のダウンロード済み更新パッケージ |
ディスク容量・システム起動時刻・有効なキーボードの各カテゴリは使用していません。これらへの呼び出しが宣言なしにソースへ現れた場合、リポジトリのテストが失敗します。 この表が黙って古くなることはありません。
上記はすべて、このページを信用せずに観測できます。
plutil -p "/Applications/EgressView Agent.app/Contents/Resources/PrivacyInfo.xcprivacy"
spctl -a -vvv -t install "/Applications/EgressView Agent.app"
codesign --verify --deep --strict --verbose=2 "/Applications/EgressView Agent.app"
そして相応しいことに、EgressViewをエージェントが動いているMacに向けて、エージェント自身が何に接続しているかを見ることができます。