fix: copilot provider shows 0 models in Telegram/Discord model picker#6492
Closed
HearthCore wants to merge 1 commit into
Closed
fix: copilot provider shows 0 models in Telegram/Discord model picker#6492HearthCore wants to merge 1 commit into
HearthCore wants to merge 1 commit into
Conversation
The Telegram/Discord model picker showed 'GitHub Copilot (0 models)'
because list_authenticated_providers() had a slug mismatch:
- HERMES_OVERLAYS key is 'github-copilot' (models.dev ID)
- Curated model list key is 'copilot' (Hermes provider ID)
- Config uses provider: copilot
This caused:
1. curated.get('github-copilot') -> empty (key is 'copilot')
2. is_current check 'github-copilot' == 'copilot' -> False
Fix: add reverse mapping from models.dev IDs to Hermes provider IDs
so the overlay iteration resolves slugs correctly. Also check
credential pool under both keys.
This was referenced Apr 9, 2026
teknium1
added a commit
that referenced
this pull request
Apr 10, 2026
HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but
_PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs
('copilot'). list_authenticated_providers() Section 2 was using the
overlay key directly for model lookups and is_current checks, causing:
- 0 models shown for copilot, kimi, kilo, opencode, vercel
- is_current never matching the config provider
Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate
overlay keys to Hermes slugs before curated list lookup and result
construction. Also adds 'kimi-for-coding' alias in auth.py so the
picker's returned slug resolves correctly in resolve_provider().
Fixes #5223. Based on work by HearthCore (#6492) and linxule (#6287).
Co-authored-by: HearthCore <HearthCore@users.noreply.github.com>
Co-authored-by: linxule <linxule@users.noreply.github.com>
teknium1
added a commit
that referenced
this pull request
Apr 10, 2026
HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but
_PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs
('copilot'). list_authenticated_providers() Section 2 was using the
overlay key directly for model lookups and is_current checks, causing:
- 0 models shown for copilot, kimi, kilo, opencode, vercel
- is_current never matching the config provider
Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate
overlay keys to Hermes slugs before curated list lookup and result
construction. Also adds 'kimi-for-coding' alias in auth.py so the
picker's returned slug resolves correctly in resolve_provider().
Fixes #5223. Based on work by HearthCore (#6492) and linxule (#6287).
Co-authored-by: HearthCore <HearthCore@users.noreply.github.com>
Co-authored-by: linxule <linxule@users.noreply.github.com>
Contributor
|
Merged via PR #7373. Your slug-mismatch analysis and reverse-mapping approach were the basis for the fix — cherry-picked the core logic, cleaned up the redundant credential check block, and skipped the model list expansion. Your authorship is preserved as co-author. Thanks HearthCore! |
4 tasks
Tommyeds
pushed a commit
to Tommyeds/hermes-agent
that referenced
this pull request
Apr 12, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
angelburgosrosado
pushed a commit
to angelburgosrosado/hermes-agent
that referenced
this pull request
Apr 28, 2026
HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but
_PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs
('copilot'). list_authenticated_providers() Section 2 was using the
overlay key directly for model lookups and is_current checks, causing:
- 0 models shown for copilot, kimi, kilo, opencode, vercel
- is_current never matching the config provider
Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate
overlay keys to Hermes slugs before curated list lookup and result
construction. Also adds 'kimi-for-coding' alias in auth.py so the
picker's returned slug resolves correctly in resolve_provider().
Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287).
Co-authored-by: HearthCore <HearthCore@users.noreply.github.com>
Co-authored-by: linxule <linxule@users.noreply.github.com>
ulasbilgen
pushed a commit
to ulasbilgen/hermes-adhd-agent
that referenced
this pull request
May 1, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
02356abc
pushed a commit
to 02356abc/hermes-agent
that referenced
this pull request
May 14, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
olympus-terminal
pushed a commit
to olympus-terminal/hermes-agent
that referenced
this pull request
May 16, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
gweeteve
pushed a commit
to gweeteve/hermes-agent
that referenced
this pull request
Jun 2, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
Egavasyug
pushed a commit
to Egavasyug/hermes-agent
that referenced
this pull request
Jun 10, 2026
…earch#7373) HERMES_OVERLAYS keys use models.dev IDs (e.g. 'github-copilot') but _PROVIDER_MODELS curated lists and config.yaml use Hermes provider IDs ('copilot'). list_authenticated_providers() Section 2 was using the overlay key directly for model lookups and is_current checks, causing: - 0 models shown for copilot, kimi, kilo, opencode, vercel - is_current never matching the config provider Fix: build reverse mapping from PROVIDER_TO_MODELS_DEV to translate overlay keys to Hermes slugs before curated list lookup and result construction. Also adds 'kimi-for-coding' alias in auth.py so the picker's returned slug resolves correctly in resolve_provider(). Fixes NousResearch#5223. Based on work by HearthCore (NousResearch#6492) and linxule (NousResearch#6287). Co-authored-by: HearthCore <HearthCore@users.noreply.github.com> Co-authored-by: linxule <linxule@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the interactive model picker (Telegram / Discord) showing "GitHub Copilot (0)" instead of listing the 28 available Copilot models.
Related issues: #5910 (remaining slug mismatch after import fix), #5223 (overlay providers omitted from gateway
/model), #6455 (companion to GHE Copilot support PR #6468)Root Cause
list_authenticated_providers()inhermes_cli/model_switch.pyhas a slug mismatch between three layers:HERMES_OVERLAYS"github-copilot"(models.dev ID)_PROVIDER_MODELScurated list"copilot"(Hermes provider ID)config.yamlprovider:"copilot"is_currentcomparisonIn Section 2 of
list_authenticated_providers(), the overlay iteration usespid = "github-copilot"as-is for:curated.get("github-copilot")→[](key is"copilot") → 0 models"github-copilot" == "copilot"→ FalseThis pattern affects all overlay providers where the models.dev key differs from the Hermes slug — confirmed for Copilot, likely also
kimi-for-codingvskimi-codingand others.Fix
Added a reverse mapping from models.dev IDs back to Hermes provider IDs (
PROVIDER_TO_MODELS_DEVinverted), so:"github-copilot"resolves to"copilot"for curated list lookups → 28 models ✓slugis set to"copilot"sois_currentmatches config → True ✓seen_slugstracks both the overlay key and Hermes slug to prevent duplicatesBefore / After
GitHub Copilot (0)✓ GitHub Copilot (28)is_currentFalseTrueTesting
list_authenticated_providers(current_provider="copilot", max_models=50)— returns 28 models with correct slug andis_current=TruePlatform
Tested on Linux (WSL2/Debian).
Files Changed
hermes_cli/model_switch.pylist_authenticated_providers()