# NousResearch/hermes-agent · Custom provider model picker selection fixes

## Open now

- Nothing open on GitHub.

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.

## TL;DR

- 6 member(s): 0 open issue(s), 2 closed issue(s), 0 open PR(s), 1 merged PR(s), 3 PR(s) closed without merging.
- A fix was merged to main in PR #28860. Verify it addresses your case.
- **Recommended:** read PR #28860 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `partially_resolved` · deciding PR(s): `pr-28860`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.36`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #20810: Bugs
- #20811: Fix: \`is_current\` check fails for bare 'custom' provider in custom endpoints section

## Prior & competing PRs

- **#22473: fix(model-switch): mark bare-'custom' active row as current in picker**. closed without merge · fix tier `suggested`
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#20824`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#28860: fix(model-switch): mark bare custom provider as current**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `hermes_cli/model_switch.py`, `tests/hermes_cli/test_model_switch_custom_providers.py`
  - fix hunks:
  - `hermes_cli/model_switch.py`

    ```diff
    @@ -1720,7 +1720,10 @@ def _has_aws_sdk_creds_for_listing(slug: str) -> bool:
                 results.append({
                     "slug": slug,
                     "name": grp["name"],
    -                "is_current": slug == current_provider,
    +                "is_current": slug == current_provider or (
    +                    bool(current_base_url)
    +                    and _grp_url_norm == current_base_url.strip().rstrip("/").lower()
    +                ),
                     "is_user_defined": True,
                     "models": grp["models"],
                     "total_models": len(grp["models"]),
    ```
  - `tests/hermes_cli/test_model_switch_custom_providers.py`

    ```diff
    @@ -343,6 +343,7 @@ def test_list_authenticated_providers_bare_custom_slug_recovers(monkeypatch):
         group = matches[0]
         # Canonical slug, NOT the bare "custom" that caused #17478
         assert group["slug"] == "custom:ollama"
    +    assert group["is_current"] is True
     
     
     def test_list_authenticated_providers_distinct_endpoints_stay_separate(monkeypatch):
    ```
- **#20934: fix(model-picker): is_current fails for bare 'custom' provider**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#20824`
- **#23559: fix(model-switch): mark bare custom provider as current**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#28860`

## Fix status

- Merged to main in PR #28860 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-05-19`.
