Skip to main content
GraphCheck telemetry is disabled by default, and there are two separate opt-in mechanisms:
  • Persistent consent: graphcheck telemetry enable turns telemetry on for this user; graphcheck telemetry disable turns it off again.
  • Process override: setting GRAPHCHECK_TELEMETRY=1 opts in the current process only. It takes precedence over stored consent — including a stored disable — so to stop it, unset the variable or set GRAPHCHECK_TELEMETRY=0. DO_NOT_TRACK=1 force-disables telemetry over everything else.
Telemetry delivery is best-effort and never changes command output, artifacts, or exit behavior. GraphCheck sends structural and aggregate product signals only. The PostHog project key is a public ingestion identifier; builds without that key store consent but do not send events.

Events

graphcheck_run_completed has two reviewed field shapes: one for a normal terminal event and one for a faulted terminal event. Every event also receives the common properties listed below. graphcheck_command_completed includes coarse compatibility metadata: os_family, os_version (major/minor only, or unknown), and python_minor. GraphCheck does not send an exact OS build, Linux distribution, kernel suffix, architecture, or Python patch/build string. The block below is both the human-readable field inventory and the CI contract. Field lists are event-specific; common_properties are added to every outgoing event. CI fails if an event name or field in the code allowlist differs from this document.

Explicitly excluded

No telemetry payload contains:
  • graph labels, relationship types, property names or values, records, or exact graph counts;
  • query text, plans, parameters, result columns, evidence, baselines, expected values, or measured values;
  • check IDs or names, suite IDs or names, tags, questions, descriptions, or provenance;
  • database names, URIs, credentials, profile names, target fingerprints, or server addresses;
  • generation provider names, model names, destinations, prompts, or document contents;
  • project or repository names, branches, remotes, commit hashes, paths, filenames, file contents, or artifact run IDs;
  • command-line arguments, environment-variable names or values, hostnames, usernames, emails, IP addresses, hardware identifiers, or stable machine-derived identifiers;
  • exact OS builds, Linux distributions, kernel suffixes, architectures, or Python patch/build versions;
  • free-form errors, driver notifications, stack traces, exception representations, or local variables;
  • check verdicts or raw CLI exit codes.
process_outcome reports whether GraphCheck operated successfully. A completed run remains success when its checks produce exit code 1 or 2, so telemetry cannot be used to infer check results.

Delivery and identity

Events are queued on a daemon worker and sent with short timeouts. Full queues, network failures, timeouts, rate limits, and malformed responses cause event loss only. GraphCheck does not display telemetry transport errors. An opted-in installation uses a random UUID. GraphCheck disables PostHog person-profile processing and geographic enrichment. A process-only GRAPHCHECK_TELEMETRY=1 override uses a non-persistent process UUID when no stored opt-in exists. The tables above are the complete inventory: an event or field not listed on this page is not sent, and CI enforces that the shipped code matches this document. Consent is explicit and local. Persistent consent is controlled with graphcheck telemetry enable and graphcheck telemetry disable; the process-only GRAPHCHECK_TELEMETRY=1 override takes precedence over stored consent and stops only when the variable is unset or set to 0. graphcheck telemetry status shows the effective state.