diff --git a/hermes_cli/models.py b/hermes_cli/models.py index cf3eb40edaaf..b1c948b98d9c 100644 --- a/hermes_cli/models.py +++ b/hermes_cli/models.py @@ -37,6 +37,7 @@ ("anthropic/claude-opus-4.8", ""), ("anthropic/claude-opus-4.8-fast", "2x price, higher output speed"), ("anthropic/claude-sonnet-4.6", ""), + ("anthropic/claude-sonnet-5", ""), ("anthropic/claude-haiku-4.5", ""), # OpenAI ("openai/gpt-5.5", ""), @@ -178,6 +179,7 @@ def _xai_curated_models() -> list[str]: # Anthropic "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", + "anthropic/claude-sonnet-5", "anthropic/claude-haiku-4.5", # OpenAI "openai/gpt-5.5", @@ -252,6 +254,7 @@ def _xai_curated_models() -> list[str]: "gpt-4o", "gpt-4o-mini", "claude-sonnet-4.6", + "claude-sonnet-5", "claude-sonnet-4", "claude-sonnet-4.5", "claude-haiku-4.5", @@ -339,6 +342,7 @@ def _xai_curated_models() -> list[str]: "MiniMax-M2", ], "anthropic": [ + "claude-sonnet-5", "claude-fable-5", "claude-opus-4-8", "claude-opus-4-7", @@ -377,6 +381,7 @@ def _xai_curated_models() -> list[str]: "moonshotai/Kimi-K2.5", "google/gemini-3.1-flash-lite-preview", "anthropic/claude-sonnet-4.6", + "anthropic/claude-sonnet-5", "openai/gpt-5.4", ], "opencode-zen": [ @@ -400,6 +405,7 @@ def _xai_curated_models() -> list[str]: "gpt-5-codex", "gpt-5-nano", "claude-fable-5", + "claude-sonnet-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", @@ -498,6 +504,7 @@ def _xai_curated_models() -> list[str]: # prefers live discovery via ListFoundationModels + ListInferenceProfiles. # Use inference profile IDs (us.*) since most models require them. "bedrock": [ + "us.anthropic.claude-sonnet-5", "us.anthropic.claude-sonnet-4-6", "us.anthropic.claude-opus-4-6-v1", "us.anthropic.claude-haiku-4-5-20251001-v1:0", diff --git a/plugins/model-providers/gmi/__init__.py b/plugins/model-providers/gmi/__init__.py index fb0220708038..a273bddb9cbd 100644 --- a/plugins/model-providers/gmi/__init__.py +++ b/plugins/model-providers/gmi/__init__.py @@ -24,6 +24,7 @@ "moonshotai/Kimi-K2.5", "google/gemini-3.1-flash-lite-preview", "anthropic/claude-sonnet-4.6", + "anthropic/claude-sonnet-5", "openai/gpt-5.4", ), ) diff --git a/tests/hermes_cli/test_models.py b/tests/hermes_cli/test_models.py index 2f087635662d..ef13c5f5326d 100644 --- a/tests/hermes_cli/test_models.py +++ b/tests/hermes_cli/test_models.py @@ -969,3 +969,20 @@ def test_real_catalog_model_unaffected(self): r = validate_requested_model("gpt-5.5", "openai-codex") assert r["accepted"] is True assert r["recognized"] is True + + +class TestClaudeSonnet5InCuratedLists: + """Regression: Claude Sonnet 5 must appear in curated model lists (#55846).""" + + def test_anthropic_native_list_includes_sonnet_5(self): + from hermes_cli.models import _PROVIDER_MODELS + assert "claude-sonnet-5" in _PROVIDER_MODELS["anthropic"] + + def test_openrouter_fallback_includes_sonnet_5(self): + from hermes_cli.models import OPENROUTER_MODELS + ids = [mid for mid, _ in OPENROUTER_MODELS] + assert "anthropic/claude-sonnet-5" in ids + + def test_nous_list_includes_sonnet_5(self): + from hermes_cli.models import _PROVIDER_MODELS + assert "anthropic/claude-sonnet-5" in _PROVIDER_MODELS["nous"] diff --git a/website/static/api/model-catalog.json b/website/static/api/model-catalog.json index 4b9597e8787b..f5c05b9cc7cf 100644 --- a/website/static/api/model-catalog.json +++ b/website/static/api/model-catalog.json @@ -1,6 +1,6 @@ { "version": 1, - "updated_at": "2026-06-16T18:04:33Z", + "updated_at": "2026-06-30T19:42:05Z", "metadata": { "source": "hermes-agent repo", "docs": "https://hermes-agent.nousresearch.com/docs/reference/model-catalog" @@ -24,6 +24,10 @@ "id": "anthropic/claude-sonnet-4.6", "description": "" }, + { + "id": "anthropic/claude-sonnet-5", + "description": "" + }, { "id": "anthropic/claude-haiku-4.5", "description": "" @@ -158,6 +162,9 @@ { "id": "anthropic/claude-sonnet-4.6" }, + { + "id": "anthropic/claude-sonnet-5" + }, { "id": "anthropic/claude-haiku-4.5" },