Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/clear-telemetry-fields.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@call-e/cli": patch
---

Clarify readable telemetry host fields and hashing of the complete server URL in the packaged README.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,10 @@ For layout rules and marketplace naming conventions, see [docs/agent-integration

The `calle` CLI sends best-effort usage telemetry to help diagnose installation, authentication, and tool availability issues.

**What is collected:** anonymous installation ID, CLI version, integration source (e.g. `claude/claude_code_plugin/<version>`), command stage, outcome, error type, and server host hash.
**What is collected:** anonymous installation ID, CLI version, integration source (e.g. `claude/claude_code_plugin/<version>`), command stage, outcome, error type, readable `base_url_host` and `server_host` (hostname and any non-default port), and `server_url_hash` (SHA-256 of the complete configured server URL).

The URL hash does not conceal the separate readable host fields. See the
[CLI telemetry field details and example](packages/cli/README.md#telemetry--usage-data).

**What is never collected:** phone numbers, call goals, OAuth tokens, broker login URLs, transcripts, or contact data.

Expand Down
16 changes: 15 additions & 1 deletion packages/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,24 @@ reaches the server.

Collected fields include an anonymous installation ID stored under the CLI
cache root, CLI version, integration source, command stage, outcome, error type,
and server host/hash. The payload does not include phone numbers, call goals,
and the endpoint metadata below. The payload does not include phone numbers, call goals,
OAuth tokens, broker login URLs, full argument JSON, transcripts, or contact
data.

| Field | Value |
| --- | --- |
| `base_url_host` | Hostname and any non-default port from the configured base URL, using `new URL(value).host`. |
| `server_host` | Hostname and any non-default port from the configured server URL, using `new URL(value).host`. |
| `server_url_hash` | SHA-256 of the complete configured server URL string, including any path, query, and fragment. |

For example, with base URL `https://api.example.com:8443` and server URL
`https://mcp.example.com:9443/mcp?mode=test`, the readable fields are
`api.example.com:8443` and `mcp.example.com:9443`. The hash is computed from the
entire `https://mcp.example.com:9443/mcp?mode=test` string, not just its host.
Default ports are omitted by URL parsing (for example, `https://api.example.com:443`
produces `api.example.com`). Hashing the server URL does not conceal the two
separate readable host fields.

Disable CLI telemetry with `DO_NOT_TRACK=1`, `CALLE_TELEMETRY=0`, or
`--no-telemetry`:

Expand Down