{"repo":"NousResearch/hermes-agent","public_id":"20810","display_label":"Custom provider model picker selection fixes","summary":"A cluster of fixes targeting how bare or custom providers are identified, matched, grouped, and marked as active in the model picker. All members relate to correctness of custom provider handling in model selection UI and logic.","subsystem":null,"counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":2,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":28860},"resolution":{"state":"partially_resolved","by":"pr-28860"},"freshness":{"state":"verified","last_verified_at":"2026-05-19T17:57:35+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3573333333333333},"fix_edges":[{"issue_number":20811,"pr_number":28860,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":20810,"title":"Bugs","url":null,"state":"closed"},{"kind":"issue","number":20811,"title":"Fix: `is_current` check fails for bare 'custom' provider in custom endpoints section","url":null,"state":"closed"},{"kind":"pr","number":20934,"title":"fix(model-picker): is_current fails for bare 'custom' provider","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#20824","number":20824}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":22473,"title":"fix(model-switch): mark bare-'custom' active row as current in picker","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#20824","number":20824}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":23559,"title":"fix(model-switch): mark bare custom provider as current","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#28860","number":28860}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":28860,"title":"fix(model-switch): mark bare custom provider as current","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/model_switch.py","tests/hermes_cli/test_model_switch_custom_providers.py"],"fix_hunks":[{"file":"hermes_cli/model_switch.py","hunks":["@@ -1720,7 +1720,10 @@ def _has_aws_sdk_creds_for_listing(slug: str) -> bool:\n             results.append({\n                 \"slug\": slug,\n                 \"name\": grp[\"name\"],\n-                \"is_current\": slug == current_provider,\n+                \"is_current\": slug == current_provider or (\n+                    bool(current_base_url)\n+                    and _grp_url_norm == current_base_url.strip().rstrip(\"/\").lower()\n+                ),\n                 \"is_user_defined\": True,\n                 \"models\": grp[\"models\"],\n                 \"total_models\": len(grp[\"models\"]),"]},{"file":"tests/hermes_cli/test_model_switch_custom_providers.py","hunks":["@@ -343,6 +343,7 @@ def test_list_authenticated_providers_bare_custom_slug_recovers(monkeypatch):\n     group = matches[0]\n     # Canonical slug, NOT the bare \"custom\" that caused #17478\n     assert group[\"slug\"] == \"custom:ollama\"\n+    assert group[\"is_current\"] is True\n \n \n def test_list_authenticated_providers_distinct_endpoints_stay_separate(monkeypatch):\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}