Title generation stays on Codex when Codex is enabled but not installed, so thread titles never generate#26962

opened12d agobyGGooder24

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

  1. On a machine with Claude Code installed and no codex binary on PATH, start T3 Code with Settings → Text generation model left at its default and the Codex provider not disabled.
  2. Start a thread with any first message.
  3. 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

shell
1WARN 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
6probeCodexAppServerProvider: 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.

#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