Bug Description
The Telegram /model picker does not show gpt-5.4 or gpt-5.4-mini when selecting the openai-codex provider, even though both models are available and functional.
Root Cause
In hermes_cli/models.py, the _PROVIDER_MODELS dict hardcodes the OpenAI Codex model list:
_PROVIDER_MODELS = {
...
"openai-codex": ["gpt-5.3-codex", "gpt-5.2-codex", "gpt-5.1-codex-mini", "gpt-5.1-codex-max"],
...
}
This list was written for v0.7.0 and has not been updated to include gpt-5.4 and gpt-5.4-mini, which are now the current production models.
The list_authenticated_providers() function in model_switch.py uses _PROVIDER_MODELS to build the picker, not codex_models.get_codex_model_ids() which dynamically queries the Codex API/cache and correctly returns gpt-5.4.
Impact
/model Telegram picker shows no gpt-5.4 under openai-codex — users must know the exact model name
- Even when using
/model gpt-5.4 --provider openai-codex --global, hermes emits a false warning: "Could not reach OpenAI Codex API to validate gpt-5.4" — because validation falls back to _PROVIDER_MODELS membership check
Steps to Reproduce
- Configure hermes with openai-codex provider (authenticated via device code or CLI token import)
- In Telegram, send
/model
- Select
openai-codex from provider list
- Observe: only
gpt-5.3-codex, gpt-5.2-codex, gpt-5.1-codex-mini, gpt-5.1-codex-max are shown — no gpt-5.4
Workaround
By-pass the picker:
/model gpt-5.4 --provider openai-codex --global
This works despite the warning.
Suggested Fix
Option A (quick fix): Update _PROVIDER_MODELS["openai-codex"] in models.py to prepend current models:
"openai-codex": ["gpt-5.4", "gpt-5.4-mini", "gpt-5.3-codex", "gpt-5.2-codex", "gpt-5.1-codex-mini", "gpt-5.1-codex-max"],
Option B (proper fix): In list_authenticated_providers() / model_switch.py, replace the _PROVIDER_MODELS["openai-codex"] lookup with a call to codex_models.get_codex_model_ids(), which already handles dynamic discovery from the Codex API cache.
Environment
- Hermes Agent v0.7.0
- openai-codex provider (credential_pool, device_code source)
- Verified:
codex_models.get_codex_model_ids() returns ["gpt-5.4", "gpt-5.4-mini", ...] correctly
- Verified:
/model gpt-5.4 --provider openai-codex routes to the model successfully after the fix in _PROVIDER_MODELS
Bug Description
The Telegram
/modelpicker does not showgpt-5.4orgpt-5.4-miniwhen selecting theopenai-codexprovider, even though both models are available and functional.Root Cause
In
hermes_cli/models.py, the_PROVIDER_MODELSdict hardcodes the OpenAI Codex model list:This list was written for v0.7.0 and has not been updated to include
gpt-5.4andgpt-5.4-mini, which are now the current production models.The
list_authenticated_providers()function inmodel_switch.pyuses_PROVIDER_MODELSto build the picker, notcodex_models.get_codex_model_ids()which dynamically queries the Codex API/cache and correctly returnsgpt-5.4.Impact
/modelTelegram picker shows nogpt-5.4under openai-codex — users must know the exact model name/model gpt-5.4 --provider openai-codex --global, hermes emits a false warning:"Could not reach OpenAI Codex API to validate gpt-5.4"— because validation falls back to_PROVIDER_MODELSmembership checkSteps to Reproduce
/modelopenai-codexfrom provider listgpt-5.3-codex,gpt-5.2-codex,gpt-5.1-codex-mini,gpt-5.1-codex-maxare shown — nogpt-5.4Workaround
By-pass the picker:
This works despite the warning.
Suggested Fix
Option A (quick fix): Update
_PROVIDER_MODELS["openai-codex"]inmodels.pyto prepend current models:Option B (proper fix): In
list_authenticated_providers()/model_switch.py, replace the_PROVIDER_MODELS["openai-codex"]lookup with a call tocodex_models.get_codex_model_ids(), which already handles dynamic discovery from the Codex API cache.Environment
codex_models.get_codex_model_ids()returns["gpt-5.4", "gpt-5.4-mini", ...]correctly/model gpt-5.4 --provider openai-codexroutes to the model successfully after the fix in_PROVIDER_MODELS