From 1873fbe304ebeda5051bfd3a54fd091cb277e545 Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Sat, 24 Oct 2026 03:43:56 -0500
Subject: [PATCH] feat(app): show Go allowance when a session costs nothing
(#58566)
---
packages/gui-extensions/src/context/i18n/en.ts | 3 +++
.../gui-extensions/src/context/indicator.tsx | 18 ++++++++++++++++++
packages/gui-extensions/src/context/tab.tsx | 11 ++++++++---
3 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/packages/gui-extensions/src/context/i18n/en.ts b/packages/gui-extensions/src/context/i18n/en.ts
index 5ad0d900330..0558df124e3 100644
--- a/packages/gui-extensions/src/context/i18n/en.ts
+++ b/packages/gui-extensions/src/context/i18n/en.ts
@@ -4,6 +4,8 @@ export default {
"usage.tokens": "Tokens",
"usage.usage": "Context",
"usage.cost": "Cost",
+ "usage.allowance": "Allowance",
+ "usage.allowanceAmount": "{{amount}} allowance",
"usage.view": "View context usage",
"usage.toggle": "Toggle session context",
"systemPrompt.title": "System Prompt",
@@ -23,6 +25,7 @@ export default {
"stats.userMessages": "User Messages",
"stats.assistantMessages": "Assistant Messages",
"stats.totalCost": "Total Cost",
+ "stats.allowance": "Allowance Used",
"stats.sessionCreated": "Session Created",
"stats.lastActivity": "Last Activity",
"export.success.title": "Session exported",
diff --git a/packages/gui-extensions/src/context/indicator.tsx b/packages/gui-extensions/src/context/indicator.tsx
index 6118a7fc3d5..90533adeeec 100644
--- a/packages/gui-extensions/src/context/indicator.tsx
+++ b/packages/gui-extensions/src/context/indicator.tsx
@@ -75,9 +75,18 @@ export function SessionContextUsage(props: {
const cost = createMemo(() => usd().format(spent()))
+ // A subscription such as OpenCode Go covers its requests from an allowance, so they cost nothing.
+ const allowance = createMemo(() =>
+ props.session.id ? props.session.server.data.session.allowance(props.session.id) : 0,
+ )
+
// Spend anywhere in the family keeps the cost visible, even when this session's model is free.
const showCost = createMemo(() => {
if (spent() > 0) return true
+
+ // The allowance shows instead of $0.00.
+ if (allowance() > 0) return false
+
const ref = info()?.model ?? messages().findLast((item) => item.type === "assistant")?.model
const model = ref ? catalogModel(props.session, ref)?.model : undefined
@@ -118,6 +127,9 @@ export function SessionContextUsage(props: {