source dump of claude code
at main 55 lines 1.9 kB view raw
1/** 2 * Privacy level controls how much nonessential network traffic and telemetry 3 * Claude Code generates. 4 * 5 * Levels are ordered by restrictiveness: 6 * default < no-telemetry < essential-traffic 7 * 8 * - default: Everything enabled. 9 * - no-telemetry: Analytics/telemetry disabled (Datadog, 1P events, feedback survey). 10 * - essential-traffic: ALL nonessential network traffic disabled 11 * (telemetry + auto-updates, grove, release notes, model capabilities, etc.). 12 * 13 * The resolved level is the most restrictive signal from: 14 * CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC → essential-traffic 15 * DISABLE_TELEMETRY → no-telemetry 16 */ 17 18type PrivacyLevel = 'default' | 'no-telemetry' | 'essential-traffic' 19 20export function getPrivacyLevel(): PrivacyLevel { 21 if (process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) { 22 return 'essential-traffic' 23 } 24 if (process.env.DISABLE_TELEMETRY) { 25 return 'no-telemetry' 26 } 27 return 'default' 28} 29 30/** 31 * True when all nonessential network traffic should be suppressed. 32 * Equivalent to the old `process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` check. 33 */ 34export function isEssentialTrafficOnly(): boolean { 35 return getPrivacyLevel() === 'essential-traffic' 36} 37 38/** 39 * True when telemetry/analytics should be suppressed. 40 * True at both `no-telemetry` and `essential-traffic` levels. 41 */ 42export function isTelemetryDisabled(): boolean { 43 return getPrivacyLevel() !== 'default' 44} 45 46/** 47 * Returns the env var name responsible for the current essential-traffic restriction, 48 * or null if unrestricted. Used for user-facing "unset X to re-enable" messages. 49 */ 50export function getEssentialTrafficOnlyReason(): string | null { 51 if (process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) { 52 return 'CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC' 53 } 54 return null 55}