Telemetry

Gate sends counts and identifiers so we can tell whether it is being used. It never sends content.

The complete field list, the enforcement mechanism, and the reasoning are on the privacy page. This page is the configuration reference.

Turning it off

Any one of these, in order of precedence:

gate scan --no-telemetry
export GATE_TELEMETRY=0     # also: false, off, no
export DO_NOT_TRACK=1       # the Console Do Not Track convention

gate.config.ts

export default defineConfig({ telemetry: false })

Everything works identically with telemetry off. It is a side channel, never a dependency: a default scan makes no network calls at all.

What it sends

One event per completed scan: counts of servers, tools and credentials; finding counts by severity; which rule IDs fired; which capability classes were present; which adapters matched; the blast radius; whether it ran in CI; coarse platform; and a one-way repository fingerprint.

Never your code, file contents, secrets, repository name, command lines, environment values, tool names or finding text.

The request has a 1.5 second timeout and is fire-and-forget. It cannot slow a scan noticeably and cannot fail one.

Self-hosting

Point Gate at your own collector:

export GATE_TELEMETRY_ENDPOINT=https://telemetry.internal.example/v1/events

The backend is one Worker and one table:

For local development there is also scripts/ingest-server.mjs, which needs no database and appends to a file instead.

There is no dashboard. Events are newline-delimited JSON, one object per scan, so any tool that reads JSON can aggregate them.

Was this page helpful?