ccdeck

What does Claude Code's telemetry send?

Checked on against ccdeck 3.41.1 and the sources below

Short answer

Connected directly to the Claude API, Claude Code sends usage metrics and, on Pro and Max sign-ins, error reports; its OpenTelemetry export sends nothing until you turn it on, and then only where you point it.

What Claude Code sends on its own

On Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry and Claude Platform on AWS, both start off. To turn them off, set these variables in your shell or in the env block of ~/.claude/settings.json:

{
  "env": {
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1"
  }
}

CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 turns both off at once, with auto-updates, release notes and /feedback. It and DISABLE_TELEMETRY also stop feature-flag fetching, which can make Remote Control unavailable.

Writing 0 does not turn them back on. These three variables read only whether they are set, so "0" still opts out. To turn one back on, delete it.

More about what else leaves your machine
  • To talk to the model, Claude Code sends data that “includes all user prompts and model outputs, encrypted in transit via TLS 1.2+.”
  • /feedback, /bug and /share send “a copy of your conversation history including code” when you run them. DISABLE_FEEDBACK_COMMAND=1 turns them off.
  • The “How is Claude doing this session?” survey records only your rating. A transcript goes only if you answer Yes to the question after it. CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1 turns the survey off.
  • Before WebFetch reads a page, it sends the hostname alone to api.anthropic.com for a safety check, on every provider. "skipWebFetchPreflight": true in your settings turns it off; CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC does not.

OpenTelemetry, only where you send it

Claude Code can also export metrics, events and traces through OpenTelemetry, for your own monitoring. In Anthropic’s words, this export “is opt-in and requires explicit configuration,” starting with CLAUDE_CODE_ENABLE_TELEMETRY=1, and its data is “sent only to the OTel endpoint you configure, never to Anthropic.”

By default an event records the length of a prompt or a response, not its text. Each kind of content has its own flag, off by default:

Signed in with OAuth, the exports also carry your e-mail address, as user.email. Since version 2.1.282, a repository’s .claude/settings.json cannot turn any of this on or choose where it goes, only switch it off. To read the exports without a collector, use the console exporter, as Anthropic’s docs do for debugging.

ccdeck’s Telemetry Radar, to see what is on

ccdeck is a free, open-source dashboard for Claude Code and Codex sessions that runs on your machine. Its Telemetry Radar, marked Beta, opens from the stripe on the right.

npx ccdeck --ref=claude-code-telemetry

What it misses. It decodes only plaintext OTLP over gRPC on IPv4: an HTTPS export shows as a connection it cannot read, and model API calls and Anthropic’s own metrics and error reports are out of its reach. A connection alone does not prove telemetry was sent, and an empty list does not mean it is off. It reads settings files, not your shell, and neither shows nor switches DISABLE_TELEMETRY or DISABLE_ERROR_REPORTING. Claude Code only.

Its switches outlast ccdeck. Switching a flag off writes "0" rather than removing it, and npx ccdeck --uninstall takes only ccdeck’s hooks out of ~/.claude/settings.json, so the flag stays there.

ccdeck sends usage reports of its own, on by default: its version, your system, your IP address and a device fingerprint, rough counts such as how many sessions ran in a day, and the errors it hits. Start it with AGENTS_DECK_NO_REPORTS=1 to send none.

More about capture permissions

Capture needs a permission once, which ccdeck does not grant for you. On macOS, read access to the BPF devices, which Wireshark’s ChmodBPF helper sets up. On Linux, tcpdump, with capture permission for the user running ccdeck. On Windows, Wireshark with Npcap, with capture access for that user. Until then the Radar says what is missing, and it retries once access is there. Configuration works without any of them.

Step by step

Sources

Read on . What ccdeck does is checked against ccdeck 3.41.1, and what another tool does against its own documentation.