Skip to content

[Desktop] Luna Reserve collapses model picker to Reserve only, hiding custom/routed models after native quota exhaustion #42830

Description

@PracticalSwan

Summary

On Windows Codex Desktop 26.901.4073.0 (bundled CLI 0.153.1), exhausting the normal ChatGPT Codex quota activates Luna Reserve as expected, but the Desktop model picker then stops exposing other otherwise-available models. This includes custom/routed models backed by independent providers and independent quota.

This appears distinct from the existing Luna Reserve entitlement/write issues: the app-server still reports the custom models as visible and usable in model/list; the Desktop UI removes them only after Reserve mode becomes active.

Environment

  • Windows 11 x64
  • Codex Desktop: 26.901.4073.0
  • bundled codex-cli: 0.153.1
  • ChatGPT authentication
  • custom model catalog supplied through a local OpenAI-compatible router

Reproduction

  1. Start with normal Codex quota available. Custom/routed models are visible in the Desktop model picker.
  2. Exhaust the normal Codex quota.
  3. The account rate-limit state changes to normal Codex usage disallowed, while an additional gpt-reserve (base_model_inference) bucket remains allowed and rate_limit_upsell.banner_type becomes luna_reserve.
  4. Luna Reserve activates.
  5. Open the Desktop model picker.

Actual

The picker is reduced to the Reserve/Luna model. Custom/routed models disappear and cannot be selected, even though the app-server's current model/list still returns them as visible and without lock/upgrade/availability restrictions.

For example, during the exhausted state I verified that model/list still returned routed models such as zai-coding/glm-5.3, zai-coding/glm-5.2, and zai-coding/glm-5-turbo as visible, alongside native models. The router's merged catalog also still marked those models visible.

Expected

Activating Luna Reserve should provide the native Reserve fallback without globally suppressing custom/provider-backed models that do not consume the exhausted native Codex quota. The picker should retain independently available models, or quota gating should be scoped only to models that actually depend on the exhausted Codex allowance.

Root-cause evidence

I reproduced this without sending an inference request. A read-only app-server probe showed:

  • primary Codex rate-limit bucket: exhausted / disallowed
  • additional gpt-reserve bucket: allowed
  • upsell banner type: luna_reserve
  • model/list: custom/routed models still visible

I also inspected the packaged Desktop renderer logic. In the Luna Reserve-active branch, the picker first obtains the normal model list, then replaces that list with only the first Reserve/Luna entry. Separately, the composer model is overridden to gpt-reserve while Reserve is active. This explains why custom models remain present in the app-server catalog but disappear in Desktop.

The custom router has no Luna/Reserve-specific picker logic, and no catalog visibility mutation occurs when the quota transition happens.

Related issues

Potentially related but different behavior:

This report is specifically about Reserve activation globally collapsing the Desktop model picker and hiding independent custom/routed models.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions