Claude Code can now automatically recheck and overturn a cached 'model access denied' result during a session
What
When Claude Code decides a model isn't accessible and caches that denial, it now tracks this in a new per-session state object called sessionModelDenyReprobe. This replaces the older fields that used to track this (lastGoodAntOverrideConfig and antCapabilitiesByModelId).
The new state tracks:
- Which models have been confirmed accessible (
honoredModels) - Denials that are contested and being rechecked (
contestedDenies) - Models that were genuinely refused (
refusedModels) - A generation counter and a restricted flag
The logic that checks model access was rewritten to use this state: it can mark a cached denial as contested and kick off an asynchronous recheck ('reprobe') that can overturn a previously cached denial if the model turns out to be accessible after all.
Why
Previously, once a model was cached as denied, Claude Code might keep treating it as unavailable even if that access actually became valid again. The reprobe system lets a stale denial get corrected automatically instead of requiring a restart or manual retry.
The finding does not say what user-visible behavior this bookkeeping change produces.