The missing work was not recoverable.
GitHub reported that several IDEs moved Copilot agent sessions to the Copilot SDK without identifying the source IDE. The usage system omitted most of that activity and counted some of it as Copilot CLI activity. Billing did not change.[1]
The fix reached Visual Studio Code in version 1.139.0. GitHub listed later fixes for Visual Studio, JetBrains IDEs, Eclipse, and Xcode. Old records cannot be backfilled because the missing IDE identity was never sent. Reports recover as clients update.
A dashboard can be internally consistent and still describe the measurement route more than the work.
One chart mixes several witnesses.
GitHub's metrics documentation says most detailed IDE metrics come from client telemetry. Server records can recover active-user counts that the client misses. They cannot recover every feature, language, model, or line-of-code detail.[2]
That split matters during an incident. A steady active-user count beside falling agent edits does not prove that developers stopped editing with agents. It can mean that the server still saw requests while the client stopped attaching enough detail. A rising CLI bucket can also be an attribution error rather than a sudden change in tools.
Version belongs beside the metric.
Do not compare a client-derived series across a client migration without marking the change. Record the IDE version, extension version, telemetry policy, network route, and SDK boundary for each cohort. Keep deployment dates on the chart.
GitHub exposes the last known IDE and plugin versions in per-user reports. That gives operators a concrete place to look before blaming training, adoption, or developer behavior. It does not prove that every event arrived. It helps separate old clients from new ones.
Give users custody of the raw route.
The OpenTelemetry project recommends OTLP export for logs, traces, and metrics when products need to deliver telemetry to a user's own system. Its design guide separates self-hosted software, where the process exports, from cloud platforms, where the provider forwards data.[3]
That does not repair GitHub's historical data. It gives product builders a better contract. Document which process emits each signal, which identity fields travel with it, which Collector or service forwards it, and what cannot be reconstructed later.
Diagnose the witness before the workforce.
When a coding-agent chart moves, compare independent evidence before changing policy. Check server activity, pull requests, client versions, network delivery, and known release changes. Preserve the mismatch in the incident note. Do not average it away.
The practical rule is short. No adoption verdict crosses a client migration without a version split and an independent witness.