{"version":"2.1.220","anchor":"opus-5-is-skipped-when-the-client-cannot-see-model-entitleme","canonical_anchor":"opus-5-is-skipped-when-the-client-cannot-see-model-entitleme","heading":"Opus 5 is skipped when the client cannot see model entitlements","tier":"notice","area":"Model Fallback","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.220\/e\/opus-5-is-skipped-when-the-client-cannot-see-model-entitleme","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.220","markdown":"### Opus 5 is skipped when the client cannot see model entitlements\n\nIf your session has no model access info cached, Claude won't fall back to Opus 5.\n\n**What**\n\nA new predicate detects sessions where Claude Code has no entitlement data at all, and the Opus lineup walk used for refusal fallback filters Opus 5 out in that state.\n\n**Details**\n\n- `isEntitlementOverlayUnavailable` returns true when the provider is first-party, an OAuth token is stored, the profile scope is absent, no Anthropic API key is set, and the cached model-access list is empty.\n- A helper combines that predicate with a canonical-name check against \"claude-opus-5\"; the candidate scan becomes `.find((n) => N1e(lo(n)) && !u2c(n) && r(n))`, and a sibling helper substitutes \"claude-opus-4-8\" in its place.\n- No remote flag is involved. It is driven purely by runtime auth and cache state, so a first-party OAuth session with an empty entitlement cache will not auto-pick Opus 5 as a fallback target.\n\n**Evidence**\n\n`isEntitlementOverlayUnavailable`\n\n- Area: Model Fallback\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 0\/5"}