[Bug]: Hidden project default bypasses global default and silently selects another model#17556

openedOct 9, 2026byRReston

Before submitting

  • I searched existing issues and did not find a duplicate of this specific reproduction.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Use the Codex provider in T3 Code Desktop.
  2. Set the global default model to GPT-6.1-Sol (gpt-6.1-sol).
  3. Leave a project's default model set to GPT-5.6-Sol (gpt-5.6-sol). This can be an older project override retained after changing the global default.
  4. Hide GPT-5.6-Sol in the Codex model picker preferences. Keep GPT-6.1-Sol and GPT-6-Astra visible.
  5. Open a new chat in that project and inspect the model selected in the composer.

Expected behavior

If the configured project model is hidden and T3 decides not to use it, the new chat should use the valid, visible global default, GPT-6.1-Sol.

Alternatively, show the hidden project default and require an explicit choice. The composer should explain why the configured default cannot be used and make the project override easy to inspect or reset.

Actual behavior

The new-chat composer selects GPT-6-Astra (gpt-6-astra) instead of the configured global default, GPT-6.1-Sol. The fallback does not explain that an older, hidden project override caused the selection.

Changing the global default alone therefore appears ineffective for this project. Users must inspect the project override or manually choose their intended model when opening a chat.

Impact

Minor bug or occasional failure

New chats select an unintended model. Users can miss the change and begin work with different model capabilities or subscription usage than intended.

Version or commit

0.0.46-nightly.20261009.2873

Environment

Linux x64; T3 Code Desktop nightly; Codex provider.

Logs or stack traces

No crash or stack trace was captured. The relevant configuration at the time of the report was:

json
1{
2 "globalDefaultModelSelection": {
3 "instanceId": "codex",
4 "model": "gpt-6.1-sol"
5 },
6 "projectDefaultModelSelection": {
7 "instanceId": "codex",
8 "model": "gpt-5.6-sol"
9 },
10 "hiddenModelsForCodex": [
11 "gpt-5.6-terra",
12 "gpt-5.6-luna",
13 "gpt-5.5",
14 "gpt-5.6-sol"
15 ]
16}

Screenshots, recordings, or supporting files

No screenshot or recording is attached. The desktop behavior was reported by the user; the saved global/project selections, hidden-model preferences, and installed application bundle were inspected read-only. A fresh UI reproduction was not captured.

The bundled selection code supports the following explanation:

  • Project settings take precedence over the global default when choosing the initial model for a new chat.
  • Model visibility preferences remove hidden models from the candidate list.
  • When the configured model cannot be matched, the instance selection resolver chooses the provider's default model or its first available model. It does not retry the global default.
  • In this build, DEFAULT_MODEL is gpt-6-astra, and PREFERRED_DEFAULT_CODEX_MODELS ranks it first. applyPreferredCodexDefaultModel marks that model as the Codex provider default when it is available.

This explains how the hidden GPT-5.6-Sol project override leads to Astra even though the global default is a valid, visible GPT-6.1-Sol.

Related: https://github.com/pingdotgg/t3code/issues/16526 describes a similar silent fallback for an unresolved model in an existing Cursor thread. This report supplies the hidden-project-default reproduction for new Codex chats.

Workaround

Set the project's default model to GPT-6.1-Sol, or remove the project override so that new chats inherit the global default.