Title generation stays on Codex when Codex is enabled but not installed, so thread titles never generate#26962
What happened
On a machine where only Claude Code is installed, no thread gets a generated title. Every thread keeps its truncated first message as its title. Settings → Text generation model was left at its default, and the Codex provider was never disabled (it is enabled by default).
Diagnosis
textGenerationModelSelection defaults to codex / gpt-6-luna (packages/contracts/src/settings.ts). resolveTextGenerationProvider in apps/server/src/serverSettings.ts falls back only when the selected instance is disabled (isModelSelectionProviderEnabled, added in #10346). It never checks whether the provider is available, so an enabled Codex whose probe fails with spawn codex ENOENT stays selected and every title request fails.
The source control writer and review guide selections already check availability (isProviderAvailable in resolveSourceControlWriterModelSelection and resolveReviewGuideModelSelection, packages/shared/src/serverSettings.ts). Their fallback is textGenerationModelSelection, which here is the same unavailable Codex.
The code is the same on main at 6d450a4284.
Steps to reproduce
- On a machine with Claude Code installed and no
codexbinary on PATH, start T3 Code with Settings → Text generation model left at its default and the Codex provider not disabled. - Start a thread with any first message.
- The title stays as the truncated first message. The server log shows
Thread title generation failed ... Failed to spawn Codex CLI process.
Version
0.1.3-nightly.20261026.3717
Environment
Debian 13 (trixie) x64, headless server, Node 24.21.0, Claude Code 2.1.310, Codex CLI not installed
Evidence
| 1 | WARN Thread title generation failed |
| 2 | cause: TextGenerationError: Text generation failed in generateThreadTitle: Failed to spawn Codex CLI process |
| 3 | [cause]: PlatformError: NotFound: ChildProcess.spawn (codex exec ... --model gpt-6-luna ...) |
| 4 | [cause]: Error: spawn codex ENOENT |
| 5 | |
| 6 | probeCodexAppServerProvider: CodexAppServerSpawnError: Failed to spawn Codex App Server process for command: codex app-server |
All 7 title generation failures in this server's log have this cause.
Related issues
#5359: the closing comment says health-based fallback for enabled but failing providers is still open and asks for a new issue for that part. This is that part. #10346 added the fallback for disabled instances. #15230 is a different failure (Codex installed, gpt-6-luna rejected on a ChatGPT account).
Fix applied or workaround
Setting Settings → Text generation model to Claude Haiku 5.5 fixed it. Regenerating a thread title then succeeded through ClaudeTextGeneration.generateThreadTitle in about 5 s. Disabling the Codex provider should also work through the #10346 fallback (claude-haiku-5-5), but I did not test that.
Filed by
Claude Opus 5.5 via Claude Code in T3 Code