Skip to content

Bug: model aliases are not reflected in Codex picker display names #2959

Description

@terrytan95

Client or integration

Codex App

Area

Catalog / models

Summary

Provider and model aliases added by #2463 / PR #2610 resolve requests correctly, but the Codex model picker still shows each routed model's full canonical provider/model id. The original feature explicitly expected the picker to show the provider-qualified alias.

The catalog path never consumes effectiveModelAliases(): routed rows reach catalog generation without CatalogModel.displayName, so display_name falls back to the canonical slug. /v1/models.alias_of does not fix this because Codex App reads the shared catalog / app-server model/list display metadata.

Expected: the picker displays the qualified effective alias (for example google-antigravity/gemini-3.7 or cursor/grok) while the canonical slug, upstream model id, routing target, usage keys, and persisted selectors remain unchanged.

Image Image Image

Reproduction

  1. Configure a static routed model and a model alias:

    {
      "providers": {
        "google-antigravity": {
          "adapter": "google",
          "liveModels": false,
          "models": ["gemini-3.7-flash"],
          "modelAliases": { "gemini-3.7-flash": "gemini-3.7" }
        }
      }
    }
  2. Sync/restart OpenCodex so it converges the Codex catalog.

  3. Open the Codex App model picker.

  4. Observe google-antigravity/gemini-3.7-flash instead of google-antigravity/gemini-3.7.

A deterministic current-dev reproduction also calls gatherRoutedModels() followed by buildCatalogEntries() and observes:

actual display_name:   google-antigravity/gemini-3.7-flash
expected display_name: google-antigravity/gemini-3.7

The routing slug remains google-antigravity/gemini-3.7-flash in both cases.

Version

2.35.0 and current dev commit 47b8d164366b9db9e4331b2bb8b542db22766910

Operating system

macOS 27.0 (26A5421a)

Provider and model

google-antigravity / gemini-3.7-flash; the same gap affects explicit and built-in aliases on other routed providers.

Logs or error output

No runtime error. Alias routing succeeds; only the Codex catalog display_name is wrong.

Screenshots and supporting files

The Codex picker shows native Luna/Sol marketing labels but full canonical ids for routed providers. Luna/Sol are not evidence that aliases work: those native rows already carry upstream display_name metadata.

Redacted configuration

{
  "defaultModelAliases": true,
  "providers": {
    "google-antigravity": {
      "defaultAliases": false,
      "modelAliases": {
        "gemini-3.7-flash": "gemini-3.7"
      }
    },
    "fireworks": {
      "modelAliases": {
        "accounts/fireworks/models/glm-5p3-flash": "GLM-5.3-Flash"
      }
    }
  }
}

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions