You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Inactive Claude account reports expired sign-in until selected, despite working in built-in tab #30289
An inactive saved Claude account can show “Sign-in expired” or “Sign in to see usage” in Orca’s account switcher even though the same account works when selected and launched through Orca’s built-in Claude tab.
Environment
macOS
Orca 1.4.229
Claude Code 2.1.302
Steps to reproduce
Save multiple Claude accounts in Orca. One account is also available through a working Claude Code System Default login.
Keep another Claude account selected in Orca.
Open Usage → Switch to and refresh the inactive account’s usage. The inactive account may be marked as having an expired sign-in.
Select that account in Orca and open a built-in Claude tab. Claude launches and works.
Reopen the account switcher. Usage for that account can now appear normally.
Before the switch, orca account list --json reported an error with failureKind: stale-token for the inactive account. After the switch and successful built-in tab launch, it reported status: ok and a valid usage figure. All account identifiers and usage values are omitted here.
Expected behavior
If the account can be used through its matching System Default login, inactive usage refresh should not say its sign-in has expired. If usage cannot be checked at that moment, the switcher should describe the usage as temporarily unavailable without implying that the account cannot sign in.
This report is about the false expired sign-in state that clears after selecting the account and launching a built-in tab. I have not isolated whether the cause is credential routing, usage refresh timing, or cached error state.
I hit this every morning on 1.4.230 (macOS, five saved Claude accounts) and traced it. The account is not signed out — only its usage check is failing, and the switcher words that failure as a sign-out.
What happens
Orca deliberately never refreshes a Claude login (Re-land Claude per-account folders (#24434, #26405) with the upgrade and proxy fixes #26801, claude-active-usage-fetch.ts); only a Claude process running in that account does. An account nobody runs keeps its ~8-hour access token past expiry, so the usage request returns 401 and is classified stale-token. The refresh token is still valid: running claude once in that account's folder refreshed it with no /login. That's why selecting the account and opening a tab "fixes" it.
applyStalePolicy keeps the last usage snapshot for only 30 minutes after a stale-token error (24 hours after a 429), so by the next morning there are no bars left to show.
InlineUsageBars then shows "Sign in to see usage" for any error without bars, ignoring failureKind, and the tooltip/roster label a saved account's stale-token as "Sign-in expired". The WSL System Default provenance (wsl:<distro>:system) also misses the existing System Default check.
Claude stale-token reads "Updates when Claude runs" on every surface; "Sign in to see usage" is kept for confirmed sign-outs only.
The last Claude usage snapshot is kept for 24 hours on stale-token, as it already is on 429, minus any window whose reset time has passed (no guessed 0%).
Activity
AmethystLiang commentedon Oct 18, 2026
looking into it
luijoc commentedon Oct 20, 2026
I hit this every morning on 1.4.230 (macOS, five saved Claude accounts) and traced it. The account is not signed out — only its usage check is failing, and the switcher words that failure as a sign-out.
What happens
claude-active-usage-fetch.ts); only a Claude process running in that account does. An account nobody runs keeps its ~8-hour access token past expiry, so the usage request returns 401 and is classifiedstale-token. The refresh token is still valid: runningclaudeonce in that account's folder refreshed it with no/login. That's why selecting the account and opening a tab "fixes" it.applyStalePolicykeeps the last usage snapshot for only 30 minutes after astale-tokenerror (24 hours after a 429), so by the next morning there are no bars left to show.InlineUsageBarsthen shows "Sign in to see usage" for any error without bars, ignoringfailureKind, and the tooltip/roster label a saved account'sstale-tokenas "Sign-in expired". The WSL System Default provenance (wsl:<distro>:system) also misses the existing System Default check.Fix: #31105 (keeps the no-refresh policy)
stale-tokenreads "Updates when Claude runs" on every surface; "Sign in to see usage" is kept for confirmed sign-outs only.stale-token, as it already is on 429, minus any window whose reset time has passed (no guessed 0%).fix(usage): an idle Claude account whose access token lapsed reads as…