Repository navigation
v1.11.3 - AIC reconciled with GitHub's ledger + BYOK provider cost
Install
Download copilot-usage-dashboard-1.11.3.vsix below, then:
code --install-extension copilot-usage-dashboard-1.11.3.vsix
Fixed — the AIC total drifted below github.com, and the gap kept growing
The dashboard reported fewer credits than GitHub's own settings page for the same cycle — an offset that widened rather than holding steady.
Every credit figure was reconstructed from local debug logs, which is structurally a lower bound on what GitHub bills. Three blind spots feed it, and all three accrue monotonically:
- Requests through VS Code's public
LanguageModelChatAPI omitcopilotUsageNanoAiuentirely, so they were only ever rate-estimated. - Work from other machines, other IDEs, github.com, and the cloud agent never writes a local log at all.
- Deleted or rotated workspace storage takes its history with it.
The headline now comes from GitHub's own quota ledger (/copilot_internal/user), which matches github.com exactly.
The split is surfaced rather than blended. The hero shows local-derived and GitHub-billed side by side, and Usage-by-Model carries an unattributed / no local log row so the table still totals to the hero instead of quietly falling short of it.
Three follow-on corrections, each surfaced by a user challenging a number that looked wrong:
- Overage was derived, not read. It computed
max(0, total − budget)instead of using the server'soverage_count— the same assumption class that produced an earlier phantom overage charge. - The budget denominator was the per-user plan table instead of the pooled org entitlement, producing an "over budget pace" banner on a seat well inside its allowance.
- Pace and projection still derived from the local total while being measured against the pooled budget.
Fixed — duplicate BYOK model rows
VS Code stamps the vendor of whichever model the picker is sitting on, not what the wrapper actually dispatched to. BYOK requests therefore rendered as a second, bare row for the same model alongside the correctly-labelled one. Provider is now inherited by model family.
Added — BYOK provider cost in real dollars
Requests through your own endpoint (Azure AI Foundry, Anthropic, OpenAI, Ollama) are not billed by GitHub. The credit columns could only ever show what that traffic would have cost on Copilot — a figure that appears on no invoice you receive.
A new Provider cost column applies your provider's real published per-token rates to the same traffic and reports USD. It is a different vendor's bill, so it is reported separately and never added to your AI credits.
Anthropic-family rates ship as defaults at published Claude API prices, which Anthropic documents as also being the Microsoft Foundry rate card. Override anything under copilotUsage.byokPricing, including regionMultiplier for Azure US Data Zone deployments (1.1x).
Two deliberate constraints, both visible in the UI:
- A model with no configured rate renders
—, never$0.00. An unpriced Azure deployment and a genuinely free local model must not look identical — one of those is an unbounded under-report. - The total is a lower bound. Anthropic prices cache reads at
0.1xinput and cache writes at1.25x–2.0x, but VS Code records a single undifferentiatedcachedcount. Cached tokens are priced as reads;copilotUsage.byokPricing.cacheWriteRatioshifts the split.
Verification
33 tests pass, 0 regressions.
verify-no-drift and verify-dashboard-vs-api still fail. Both reproduce identically on the v1.10.99 baseline in an isolated worktree — they encode the pre-quota contract, where local logs were treated as truth. They were left failing rather than adjusted, since they are a real signal about a contract that genuinely changed.
Full changelog: v1.10.99...v1.11.3