hermes - 💡(How to fix) Fix [Feature]: Model allowlist — let users control which providers appear in /model list [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#16608Fetched 2026-04-28 06:52:16
View on GitHub
Comments
1
Participants
2
Timeline
7
Reactions
0
Author
Participants
Timeline (top)
labeled ×4cross-referenced ×2commented ×1

Fix Action

Fix / Workaround

  • Unconfigured providers pollute the list. OpenRouter, Anthropic, Copilot, MiniMax, etc. all appear even when the user only has DEEPSEEK_API_KEY set. Selecting them silently fails or throws auth errors.
  • The user cannot control what appears. There is no allowlist, no models block in config.yaml to restrict the picker.
  • OpenRouter is hardcoded as a first-class provider in the source. Users who don't use OpenRouter cannot remove it from their model list.
  • The current workaround is manual: users must remember which providers they have keys for and avoid selecting the others. No UI indication of "unconfigured" in the picker.

Code Example

{
  "agents": {
    "defaults": {
      "models": {
        "deepseek/deepseek-v4-pro": {},
        "deepseek/deepseek-chat": {}
      }
    }
  }
}

---

model:
  provider: deepseek
  model: deepseek-v4-pro
  allowlist:
    - deepseek/deepseek-v4-pro
    - deepseek/deepseek-chat
RAW_BUFFERClick to expand / collapse

Problem

Currently hermes model / /model shows all providers from the hardcoded _PROVIDER_MODELS catalog, regardless of whether the user has credentials configured for them.

This means:

  • Unconfigured providers pollute the list. OpenRouter, Anthropic, Copilot, MiniMax, etc. all appear even when the user only has DEEPSEEK_API_KEY set. Selecting them silently fails or throws auth errors.
  • The user cannot control what appears. There is no allowlist, no models block in config.yaml to restrict the picker.
  • OpenRouter is hardcoded as a first-class provider in the source. Users who don't use OpenRouter cannot remove it from their model list.
  • The current workaround is manual: users must remember which providers they have keys for and avoid selecting the others. No UI indication of "unconfigured" in the picker.

Related issues:

  • #15267 — Filter unconfigured providers from model selection UI
  • #14352 — Make /model autocomplete provider-aware and authenticated-only
  • #3227 — Sort configured providers first (partial fix, still shows all unconfigured)

OpenClaw solves this elegantly with agents.defaults.models — an explicit allowlist:

{
  "agents": {
    "defaults": {
      "models": {
        "deepseek/deepseek-v4-pro": {},
        "deepseek/deepseek-chat": {}
      }
    }
  }
}

Only listed models appear in /model.

Proposed Solution

Add a model.allowlist section to config.yaml:

model:
  provider: deepseek
  model: deepseek-v4-pro
  allowlist:
    - deepseek/deepseek-v4-pro
    - deepseek/deepseek-chat

Behavior:

  1. If allowlist is set → /model only shows those entries. Providers with zero allowed models are hidden.
  2. If allowlist is not set → current behavior (backward compatible; optionally sort configured-first as per #3227).
  3. hermes model interactive picker respects the allowlist.
  4. Gateway /model slash command respects the allowlist.

Why sorting alone (#3227) is insufficient

Sorting configured providers first helps, but:

  • The list is still 20+ entries for a user with 1–2 API keys.
  • Users must scroll past irrelevant entries every time.
  • No way to permanently hide a provider you explicitly don't want.

Scope

  • config.yaml schema: model.allowlist
  • CLI hermes model / TUI /model picker respects allowlist
  • Gateway /model slash command respects allowlist
  • Documentation update

extent analysis

TL;DR

Implementing a model.allowlist section in config.yaml can help filter out unconfigured providers from the model selection UI.

Guidance

  • Add a model.allowlist section to config.yaml to specify the allowed models, as shown in the proposed solution.
  • Verify that the /model UI and hermes model interactive picker respect the allowlist by checking that only the specified models are displayed.
  • If the allowlist is not set, the current behavior will be maintained, ensuring backward compatibility.
  • Consider updating the documentation to reflect the new model.allowlist configuration option.

Example

model:
  provider: deepseek
  model: deepseek-v4-pro
  allowlist:
    - deepseek/deepseek-v4-pro
    - deepseek/deepseek-chat

Notes

The proposed solution aims to address the issue of unconfigured providers polluting the model list, but it may not cover all edge cases. Further testing and verification are necessary to ensure the solution works as expected.

Recommendation

Apply the proposed workaround by implementing the model.allowlist section in config.yaml, as it provides a more elegant and user-controlled solution to filter out unconfigured providers.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix [Feature]: Model allowlist — let users control which providers appear in /model list [1 comments, 2 participants]