Skip to content

Prevent stale GPT-5.2 fallback in the official Codex model picker after route restore #104

Open

Description

@NOirBRight

Problem

After switching CodexHub from the Gateway route back to the official Codex route and cold-starting Codex Desktop, the model picker can show an extra 5.2 entry even though the current official Codex model list for this account does not expose GPT-5.2.

This must remain distinct from the third-party glm-5.2 model.

Current evidence

  • The restarted client is using the official chatgpt.com/backend-api/codex route and WebSocket Responses transport.
  • The freshly fetched official model cache for Codex client 0.144.0 exposes seven list-visible models: gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4, gpt-5.4-mini, and gpt-5.3-codex-spark; it does not contain gpt-5.2.
  • The official visible-Task creation capability advertises the same seven models and does not advertise GPT-5.2.
  • Codex's bundled fallback model catalog still contains a list-visible gpt-5.2 entry.
  • During the route-restore cold start, remote model refresh initially failed with timeout waiting for child process to exit; a later online refresh wrote the correct official cache.

Working hypothesis

The picker initialized from the bundled fallback catalog while the online refresh was unavailable, then failed to remove the legacy GPT-5.2 item after the official catalog became available. This is not yet a confirmed ownership assignment between Codex Desktop and CodexHub's client-restore lifecycle.

Scope

  • Reproduce Gateway -> official route -> cold start with both a fresh and an existing model cache.
  • Correlate the picker contents with bundled fallback, online model cache, and model-manager refresh events.
  • Determine whether CodexHub leaves stale client/catalog state or merely exposes an upstream Codex reconciliation defect.
  • If CodexHub owns the state, restore the official client without leaving unsupported picker entries.
  • If upstream owns it, document a bounded CodexHub recovery/workaround and retain evidence suitable for an upstream report.

Acceptance criteria

  • A deterministic reproduction distinguishes the bundled fallback list from the account's online official list.
  • After official route restoration and online refresh, the picker matches the current official list and does not retain unsupported GPT-5.2.
  • Existing thread history that used GLM-5.2 or historical GPT-5.2 is preserved.
  • gpt-5.2, gpt-5.2-codex, and third-party glm-5.2 remain distinct identities.
  • Tests or replay evidence cover refresh timeout followed by a successful catalog refresh.

Exclusions

  • Do not change OpenAI model availability or entitlements.
  • Do not delete thread history or the state database as a workaround.
  • Do not alias GPT-5.2 to GLM-5.2.

Activity

  1. added
    bugSomething isn't working
    needs-triageMaintainer needs to evaluate this issue
    on Jul 12, 2026
  2. added
    P1Priority 1: current iteration goal
    and removed
    needs-triageMaintainer needs to evaluate this issue
    on Jul 25, 2026
  3. NOirBRight commented on Jul 25, 2026

    @NOirBRight
    OwnerAuthor

    Coordinator triage for the 0.1.7 window (2026-07-25): recommend defer
    implementation unless one bounded current-version observation reproduces
    CodexHub-owned residue
    .

    Why:

    • The report's only runtime evidence is Codex 0.144.0; there is no current-dev
      or Codex 0.145.0 replay.
    • Current restore logic removes CodexHub provider/catalog residue, including
      model_catalog_json (src-python/config_overlay.py), and current tests cover
      those cleanup boundaries.
    • PR Fix Codex native cache publication race #212 changed the relevant lifecycle by waiting for a readable, stable
      native model cache before stopping app-server.
    • Codex 0.145 still has a bundled list-visible GPT-5.2 fallback, while its
      successful online refresh replaces the in-memory fallback catalog. Picker UI
      reconciliation after that replacement is upstream-owned unless CodexHub
      residue is demonstrated.
    • There is currently no evidence that route restore leaves unsupported picker
      state, nor a CodexHub seam that can directly assert Desktop picker contents.

    Minimal decision observation:

    1. On current dev with Codex 0.145, perform Gateway → Restore Official → fully
      cold-start Desktop.
    2. Record only model identities/timestamps from restored config, native cache,
      model/list, and the picker before/after one successful online refresh.
    3. Keep this in 0.1.7 implementation scope only if CodexHub residue or a
      route-specific cache transition reproduces GPT-5.2. Otherwise retain it as
      an upstream observation and remove it as a release blocker.

    No code change or broad test is justified before that observation. Issue
    remains ready-for-human; this comment is a keep/defer recommendation, not a
    claim that the acceptance criteria passed.

  4. NOirBRight commented on Jul 25, 2026

    @NOirBRight
    OwnerAuthor

    0.1.7 triage disposition — deferred

    Decision: defer from 0.1.7 to 0.1.9 / needs-info.

    Evidence:

    • The report has no current-dev reproduction or post-fix observation; its original evidence is from Codex 0.144.0.
    • Current restore logic removes CodexHub provider/catalog residue, including model_catalog_json, and the maintained Official catalog excludes GPT-5.2.
    • PR Fix Codex native cache publication race #212 changed the native-cache lifecycle by waiting for a readable, stable cache before terminating app-server.
    • Codex 0.145.0 replaces its in-memory fallback catalog after successful ChatGPT refresh; remaining cross-provider picker reconciliation is upstream-owned.

    This is not a 0.1.7 release blocker without a current-version reproduction. To reactivate, capture one bounded current-dev/Codex-0.145 cold-start observation after Gateway → Restore Official, correlating restored config, native cache, model/list, and visible picker IDs/timestamps. Promote only if CodexHub residue or a CodexHub-specific transition reproduces GPT-5.2.

  5. added
    needs-infoWaiting on reporter for more information
    and removed on Jul 25, 2026
  6. removed
    P1Priority 1: current iteration goal
    on Aug 2, 2026
  7. NOirBRight commented on Aug 2, 2026

    @NOirBRight
    OwnerAuthor

    This was generated by AI during triage.

    Roadmap disposition

    Keep #104 in 0.1.9 with needs-info. Beta1's #303 and Beta2's #273/#274 do not prove this old Direct-Official picker-cache claim, and no current-version CodexHub-owned residue has been reproduced. P1 is removed because 0.1.8 is the active iteration. Reactivate only with the bounded current-version observation already requested in the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-infoWaiting on reporter for more informationwayfinder:researchWayfinder evidence or research ticket

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions