fix(models): list claude-opus-5 in the curated Anthropic catalog - #91678
justinjohnson25600 wants to merge 1 commit into
Conversation
Anthropic's /v1/models endpoint 401s subscription OAuth tokens (Claude Pro/Max), so the model picker always falls back to the curated _PROVIDER_MODELS["anthropic"] list for subscription users. That list skipped claude-opus-5 — present in OPENROUTER_MODELS, the nous catalog, opencode-zen, and reasoning_timeouts, but absent from the one list subscription pickers actually see. The model itself is fully supported (the anthropic adapter treats it as modern-contract by default; tests already exercise thinking-disable against it). Also add official-docs pricing for claude-opus-5, -fast (2x), and the 20260723 dated snapshot — same /5 line as 4.6-4.8, per the OpenRouter model metadata — and a regression test pinning the curated-list fallback for OAuth subscriptions. Fixes the symptom: Claude Max OAuth users don't see Opus 5 in /model.
Straightforward catalog addition, and the OAuth-fallback rationale in the new test is a nice touch. Minor items:
No blocking issues found — all three items are consistency/hygiene rather than functional regressions. — reviewer-b (automated review) |
|
Independent confirmation of the root cause on a real Claude Max OAuth install (macOS, Hermes v0.20.5, 6 profiles). Symptom reproduces exactly as described. 4 of my 6 profiles run Reading One extra data point that may be useful for reviewers evaluating impact: the fallback result is written to I'd been carrying the one-line curated addition as a local patch against my checkout since before finding this PR; it's a strict subset of what you have here (this PR additionally covers pricing entries and the OAuth-subscription regression test). Happy to see it fixed upstream instead — commenting rather than opening a competing PR, per CONTRIBUTING's duplicate guidance. Verified against |
|
Correction to my comment above — one claim was too broad, and the nuance turns out to be diagnostically useful. I wrote that for subscription tokens the curated list is the only path. That holds for the default configuration, but not when
With an explicit So the same OAuth credentials do reach Two things this doesn't change:
If it helps triage: the workaround for anyone blocked today is setting Apologies for the imprecision in my earlier comment; I verified the split only after posting it. |
|
The picker-catalog half of this landed via #106636 (merged as e306374): |
Summary
claude-opus-5was missing from the curated_PROVIDER_MODELS["anthropic"]list inhermes_cli/models.py— it is present inOPENROUTER_MODELS, thenouscatalog,opencode-zen, andreasoning_timeouts.py, but absent from the one list native-Anthropic pickers render./v1/modelsendpoint 401s subscription OAuth tokens (Claude Pro/Max), so for subscription users the picker always falls back to the curated list — hiding the current flagship entirely. (The model itself works fine when addressed directly.)claude-opus-5,claude-opus-5-fast(2x), and theclaude-opus-5-20260723dated snapshot — same $5/$25 line as 4.6-4.8, per the OpenRouter model metadata.tests/hermes_cli/test_anthropic_picker_curated.py).Root cause chain
hermes auth add anthropic --type oauth) and inference works — sessions run onclaude-opus-5.provider_model_ids("anthropic"), which tries the live/v1/modelsfetch first._fetch_anthropic_models()returnsNone.Test plan
pytest tests/hermes_cli/test_anthropic_picker_curated.py— 4 passed (3 existing + 1 new)pytest tests/agent/test_usage_pricing.py tests/agent/test_anthropic_thinking_disable.py tests/agent/test_anthropic_billing_guidance.py— 78 passed🤖 This PR was created with Hermes Agent