What does Claude Code's telemetry send?
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.
- Usage metrics: latency, reliability and usage patterns, never your code, prompts or file paths.
DISABLE_TELEMETRY=1turns them off. - Error reports: Claude Code’s own errors, with known patterns of secrets and paths redacted.
DISABLE_ERROR_REPORTING=1turns them off. - OpenTelemetry: off until
CLAUDE_CODE_ENABLE_TELEMETRY=1; prompt text and tool details only with their ownOTEL_LOG_*flags. - ccdeck’s Telemetry Radar shows which OpenTelemetry flags your settings turn on, and can capture what reaches your collector.
What Claude Code sends on its own
- Metrics go to Anthropic and to third-party logging infrastructure over TLS. They hold “latency, reliability, and usage patterns,” and “never include your code, prompts, or file paths.”
- Error reports hold error messages and stack traces from Claude Code’s own internals, and go to a third-party error tracking service. Claude Code first redacts known patterns of secrets, file paths, e-mail addresses and other personal information. They are on only if you sign in with Pro or Max, run version 2.1.198 or later, connect straight to the Claude API, and your organization has no zero data retention or HIPAA agreement.
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,/bugand/sharesend “a copy of your conversation history including code” when you run them.DISABLE_FEEDBACK_COMMAND=1turns 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=1turns the survey off. - Before WebFetch reads a page, it sends the hostname alone to
api.anthropic.comfor a safety check, on every provider."skipWebFetchPreflight": truein your settings turns it off;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICdoes 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:
OTEL_LOG_USER_PROMPTS: your prompts.OTEL_LOG_ASSISTANT_RESPONSES: Claude’s responses. Left unset, it followsOTEL_LOG_USER_PROMPTS.OTEL_LOG_TOOL_DETAILS: tool input, such as Bash commands, file paths and URLs, and MCP server and tool names.OTEL_LOG_TOOL_CONTENT: file contents and command output that tools return, in trace spans.OTEL_LOG_RAW_API_BODIES: every API request and response, which “include the entire conversation history.”
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
- Configuration lists the OpenTelemetry destinations and flags in your user, cached organization and managed settings, and which file set each. Credentials and endpoint paths stay hidden.
- Each flag your user settings set gets a switch, for new sessions. It writes
"1"or"0"underenvin~/.claude/settings.json. A flag that managed or organization settings set shows Managed. - Monitor captures what goes to the collectors you choose, once you press Start monitoring. ccdeck runs the capture itself, on macOS, Linux and Windows, and shows each export as readable JSON.
- Captured messages stay in ccdeck’s memory, up to 24 hours of them, and are sent nowhere. No capture file is written.
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.
- Claude Code docs: Data usage, Telemetry services
- Claude Code docs: Data usage, Default behaviors by API provider
- Claude Code docs: Monitoring, Common configuration variables
- Claude Code docs: Monitoring, Security and privacy
- Claude Code docs: Environment variables
- Claude Code docs: Settings reference, Variables Claude Code ignores in env
- Claude Code docs: Settings reference, Privacy and telemetry
- The ccdeck README at 3.41.1