Skip to main content
Back to OpenA2A

Data Transparency

We separate two kinds of data. Invocation telemetry tells us which CLI and command ran. Scan-result contribution tells the registry which package you scanned and what the verdict was. They have different consent shapes, and this page describes both.

Two buckets, two consent shapes.

Invocation telemetry (which CLI, which command, which version, which OS) is on by default. It collects no package names and no scan content. Each event carries an install ID that identifies the machine, so the data is personal data; the privacy policy explains how the ID is made. Disable any time with OPENA2A_TELEMETRY=off.

Scan-result contribution (the package you scanned + verdict + finding counts) is opt-in only. It is requested explicitly the first time you run a local scan and persists your choice. Disable a single scan with --no-contribute (accepted by secure, detect and scan-soul). For every command, including check, use hackmyagent telemetry off or OPENA2A_TELEMETRY=off.

1. The Two Buckets

Invocation telemetry says “this CLI was used.” Scan-result contribution says “this is what the user is investigating.” Folding both into a single consent surface hides a boundary that matters under GDPR, SOC2, and FedRAMP, and we treat them as two separate decisions.

BucketWhat we collectConsentDisable
Invocation telemetry
Tool name + version, command run, success and duration, OS and Node.js major version, timestamp, and an install ID that identifies the machine. No package names, no scan content.Default-on, opt-outOPENA2A_TELEMETRY=offhackmyagent telemetry off
Scan-result contribution
Package name + version + scan findings + verdict. Names what you scanned.Opt-in (prompted on first local scan; choice persists)--no-contributesecure, detect, scan-soul; every command: hackmyagent telemetry off
Author publish
Full scan + narrative, for a package the author explicitly publishes.Explicit (secure --publish)Don’t pass the flag

2. Scan-Result Contribution Detail

When you opt in to scan-result contribution, the following metadata is sent to the OpenA2A Registry per scan:

FieldExamplePurpose
Package name@modelcontextprotocol/server-filesystemIdentify which package was scanned
Package version2024.10.14Track security across versions
Scan severity countscritical: 0, high: 1Aggregate community trust scores
Scan verdictsafe, warningAggregate community health metrics
Behavioral metricsfileCount: 42Detect anomalous package behavior
Timestamp2026-04-28T16:00:00ZTime-series analysis

3. What We Never Collect

Neither bucket collects any of the following:

  • Source code or file contents
  • API keys, tokens, or credentials
  • Personal information (name, email, IP address)
  • File paths or directory structures
  • Environment variables or configuration values
  • Git history or commit messages

4. Silent After Consent

After you have opted in to scan-result contribution, the CLI does not print a per-scan banner, queue notice, or “sent-to-registry” line on subsequent scans. Once you have consented, repeating the disclosure on every run trains users to ignore CLI output and feels surveillance-y even when consent is in place. The disclosure is on --help and on this page; the consent prompt itself fires once.

The silent rule does not apply to:

  • The initial consent prompt on first local scan.
  • --verbose or debug flags.
  • Hard errors that prevent the primary command from succeeding.
  • Author-driven publishes (secure --publish). Those print a result line by design because the user explicitly asked.

5. How Data Flows

Your Machine
↓
OpenA2A CLI
↓
api.oa2a.org
↓
Community Trust Scores

Both buckets flow over TLS 1.3 to api.oa2a.org. Invocation telemetry rolls up into usage metrics. Scan-result contributions land in the registry’s anonymous tier and are aggregated into community trust scores. No raw scan data is stored beyond the field set above.

6. Your Controls

Disable invocation telemetry. This works on every OpenA2A CLI, and in the AIM TypeScript SDK from 1.2.0:

export OPENA2A_TELEMETRY=off

The variable turns telemetry off only when its whole value is off, 0, false or no, in any letter case. In current releases a value with anything else in it, such as off followed by a space or by a carriage return from a Windows line ending, leaves telemetry on, and DO_NOT_TRACK is not read. With telemetry off no telemetry is sent, but current releases still compute the install ID and save it in ~/.config/opena2a/telemetry.json (or under $XDG_CONFIG_HOME/opena2a when that is set) on the first run.

Per-CLI subcommands also work where supported, e.g. hackmyagent telemetry off, ai-trust telemetry off.

Skip scan-result contribution for one scan:

hackmyagent secure --no-contribute

Check current status:

hackmyagent telemetry status

Inspect what would be sent. Pass --verbose to surface telemetry debug output:

hackmyagent secure --verbose

Request data deletion:

Email info@opena2a.org

7. Storage and Retention

  • Stored on Azure-hosted PostgreSQL (East US 2 region).
  • Encrypted at rest (AES-256) and in transit (TLS 1.3).
  • Scan-result metadata is retained for 12 months, then purged.
  • No data is sold, shared with third parties, or used for advertising.

8. Open Source Verification

Every line of code that handles telemetry is open source. You can audit exactly what each bucket sends:

9. Contact

Questions about data transparency or this policy? Reach out:

Last updated: September 30, 2026.

September 30, 2026: Corrected the description of invocation telemetry. The page said it collected no personally identifiable information, left the install ID out of the list of what it collects, and called its rollup anonymous. Each event carries an install ID that identifies the machine, so the data is personal data. The page now lists the ID, says which values of OPENA2A_TELEMETRY turn telemetry off and that current releases save the ID locally even when telemetry is off, and points to the privacy policy for how the ID is made. The May 2026 change to how the ID is made is described in A late notice about the telemetry install ID.