Still happening on stable 0.1.7 (322f6544df) on Windows, which already includes #24600, #26188 and #27924. This instance differs from the original report in one useful way: the app-server's stdout stayed open and its notifications arrived on time. The process stopped answering requests, while T3's reader kept up.
Setup
- Windows 11 Pro build 26300, AMD Ryzen 9 9950X3D, 125 GB RAM. Load during the incident was about 20% CPU, with 34 GB RAM free.
- T3 Code desktop 0.1.7 running as an always-on server. Used remotely from a Mac and a phone through T3 Connect (linked environment, "approval-required" access).
codex-cli 0.166.0(WinGet). One shared app-server (provider-session:provider-instance:codex:shared) for every Codex thread in the environment.- The workload is heavy orchestration. Lead threads delegate to up to 20 concurrent
delegate_taskchildren (gpt-6-luna,gpt-6.1-sol), and several leads run at once. The environment has 528 threads, andstatev2.sqliteis 2.3 GB. - The app-server was started at 22:58 local after a reboot. It had been up about an hour when it stopped answering.
Evidence (~/.t3/userdata/logs/provider/events.*.log, UTC)
| 1 | 2026-11-10T23:52:43Z id 158 thread/unsubscribe -> answered in 7 ms # last answered request |
| 2 | 2026-11-11T00:00:08Z id 159 thread/resume (excludeTurns: true) # never answered |
| 3 | 2026-11-11T08:15:12Z id 160 turn/steer (user: "U stuck?!") # never answered |
| 4 | 2026-11-11T08:29:43Z id 161 thread/start (brand-new thread) # never answered |
| 5 | 2026-11-11T08:33 .. 09:49 incoming skills/changed every ~5 min, emittedAtMs == receive time |
- After id 158 at 23:52, no incoming message carried an
id. Onlyskills/changednotifications arrived, all on time. - The app-server process (PID 6256) was alive and idle. Its CPU time moved 0.016 s in 5 s. It held 553 OS threads and 3,849 handles, and had about 50 sets of MCP children under it (
node,node_repl,1password-mcp,cmd). - Nothing reached the UI. Every Codex thread on the machine sat at "starting" or "Working" for about 10 hours. A new thread showed "Workspace ready" and never produced a turn.
- Network was fine. DNS and HTTPS to
api.openai.comandchatgpt.comanswered from the same host.
Recovery
Stopping PID 6256 made T3 spawn a new app-server within seconds. The new thread waiting since 08:29 answered at 09:53, and the thread whose thread/resume had hung resumed. Its running children were marked failed, which is correct. One lead thread stayed stuck on its old run. I'm filing that as a separate issue, because it happens after the process is replaced and needs a different fix.
What would have helped
The original report already asks for a bounded timeout on thread/start, thread/resume and turn requests that fails the run visibly, and for restarting the shared app-server when it stops answering. This case adds one thing: a liveness check can't rely on stdout closing or on notification lag. Here both looked healthy. It has to check that requests are still being answered, for example by pinging with a cheap request and treating no response within N seconds as dead.
I can send a PR with a request timeout and a test using a fake app-server that keeps sending notifications but never answers a request. Would you take it?