[BUG] /model picker offers no route to entitled Fable 5 when the catalogue's only Fable row is a restricted Fable 5.1 (2.1.259, Claude Enterprise)

Status Open
Reported on v2.1.259
Maintainer reply None cached
Activity 0 comments · opened Sep 3, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet (nearest is #91852, the mirror case - see below)
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

On a Claude Enterprise seat (organization role user) where the organization grants Fable 5 but restricts Fable 5.1, the model picker offers no Fable option at all - the entitled model is unreachable through the UI.

State in ~/.claude.json:

  • modelAccessCache: claude-fable-5 → entitled: true; claude-fable-5-1 → entitled: false
  • additionalModelOptionsCache holds a single Fable row: {"value": "claude-fable-5-1[1m]", "label": "Fable", "description": "Fable 5.1 · Most capable for your hardest and longest-running tasks"}

The picker (VS Code extension panel) shows no selectable Fable entry. The typed alias path behaves differently and proves the client knows the fallback:

  • /model fable → Model "fable" is restricted by your organization's settings. Using claude-fable-5 instead. - and the session works on Fable 5.
  • /model claude-fable-5 → succeeds directly.

So the picker reflects only the single catalogue row and never applies the substitution the alias path applies. This looks like the mirror image of #91852 (same version, opposite direction: there the catalogue's only row is claude-fable-5[1m] and the entitled 5.1 is missing from the picker). In both cases the picker tracks the catalogue row, not the entitlements.

Not a stale cache: a full logout/login (fresh keychain credential; profileFetchedAt, additionalModelOptionsAnsweredAt, and cachedUsageUtilization all re-fetched within one second of the new credential's creation) reproduces the identical state. Nothing local restricts models (no managed-settings.json, no model key in settings, orgModelDefaultCache: null).

What Should Happen?

The picker should offer the Fable version the account is entitled to - either the catalogue should include a claude-fable-5 row when 5.1 is restricted, or the picker should apply the same entitlement fallback the /model <alias> path already applies.

Error Messages/Logs

Model "fable" is restricted by your organization's settings. Using claude-fable-5 instead.
Set model to `Fable 5` for this session only · Draws from usage credits

Steps to Reproduce

  1. Use a Claude Enterprise seat whose organization grants claude-fable-5 and restricts claude-fable-5-1 (visible in modelAccessCache in ~/.claude.json).
  2. Open the model picker in the VS Code extension (or CLI /model list): no Fable entry is offered.
  3. Type /model fable: the client substitutes Fable 5 and says so.
  4. Type /model claude-fable-5: works directly.

Claude Code Version

2.1.259 (Claude Code), VS Code extension native binary, darwin-arm64

Platform

Anthropic API (Claude Enterprise subscription, keychain OAuth login)

Operating System

macOS

Terminal/Shell

VS Code extension panel

Additional Information

Secondary observation, possibly the #81350 family with a different trigger: the /model confirmation appends "Draws from usage credits", but measured usage meters to plan pools. Between two cachedUsageUtilization fetches ~15 minutes apart spanning only Fable 5 activity: session 28→34 %, weekly (all models) 54→55 %, weekly Fable-scoped 4→5 %, while extra_usage.used_credits stayed at 0. additionalModelCostsCache is {} even immediately after a fresh login, which may be what drives the label fallback. Reported as a datapoint on #81350; mentioned here because it suggests the Fable catalogue metadata for this account is incomplete overall.

View original on GitHub ↗