[Bug] CLI shows "use credits" prompt on an org-managed Team seat that actually has subscription entitlement (`hasAvailableSubscription` cached as false)
Bug Description
On an org-managed Team seat, the CLI intermittently prompts to continue on credits / pay-as-you-go instead of using the included subscription usage. The subscription entitlement clearly exists (see proof below), so this looks like a client-side gating bug driven by a stale/misinterpreted hasAvailableSubscription: false value, not a real entitlement gap.
Environment Info
- Account state in
~/.claude.json:subscriptionType: null,hasAvailableSubscription: false - Platform: darwin
- Terminal: ghostty
- Version: 2.1.216
- Feedback ID: 3dcac900-992e-4eaf-9d41-7867d5c8a2e3
Actual behavior
- With
hasAvailableSubscription: false(the value the client keeps writing), the CLI shows a "use credits" prompt for model requests (observed most visibly when selecting Fable 5; default model at the time wasclaude-opus-4-8[1m]). - Setting the flag to
truelocally fixes it — until the next account-status sync (new session start / auth-token refresh / periodic refresh, and note the CLI, the background daemon, and the desktop app's embedded engine all share~/.claude.json) overwrites it back tofalse, and the credit prompt returns.
Expected behavior
An org-managed Team seat that has working subscription entitlement should use included subscription usage in the CLI without a credit prompt — consistent with the desktop app on the same account. hasAvailableSubscription being false for an org-provided seat should not, on its own, force the credits path.
Steps to reproduce
- Sign in to the CLI with an org-managed Team seat (OAuth), org role
user. - Confirm
jq '.hasAvailableSubscription' ~/.claude.jsonreturnsfalsewhile the same account uses models fine on the desktop app. - Use a model in the CLI → observe the "use credits" prompt.
- Set
hasAvailableSubscription: truein~/.claude.json→ CLI now uses the subscription with no prompt. - Start a new session / wait for a refresh → the flag reverts to
falseand the prompt returns.
Hypothesis (unconfirmed)
hasAvailableSubscription may track personal available subscription and is legitimately false for an org-provided seat, while usage is granted via the org seat. If a code path uses this flag to decide whether to show the credits prompt, org-seat users get incorrectly gated. (Field semantics inferred, not confirmed from docs.)
Workaround
Manually setting hasAvailableSubscription: true in ~/.claude.json works but is not durable — it is overwritten on the next server sync.
Errors
[]This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗