Before submitting
Area
apps/server, apps/desktop
Steps to reproduce
- Install T3 Code on Linux via AppImage (v0.0.11)
- Have
codex installed via nvm (e.g. npm install -g @openai/codex)
- Open the app and add a project
- Observe the Codex provider status
Expected behavior
Codex provider status should show "ready" or an authentication status, since codex is installed and works from the terminal.
Actual behavior
The app shows:
Codex CLI (codex) is not installed or not on PATH.
Root cause
Two issues combine to cause this:
1. Shell environment sync only runs on macOS
Both apps/desktop/src/syncShellEnvironment.ts and apps/server/src/os-jank.ts have:
if (process.platform !== "darwin") return;
This skips PATH normalization entirely on Linux. On Linux (especially AppImage), the process environment doesn't include user shell paths (e.g. ~/.nvm/versions/node/*/bin), so CLIs installed via nvm/bun are not found.
2. Server calls fixPath() after the health check
In apps/server/src/main.ts, fixPath() is called inside Effect.gen at line 243:
yield* cliConfig.fixPath;
But ProviderHealthLive is constructed as a Layer (line 200), which runs before the Effect.gen body. The health check (codex --version) fires with the old PATH before fixPath() has a chance to correct it.
Note: apps/desktop/src/main.ts already calls syncShellEnvironment() at module top-level, which is the correct pattern.
Proposed fix
- Change platform guard from
!== "darwin" to === "win32" in both syncShellEnvironment.ts and os-jank.ts
- Add a top-level
fixPath() call in apps/server/src/main.ts (mirroring the desktop app pattern)
This is a ~5-line change across 3 files. The readPathFromLoginShell() / readEnvironmentFromLoginShell() utilities already work on Linux — they just were never called.
Impact
Complete failure — Codex provider is unusable on Linux.
Version or commit
v0.0.11 / main (as of commit e6d9a27)
Environment
- Ubuntu 22.04.5 LTS (kernel 6.8.0-106-generic)
- T3 Code AppImage v0.0.11
- Node v24.14.0 via nvm
- codex-cli 0.114.0
Before submitting
Area
apps/server, apps/desktop
Steps to reproduce
codexinstalled via nvm (e.g.npm install -g @openai/codex)Expected behavior
Codex provider status should show "ready" or an authentication status, since
codexis installed and works from the terminal.Actual behavior
The app shows:
Root cause
Two issues combine to cause this:
1. Shell environment sync only runs on macOS
Both
apps/desktop/src/syncShellEnvironment.tsandapps/server/src/os-jank.tshave:This skips PATH normalization entirely on Linux. On Linux (especially AppImage), the process environment doesn't include user shell paths (e.g.
~/.nvm/versions/node/*/bin), so CLIs installed via nvm/bun are not found.2. Server calls
fixPath()after the health checkIn
apps/server/src/main.ts,fixPath()is called insideEffect.genat line 243:But
ProviderHealthLiveis constructed as a Layer (line 200), which runs before theEffect.genbody. The health check (codex --version) fires with the old PATH beforefixPath()has a chance to correct it.Note:
apps/desktop/src/main.tsalready callssyncShellEnvironment()at module top-level, which is the correct pattern.Proposed fix
!== "darwin"to=== "win32"in bothsyncShellEnvironment.tsandos-jank.tsfixPath()call inapps/server/src/main.ts(mirroring the desktop app pattern)This is a ~5-line change across 3 files. The
readPathFromLoginShell()/readEnvironmentFromLoginShell()utilities already work on Linux — they just were never called.Impact
Complete failure — Codex provider is unusable on Linux.
Version or commit
v0.0.11 / main (as of commit e6d9a27)
Environment