DISCOVERY AND COVERAGE

Find the AI use happening outside your controls

Bring five evidence sources together. See which feeds are connected, stale or missing. The head of IT whose discovery console has been green for three weeks The export died in July. Nothing on the screen distinguishes that from an estate with nothing to find, so a green banner has been asserting a clean result over a dead feed.

Five evidence sources (vendor bill reconciliation, network egress, a service-account key audit, IDE and CLI telemetry, and the gateway's own tables), with Token Observe reporting coverage beside every clean answer. An empty findings list is the same bytes whether nobody is bypassing the gateway or the export died in July.
Evidence sources
Five: vendor bills, egress, keys, IDE telemetry, own tables
Direction of connection
Your exporter pushes inwards; two named pull connectors are the exception
Coverage states
Five, and only connected_fresh permits an all-clear
Silence bounds
6 hours egress, 48 hours IDE, 10 days keys, 45 days bills
What discovery doesIt detects and reports. It blocks nothing at all

A green banner over a dead feed is a claim nobody checked.

A survey inventories the tools people were willing to write down; a procurement list finds what somebody bought on a purchase order and misses every personal card and every key minted during an outage two years ago. Then comes a discovery tool with a findings page, and the trouble is the sentence underneath the list when it is empty: a stopped export and a clean estate emit the same bytes.

4 steps, in this order.

Start to finish
Step 1

Mint an ingest credential

Minting is an admin action and revoking an operator one. The credential may only post evidence rows for its streams; it cannot read findings.

then
Step 2

Send the vendor master bill first

It is ground truth for what was spent, and the only source that finds usage leaving no network, identity or endpoint trace.

then
Step 3

Add egress, keys and IDE telemetry

Destinations matched against a fixed hostname list, keys past a rotation window, and coding agents whose base URL is not this gateway.

then
Step 4

Read coverage before findings

The report attaches to the findings list, the scan response, the coverage route and the dashboard summary.

Check what each evidence source can establish before investigating a finding.

See the five sources and their bounds

Built for

  • A business that can export what it has: a vendor master bill, flow logs, a key inventory, workstation telemetry.
  • Anyone who wants coverage stated beside every clean answer rather than a findings page with nothing on it.
  • Anyone who will treat a finding as a lead and go and have the conversation it points at.

Wrong for

  • Anyone who wants discovery to block something. It is a detective control and cannot stop a workstation talking to a vendor API.
  • Anyone expecting endpoints outside the shipped lists to be recognised. IDE detection recognises six named coding agents.
  • Anyone who needs the two pull connectors qualified. Neither has been run against a live vendor tenant.

One thing on the record

The reporting-integrity failure this page argues against is one Token Observe shipped and records. Arrival was once stored as a batch arriving, so an exporter delivering an empty page hourly held its source at fresh indefinitely.

Coverage now keeps two clocks per feed, and connected_empty is its own state. Stop a feed on your own install and watch where it lands.

Where this is published

An empty delivery is not the same as no delivery.

A delivery proves the connector is alive; a delivery carrying at least one row proves the estate was observed. They are kept in different columns because they were once the same column, and the consequence was a source held at fresh indefinitely by an exporter delivering nothing. Connector runs, delivery outcomes and credential liveness are joined in too, because freshness alone is always late.

connected_fresh
Evidence arrived inside the bound. The only state a clean result can stand on, anywhere in the product.
connected_empty
Deliveries are still arriving and none recently carried a row. The connector is alive and the estate has not been observed.
feed_failing
The evidence is inside its bound and the thing that fetches or delivers it has stopped.
connected_stale, never_connected
Evidence arrived before and not recently enough, or never. Stale is the dangerous one, because everything still looks configured.
The unauthorised tools and coverage screen, showing no findings. A banner reads that 6 of 6 evidence sources are silent and names each one (vendor bill reconciliation, per-user seat export, network egress analysis, service-account key audit, IDE and CLI telemetry, own-table scan), saying no evidence has ever arrived for it. Below it, a panel headed No findings in this view explains that nothing was found, which is not the same as nothing being there, and that a zero here is not a clean estate.
the empty result, saying what it is worth

Sample data in the real Token Observe interface, recorded from a local evaluation with a temporary database, a mock provider and one request. No live provider key was used.

Closing a finding by absence is the hardest operation here.

A wrongly resolved finding is worse than a stale one: a condition that was true, is still true, and is now filed as handled. Four things must hold. The run reported completed. The source is one where absence is evidence, which is only the gateway's own tables; an export that omits last month's shadow key has not remediated it. The source ran in that pass. And the detection side saw its whole population.

4 things this still does not solve.

  • Discovery blocks nothing. It cannot stop a workstation talking to a vendor API, and it cannot say where a workload the gateway refused went next.
  • Egress matches a fixed list of vendor API hostnames plus regional Bedrock shapes, and IDE detection recognises six named coding agents. Anything else is a code change.
  • Neither shipped pull connector has been run against a live vendor tenant. Cisco Umbrella and GitHub Copilot are written to recorded-shape fixtures and published documentation.
  • A finding is a lead rather than proof, and some are structurally ambiguous. A silent endpoint seat cannot be told from a person on leave.

Check the product limits alongside the job you want to do.

What we do not claim

Questions

How do you tell a dead feed from a clean estate?

By recording two facts per source and reporting them beside every clean result: when a delivery last arrived, which proves the connector is alive, and when a delivery carrying at least one row last arrived. Those produce five states, and only connected_fresh permits an unqualified all-clear.

Does Token Observe need access to our finance system or our firewall?

No. Your own exporter pushes to a receiver on a credential Token Observe issued, scoped to the streams it may post, so there is no standing broad credential into your stack. Two optional pull connectors hold a narrow, read-scoped vendor credential you supply (Cisco Umbrella for egress and GitHub Copilot for seat spend), and both stay off until you set it.

Can a finding close itself once the problem is fixed?

Only for the source that reads the gateway's own tables, and only when the run completed, the prior snapshot was not truncated, the source ran in that pass and detection saw its whole population. The four operator-fed sources never clear by absence.

Your next step

Describe the version of this you have.

Say what your estate contains and which part of it worries you, and the reply will say where to start.