Skip to content

fix: require separate consent for automatic telemetry uploads - #148

Merged
SaladDay merged 2 commits into
mainfrom
codex/automatic-telemetry-consent
Sep 18, 2026
Merged

SaladDay merged 2 commits into
mainfrom
codex/automatic-telemetry-consent

Conversation

@hetaoBackend

@hetaoBackend hetaoBackend commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Change

Runtime performance metrics and automatic error reports could upload without separate user consent. Require independent, default-off telemetry.metrics and telemetry.diagnostics opt-ins, while keeping telemetry.enabled scoped to usage events. MCODE_DISABLE_TELEMETRY and DO_NOT_TRACK override all three channels.

Keep the implementation small: business-source changes total 93 lines (+77/-16), down from 466 in the original implementation. Organize the PR into two commits: consent enforcement and regression tests; channel status, usage preview messaging, and documentation. Existing login, model requests, local observability, and user-submitted feedback retain their behavior.

Disabled TUI incidents are stored as local-only files and are not automatically uploaded. LLM diagnostics require consent before buffering and again before sending; TUI diagnostics recheck consent after asynchronous authentication. mcode telemetry status displays all three channel settings, and preview describes usage events only. Configuration changes require restarting MCode.

Validation

  • pnpm verify, full profile, Linux x64, Node 22.22.2: all 13 applicable gates passed on 0634d7338ef569377e2bb51b962d084cf8270993. The final two-commit head 1e183e6b877474725edfae3caa57888fdff437ad has exactly the same Git tree (73a0f1a2f76551672bfa5dee3f79043c5a8948cf); only commit history was reorganized, so the full suite was not rerun for this history-only update.
  • Capability suite: 132 files, 3377 tests passed. Focused regression coverage includes consent revoked after buffering or while authentication is pending, both global opt-outs, and usage-only preview messaging.
  • Smoke, BYOK protocol fixtures, permission tests, type checking, build/artifact checks, source export, and release-tool tests passed.
  • The verification process cleared inherited proxy variables because CLI proxy initialization replaces the offline tests' fetch interceptor. The public build dependency was cached after validating its pinned archive and entry hashes.
  • Independent review and follow-up review found no blocking issue within this minimal telemetry scope. git diff --check passed.
  • NOT RUN for this final tree: macOS/Windows verification, macOS sandbox tests, production telemetry ingestion/retention, and live-provider acceptance. Network privacy tests use synthetic inputs and intercepted requests.

Publication and contribution checks

  • I have permission to contribute these changes under the existing licenses applicable to the changed files/packages; imported material and its provenance are identified and existing notices are preserved.
  • No credentials, account data, real user content, internal source history or private review material is included.
  • Added/removed source files were reviewed before regenerating release/public-source.json; new tests are declared in test/vitest-suites.json where applicable.
  • Shared English/Chinese documentation and capability/verification records are updated where applicable. Mock/offline results are not described as live-service acceptance.

Maintainer handoff

Publication scope or license changes: no license changes; the inventory adds the shared telemetry policy and a metrics privacy test. English telemetry/capability documentation is updated; shared README content is unchanged.

Shared-source port: pending.

@hetaoBackend
hetaoBackend deleted the codex/automatic-telemetry-consent branch September 18, 2026 13:54
@SaladDay SaladDay reopened this Sep 18, 2026
@SaladDay
SaladDay force-pushed the codex/automatic-telemetry-consent branch from d9e2047 to 1e183e6 Compare September 18, 2026 16:03
Default runtime metrics and diagnostics to off, honor global opt-outs,
and recheck diagnostic consent before sending. Include privacy
regressions and the generated source and test inventories.
Expose all three telemetry channel settings, scope previews to usage
events, and document independent opt-ins and automatic diagnostics.
Include the matching CLI regression test.
@SaladDay
SaladDay merged commit 30dd6f2 into main Sep 18, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants