πŸ“„ File detail

utils/privacyLevel.ts

🧩 .tsπŸ“ 56 linesπŸ’Ύ 1,886 bytesπŸ“ text
← Back to All Files

🎯 Use case

This file lives under β€œutils/”, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, …). On the API surface it exposes getPrivacyLevel, isEssentialTrafficOnly, isTelemetryDisabled, and getEssentialTrafficOnlyReason β€” mainly functions, hooks, or classes. What the file header says: Privacy level controls how much nonessential network traffic and telemetry Claude Code generates. Levels are ordered by restrictiveness: default < no-telemetry < essential-traffic - default: Everything enabled. - no-telemetry: Analytics/telemetry disabled (Datadog, 1P events, fee.

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

Privacy level controls how much nonessential network traffic and telemetry Claude Code generates. Levels are ordered by restrictiveness: default < no-telemetry < essential-traffic - default: Everything enabled. - no-telemetry: Analytics/telemetry disabled (Datadog, 1P events, feedback survey). - essential-traffic: ALL nonessential network traffic disabled (telemetry + auto-updates, grove, release notes, model capabilities, etc.). The resolved level is the most restrictive signal from: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC β†’ essential-traffic DISABLE_TELEMETRY β†’ no-telemetry

πŸ“€ Exports (heuristic)

  • getPrivacyLevel
  • isEssentialTrafficOnly
  • isTelemetryDisabled
  • getEssentialTrafficOnlyReason

πŸ–₯️ Source preview

/**
 * Privacy level controls how much nonessential network traffic and telemetry
 * Claude Code generates.
 *
 * Levels are ordered by restrictiveness:
 *   default < no-telemetry < essential-traffic
 *
 * - default:            Everything enabled.
 * - no-telemetry:       Analytics/telemetry disabled (Datadog, 1P events, feedback survey).
 * - essential-traffic:  ALL nonessential network traffic disabled
 *                       (telemetry + auto-updates, grove, release notes, model capabilities, etc.).
 *
 * The resolved level is the most restrictive signal from:
 *   CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC  β†’  essential-traffic
 *   DISABLE_TELEMETRY                         β†’  no-telemetry
 */

type PrivacyLevel = 'default' | 'no-telemetry' | 'essential-traffic'

export function getPrivacyLevel(): PrivacyLevel {
  if (process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) {
    return 'essential-traffic'
  }
  if (process.env.DISABLE_TELEMETRY) {
    return 'no-telemetry'
  }
  return 'default'
}

/**
 * True when all nonessential network traffic should be suppressed.
 * Equivalent to the old `process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` check.
 */
export function isEssentialTrafficOnly(): boolean {
  return getPrivacyLevel() === 'essential-traffic'
}

/**
 * True when telemetry/analytics should be suppressed.
 * True at both `no-telemetry` and `essential-traffic` levels.
 */
export function isTelemetryDisabled(): boolean {
  return getPrivacyLevel() !== 'default'
}

/**
 * Returns the env var name responsible for the current essential-traffic restriction,
 * or null if unrestricted. Used for user-facing "unset X to re-enable" messages.
 */
export function getEssentialTrafficOnlyReason(): string | null {
  if (process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) {
    return 'CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC'
  }
  return null
}