claude-code-best/docs/telemetry-cleanup-audit.md
2026-06-01 11:55:15 +08:00

6.7 KiB
Raw Blame History

CC_Pure 遥测清理审计报告

审计日期2026-06-01 审计范围:claude-code-best (ccb) v2.1.888 全量源码 审计方法:源码静态分析 + strace 网络抓包实测


一、审计结论

项目 状态
Datadog 日志上报 已默认禁用
Sentry 错误上报 已默认禁用
OpenTelemetry 三方遥测 已默认禁用
1P Event Logging (BigQuery) 🔴 源码仍在,需清理
GrowthBook 远程配置/Feature Flags 🔴 源码仍在,需清理
BigQuery Metrics Exporter 🔴 源码仍在,需清理
1P API 调用 (api.anthropic.com) 🔴 默认仍会发起

实测数据strace 网络抓包):

环境变量 api.anthropic.com 连接
无防护 1 次
DISABLE_TELEMETRY=1 1 次(未完全阻断!)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 0 次

二、遥测系统详情

1. Datadog 日志上报 — 已清除

文件src/services/analytics/datadog.ts

ccb 已将硬编码的 Anthropic 内部 Datadog 端点改为环境变量驱动:

const DATADOG_LOGS_ENDPOINT = process.env.DATADOG_LOGS_ENDPOINT ?? ''  // 默认空
const DATADOG_CLIENT_TOKEN = process.env.DATADOG_API_KEY ?? ''          // 默认空

initializeDatadog() 在端点或 Token 为空时直接返回 false,不启动任何上报。

修改记录DEV-LOG 2026-04-03「Datadog 日志端点可配置化」


2. Sentry 错误上报 — 已默认禁用

文件src/utils/sentry.ts

initSentry()SENTRY_DSN 未设置时为纯 no-op。ccb 未配置 DSN。


3. OpenTelemetry 三方遥测 — 已默认禁用

文件src/utils/telemetry/instrumentation.ts

需要 CLAUDE_CODE_ENABLE_TELEMETRY=1 才初始化 OTEL SDK。默认不启用。


4. 1P Event Logging (BigQuery) — 🔴 需清理

文件

  • src/services/analytics/firstPartyEventLogger.ts (449行)
  • src/services/analytics/firstPartyEventLoggingExporter.ts
  • src/services/analytics/metadata.ts
  • src/services/analytics/config.ts

行为:将事件通过 OpenTelemetry SDK 批量导出到 https://api.anthropic.com/api/event_logging/batch

初始化路径

src/entrypoints/init.ts:95-106
  → import firstPartyEventLogger + growthbook
  → initialize1PEventLogging()
  → is1PEventLoggingEnabled() → !isAnalyticsDisabled()
  → isAnalyticsDisabled() 检查 NODE_ENV / Bedrock / Vertex / Foundry / isTelemetryDisabled()

问题isAnalyticsDisabled() 在默认配置下返回 false,导致 1P 日志正常启动。 DISABLE_TELEMETRY=1 应该能阻断此路径,但实测发现仍有连接(可能是 GrowthBook 初始化时绕过)。

建议清理方案(见第四节)


5. GrowthBook 远程配置 — 🔴 需清理

文件src/services/analytics/growthbook.ts (1256行)

行为

  • 启动时连接 https://api.anthropic.com/ 拉取 feature flags
  • 每 6 小时定时刷新
  • 发送用户属性deviceId, sessionId, organizationUUID, accountUUID, email, subscriptionType 等

用途:控制 Datadog 开关、事件采样率、sink killswitch、自动更新等

初始化src/entrypoints/init.ts:95-106 与 1P Event Logging 同步加载


6. BigQuery Metrics Exporter — 🔴 需清理

文件src/utils/telemetry/bigqueryExporter.ts

行为:每 5 分钟导出 OTel metrics 到 https://api.anthropic.com/api/claude_code/metrics


7. 其他潜在遥测点

文件 描述 风险
src/utils/startupProfiler.ts 采样启动性能数据上报 ant 100% / 外部 0.5%
src/utils/telemetry/betaSessionTracing.ts 调试 trace 低(需显式启用)
src/utils/plugins/fetchTelemetry.ts Plugin/MCP 下载遥测
src/services/settingsSync/ 设置同步到远程 Feature gate 控制)
src/services/remoteManagedSettings/ 企业远程配置 低(仅企业用户)

三、DISABLE_TELEMETRY=1 为何不够?

src/utils/privacyLevel.ts 定义了三级隐私:

CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC → essential-traffic最严格
DISABLE_TELEMETRY                        → no-telemetry中等
(无设置)                                → default全开

DISABLE_TELEMETRY=1 触发 no-telemetry 级别,理论上应禁用 Datadog + 1P Events + 反馈问卷。

实测发现:在此构建版本中,DISABLE_TELEMETRY=1 仍产生了 1 次 api.anthropic.com:443 CONNECT 连接。

可能的绕过路径

  1. GrowthBook 在 isGrowthBookEnabled() 检查之前就开始初始化
  2. Settings Sync 或 Remote Managed Settings 不经过 isAnalyticsDisabled() 检查
  3. 某个初始化路径使用了缓存的旧配置

CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 触发 essential-traffic 级别——最严格,实测 api.anthropic.com 连接。


四、建议清理方案

方案 A纯配置推荐不修改源码

修改 ccb wrapper (~/.local/bin/ccb)

#!/bin/bash
export PATH="$HOME/.bun/bin:$PATH"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
exec bun /home/spark/workspace/claude-code-best/dist/cli.js "$@"

优点:零代码改动,配置即生效 缺点:依赖环境变量,如被清除则遥测恢复

方案 B源码级清理更彻底

在以下位置插入硬编码防护:

  1. src/services/analytics/config.ts — 在 isAnalyticsDisabled() 开头加 return true
  2. src/entrypoints/init.ts — 注释 L95-106 的 1P Event Logging + GrowthBook 初始化
  3. src/utils/telemetry/bigqueryExporter.ts — 加 hard return

方案 C混合方案推荐

  • 配置层ccb wrapper 加 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1(防御层)
  • 源码层:在关键初始化路径加不可绕过的守卫(确保层)

五、已验证的安全特性

以下 ccb 已有的安全修改值得肯定:

修改 日期 效果
Datadog 端点可配置化 2026-04-03 默认不向 Datadog 发数据
移除反蒸馏机制 2026-04-02 删除 fake_tools、anti_distillation
默认关闭自动更新 2026-04-03 防止覆盖本地修改

六、附录:审计工具链

# 源码静态审计
grep -rn "telemetry\|analytics\|api.anthropic.com\|datadog\|growthbook\|sentry" src/ | grep -v node_modules

# 网络抓包实测
strace -f -e trace=network -o /tmp/ccb_net.log \
  env CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ccb --print -p "test" 2>&1
grep "api.anthropic" /tmp/ccb_net.log

本报告基于 ccb v2.1.888,源码路径 ~/workspace/claude-code-best/