fix(codex): sweep the retired gpt-5.3-codex slug off every Codex-OAuth surface

What: the contributor's pick removes the slug from DEFAULT_CODEX_MODELS and the
forward-compat templates. This follow-up finishes the class on the sibling
surfaces that still taught users the retired slug:

- hermes_cli/cli_model_switch_mixin.py: `/model` -> openai-codex replaced an
  untouched default with the literal "gpt-5.3-codex" when live discovery failed;
  it now uses DEFAULT_CODEX_MODELS[0] so the fallback can never drift from the
  curated list again.
- run_agent.py: the Codex silent-hang hint no longer recommends the retired slug.
- website/docs (+ zh-Hans): the Codex OAuth vision/fallback examples used the
  retired slug and claimed a default that no longer exists (openai-codex has no
  implicit auxiliary model); examples now use gpt-5.4 and say to set `model`.
- tests: one invariant test pins the slug out of the curated list and every
  template tuple (#52492); hint/watchdog tests assert the retired slug is absent;
  catalog fixtures switched to live slugs.

Why: the ChatGPT Codex backend returns HTTP 400 "not supported when using Codex
with a ChatGPT account" for gpt-5.3-codex (#52492; second field report incl. the
official CLI on the #81558 thread, 2026-08-10). Same shape as e8955f222c, which
dropped gpt-5.2-codex / gpt-5.1-codex-max / gpt-5.1-codex-mini. Live discovery
still surfaces the slug if the backend re-enables it.
This commit is contained in:
teknium1
2026-09-19 00:45:32 -07:00
committed by Teknium
parent 82796e06d7
commit 3934fe551c
9 changed files with 32 additions and 16 deletions

View File

@@ -356,9 +356,10 @@ class CLIModelSwitchMixin:
# 2. Replace untouched default with a Codex model
if self._model_is_default:
fallback_model = "gpt-5.3-codex"
from hermes_cli.codex_models import DEFAULT_CODEX_MODELS, get_codex_model_ids
fallback_model = DEFAULT_CODEX_MODELS[0]
try:
from hermes_cli.codex_models import get_codex_model_ids
available = get_codex_model_ids(access_token=self.api_key if self.api_key else None)
if available:
fallback_model = available[0]