Console (platform.claude.com): multiple Analytics/Dashboard display bugs - caching under-reported, dashboard spend-limit $0, missing range control, filters/switcher ignored, Usage chart missing "All"
Several display bugs in the Anthropic Console web app (platform.claude.com), all on the Analytics/Dashboard surface. In every case the authoritative pages (Billing, Analytics -> Usage/Cost, request Logs) show correct data, but summary/dashboard cards, filters, and controls render stale, missing, or wrong data - looks like wrong-field / missing-fallback / not-recomputed handling.
(Filing here as it's the closest public Anthropic repo; please redirect if there's a better venue for console issues.)
Bug 1 - Prompt caching shown as "not enabled" despite a high cache-hit rate
- Affected: the Dashboard "Prompt caching" card ("Not enabled / — tokens reused") and Analytics -> Caching ("You're not using prompt caching").
- Both are driven by
GET /api/organizations/{org}/cache_analytics?...&group_by=model. For an affected org this returnssummary.cache_read = 0,cache_write = 0, and only a tiny slice of uncached tokens across justopus|4.6+sonnet|4.6. - Reality:
usage_activities/usage_costshow the large majority of input is cache reads, and the Logs per-request breakdown confirms it (e.g. one request: ~2 fresh input tokens vs ~184k cache-read tokens, ~99% cache read). - It appears
cache_analyticsdoes not aggregate usage attributed to user-scoped API keys (keys carrying anaccount_id, e.g. a Claude-Code-provisioned key), which is where most traffic/caching lives. Passingworkspace_idtocache_analyticsis also ignored - it returns the same slice.
Bug 2 - Dashboard spend card shows "$0 limit / 0% used" while Billing shows the real limit
- The Dashboard "Spend this month" card shows the spend amount but "of $0 limit · 0% used".
- The Billing page (correct) shows the real monthly spend limit and the correct % used.
- The card appears to read
enforced_limit_usd(which isnullwhen the cap is a self-selectednotify_and_pauselimit rather than an Anthropic-enforced tier cap) and renders null as "$0", instead of falling back to the configured limit the Billing page uses.
Bug 3 - "Rate Limit Use + Caching" chart's Model selector has no "All" option
- On Analytics -> Usage, this chart has its own Model selector (separate from the top filter bar's, which is fine). It initially shows "All", then auto-switches to a single model.
- Its dropdown lists only individual models - there is no "All" entry - so there's no way back to the aggregate view. It should include an "All" option like the top filter bar's selector.
Bug 4 - Caching page has no date-range control
- Analytics -> Usage and Analytics -> Cost both have a date-range selector, but Analytics -> Caching is hardwired to a fixed window with no way to change the period the cards and chart cover.
Bug 5 - Caching page summary cards ignore the Workspace and Model selection
- The three top cards (Uncached input tokens / Cache read tokens / Cache read ratio, with their "vs previous N days" deltas) never change when you pick a Workspace or Model - only the chart below them re-filters.
- Verified against the live API:
cache_analytics'ssummary.{current,previous}is computed org-wide, and the endpoint ignores theworkspace_idandmodelparams (byte-identical response with or without them). The page filters only the per-groupseriesclient-side for the chart; the cards'summaryis never recomputed, so they freeze on the org-wide totals.
Bug 6 - Dashboard ignores the global workspace switcher, and the switcher's label is misleading about why
/dashboardalways shows all-workspaces data regardless of which workspace is selected in the top-left switcher.- The switcher's disabled "All workspaces" row is subtitled "Only available on Cost and Logs" - but the Dashboard is also all-workspaces-only, so that label is incomplete.
- Relatedly:
/usage/cache?workspace=all_workspacesaggregates correctly, but bare/usage/cacheauto-selects a "Default" pseudo-workspace that has no keys, so it can render zeros.
Interim userscript fix
I wrote a client-side userscript (Tampermonkey / Violentmonkey / Greasemonkey) that corrects all six bugs above by intercepting the relevant API responses and rewriting the affected cards and controls. It is purely read-side/cosmetic and changes nothing server-side. Attached (zipped, since GitHub doesn't allow .js attachments directly):
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗