diff --git a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+Claude.swift b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+Claude.swift index 5e32060b..3d3a37bd 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+Claude.swift @@ -538,7 +538,9 @@ extension CostUsageScanner { breakdown.sort { lhs, rhs in (rhs.costUSD ?? -1) < (lhs.costUSD ?? -1) } let top = Array(breakdown.prefix(3)) - let dayTotal = dayInput + dayCacheRead + dayCacheCreate + dayOutput + // Exclude cache read tokens from totalTokens since they're served from cache + // (not fresh computation). Include cache creation as those tokens are processed. + let dayTotal = dayInput + dayCacheCreate + dayOutput let entryCost = dayCostSeen ? dayCost : nil entries.append(CostUsageDailyReport.Entry( date: day, diff --git a/Tests/CodexBarTests/CostUsageScannerTests.swift b/Tests/CodexBarTests/CostUsageScannerTests.swift index 558b9f53..7153cf68 100644 --- a/Tests/CodexBarTests/CostUsageScannerTests.swift +++ b/Tests/CodexBarTests/CostUsageScannerTests.swift @@ -204,7 +204,7 @@ struct CostUsageScannerTests { #expect(report.data[0].cacheCreationTokens == 50) #expect(report.data[0].cacheReadTokens == 25) #expect(report.data[0].outputTokens == 80) - #expect(report.data[0].totalTokens == 355) + #expect(report.data[0].totalTokens == 330) #expect((report.data[0].costUSD ?? 0) > 0) }