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.
| Bucket | What we collect | Consent | Disable |
|---|---|---|---|
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-out | OPENA2A_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:
| Field | Example | Purpose |
|---|---|---|
| Package name | @modelcontextprotocol/server-filesystem | Identify which package was scanned |
| Package version | 2024.10.14 | Track security across versions |
| Scan severity counts | critical: 0, high: 1 | Aggregate community trust scores |
| Scan verdict | safe, warning | Aggregate community health metrics |
| Behavioral metrics | fileCount: 42 | Detect anomalous package behavior |
| Timestamp | 2026-04-28T16:00:00Z | Time-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.
--verboseor 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
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:
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:
Check current status:
Inspect what would be sent. Pass --verbose to surface telemetry debug output:
Request data deletion:
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:
- Invocation telemetry SDK: @opena2a/telemetry
- Scan-result contribution path (ai-trust): ai-trust/src/telemetry
- HackMyAgent CLI source: github.com/opena2a-org/hackmyagent
9. Contact
Questions about data transparency or this policy? Reach out:
- Email: info@opena2a.org
- GitHub: Open an issue
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.