diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
index bfdbfa51b5e..a744a49d613 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
@@ -54,7 +54,10 @@ export function Header() {
const model = sync.data.provider.find((x) => x.id === last.providerID)?.models[last.modelID]
let result = total.toLocaleString()
if (model?.limit.context) {
- result += " " + Math.round((total / model.limit.context) * 100) + "%"
+ const pct = Math.round((total / model.limit.context) * 100)
+ if (!isNaN(pct) && isFinite(pct)) {
+ result += " " + pct + "%%"
+ }
}
return result
})
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
index 6c74e04fac7..93a1cf1ffc6 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
@@ -43,9 +43,10 @@ export function Sidebar(props: { sessionID: string }) {
const total =
last.tokens.input + last.tokens.output + last.tokens.reasoning + last.tokens.cache.read + last.tokens.cache.write
const model = sync.data.provider.find((x) => x.id === last.providerID)?.models[last.modelID]
+ const pct = model?.limit.context ? Math.round((total / model.limit.context) * 100) : null
return {
tokens: total.toLocaleString(),
- percentage: model?.limit.context ? Math.round((total / model.limit.context) * 100) : null,
+ percentage: pct !== null && !isNaN(pct) && isFinite(pct) ? pct : 0,
}
})
@@ -82,7 +83,7 @@ export function Sidebar(props: { sessionID: string }) {
Context
{context()?.tokens ?? 0} tokens
- {context()?.percentage ?? 0}% used
+ {context()?.percentage ?? 0}%% used
{cost()} spent
0}>