Issue
None.
Version and model info
None.
Problem
Free-tier and BYOK users hit vanishing model IDs and 402/credit errors. Onboarding still pins openrouter/deepseek/deepseek-r1:free. Related issues (#4289, #3264, #3936) show the pain; none implement a live catalog probe + explicit fallback when the selected model hard-fails.
Proposed approach
- Centralize failure classification in
exceptions.py / models send path.
- Add
suggest_free_fallback(model) using OpenRouter manager.
- Hook from base coder retry path; update onboarding default to "resolve at runtime" rather than a single pinned ID.
- Tests with fixtures for 404/402 and catalog stubs.
I'm happy to open a PR implementing this if the direction works for you.
Issue
None.
Version and model info
None.
Problem
Free-tier and BYOK users hit vanishing model IDs and 402/credit errors. Onboarding still pins
openrouter/deepseek/deepseek-r1:free. Related issues (#4289, #3264, #3936) show the pain; none implement a live catalog probe + explicit fallback when the selected model hard-fails.Proposed approach
exceptions.py/ models send path.suggest_free_fallback(model)using OpenRouter manager.I'm happy to open a PR implementing this if the direction works for you.