Source: c81 phase1-pages — Endpoints (PRO-34); policy-config-egress-allowlist's pending-destinations spine re-read as inventory (network destinations, ruled), on the Agent Inventory chassis, re-derived from the phase1 world
16 destinations reached by AI agents in 30d; 13 allowlisted — 3 are not.
api.telemetry-relay.io — unreviewed browser MCP server · registry.ollama.ai — 39 GB pulled · pastebin.com — all blocked
Destinations
every host an agent process reached · ranked not-allowlisted first, then by connectionsCategory | Allowlisted | Connections · 30d | Bytes · 30d | Installs | People | First seen | Last seen | |
|---|---|---|---|---|---|---|---|---|
| api.telemetry-relay.io | other | not allowlisted | 47 | 3 MB | 2 | 2 | Aug 14 | 3h ago |
| registry.ollama.ai | model registry | not allowlisted | 6 | 39 GB | 1 | 1 | Aug 5 | 7d ago |
| pastebin.com | other | not allowlisted | 2 all blocked | 0 B | 1 | 1 | Aug 22 | 9d ago |
| api.anthropic.com | LLM API | allowlisted | 41,200 | 9.4 GB | 11 | 11 | Apr 14 | 2m ago |
| api.openai.com | LLM API | allowlisted | 12,900 | 3.1 GB | 4 | 3 +1 unattributed | Jul 8 | 3h ago |
| chatgpt.com | LLM API | allowlisted | 8,400 | 1.8 GB | 6 | 5 | Apr 28 | 1h ago |
| api.github.com | code host | allowlisted | 3,860 | 380 MB | 8 | 6 | Apr 14 | 2h ago |
| generativelanguage.googleapis.com | LLM API | allowlisted | 2,150 | 420 MB | 3 | 3 | Jun 2 | 6h ago |
| www.googleapis.com | SaaS | allowlisted | 1,980 | 510 MB | 7 | 6 | May 12 | 2h ago |
| slack.com | SaaS | allowlisted | 1,240 | 64 MB | 6 | 6 | May 12 | 4h ago |
| api.x.ai | LLM API | allowlisted | 940 | 210 MB | 2 | 2 | Aug 10 | 23h ago |
| api.linear.app | SaaS | allowlisted | 510 | 22 MB | 3 | 3 | Jul 14 | 4h ago |
| api.figma.com | SaaS | allowlisted | 180 | 96 MB | 1 | 1 | Jun 23 | 5h ago |
| sentry.io | SaaS | allowlisted | 140 | 8 MB | 1 | 1 | Jun 2 | 2d ago |
| qpoint.snowflakecomputing.com | data warehouse | allowlisted | 31 | 12 MB | 1 | 1 | Jul 28 | 14d ago |
| api.hubspot.com | SaaS | allowlisted | 3 | 39 kB | 1 | 1 | Aug 18 | 13d ago |
16 destinations reached by 27 installs across 14 people in 30d — 1 install unattributed; 73,589 connections, 2 blocked, 55 GB transferred (egress collector, 30d). Every destination on 443/TLS. Installs are counted once per destination; a per-install egress total would double-count shared hosts, so none is printed. Sessions are the sample on record (7 days plus the scenario sessions), not the 30-day log.
Composition notes
- Question: where does our AI traffic go, and is any of it going somewhere nobody approved? Endpoints are network destinations (ruled 2026-09-01; c21's "endpoints" were devices and live in People). This is inventory: the allowlist is decided in the policy pages, so allowlisted is a quiet column and the approve affordance is a ghost that links out.
- Verdict line from endpointsVerdict(world) (derived/endpoints.ts, a fold-in for verdicts.endpoints): destinations reached, allowlisted of n, and each exception with its why — the unreviewed MCP server that lives there, a large pull, blocked attempts. Every fragment derives from the row's own facts.
- Framing band = the brief's five claims; the first three are filter buttons (findings-regroup-v2 idiom), connections and bytes are plain claims because filtering by them means nothing. Not-allowlisted is the one attention device and names the loudest host. Numbers cross-foot with the rows.
- Spine is policy-config-egress-allowlist's pending-destinations block re-read as inventory: host · connections · why-line · approve. "Agents" became installs, counted once per destination and never summed across hosts (c67: per-agent egress counts double-count shared hosts). Block is not this page's verb and is gone.
- Table is the raw UxTableList family so ?id= can pre-open a row. Rows from endpointRows(world), pre-ranked not-allowlisted first by connections, then connections — pastebin at 2 connections outranks api.anthropic.com at 41k because unapproved beats big. Search rides the Host header (host + category). Port / TLS is a column only when a destination differs from the rest; when every row agrees the footer says so once and the table gives the width back to Host and Category. The approve affordance is a ghost in the expand, not on the row — a governance control does not belong inside an inventory row; the row carries the amber text only.
- Expand = three sections: header (pills, 30-day stats, the why-line and ghost approve, an honest "view details →" stub — no destination detail page exists in Phase 1), reached by (install rows with person, device, monitored pill, and the MCP server behind the host with its flag and a session witness count), sessions that hit it (on record, labelled 7d where it applies; the empty states say why — detected-only installs have no session telemetry, blocked connections never became sessions).
- Fabrication, flagged: the world stores no MCP server → destination edge. MCP_SERVER_ENDPOINT in derived/endpoints.ts is an explicit id map marked TODO(reconcile), resolved through the current-state world (so browser reads reviewed in all-clear) and checked against session co-occurrence, which prints beside it.
- Open: bytes are the collector's count for the whole host, not per install — no per-install split is printed. A destination detail page (per-install connection breakdown, a 30-day connection series) is Phase-2 territory; the stub says so.