You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Restart continuation resumes every in-flight run at once, and its 5-minute loop guard misses a crash loop that repeats every 22 minutes #24059
User: "cpu load goes to 100% at login" and "the orchestrator is trying to run multiple sims at once with different agents".
The Mac was force-restarted at 20:05 and load averages were 339 / 623 / 898 (1 / 5 / 15 min) at 20:32.
Each login starts t3 serve (launchd, RunAtLoad), which immediately re-launches the same agent tasks that overloaded the machine.
Diagnosis
A delegating thread started 4-5 delegated iOS tasks within 4-11 s, three times in one afternoon. Each task drives a simulator through agent-device.
After the 20:05 restart, effect-worker.start -> ProviderTurnStartService.start -> resumeThread/startTurn created 4 continuation runs within 1 s. A second restart at 20:32 continued 2 of them again.
continueRestartedRun dispatches with start_immediately and has no limit on how many run at once.
The loop guard counts only links within CONTINUATION_LOOP_WINDOW_MS (5 min) of the source run's completion. With ~22 min between restarts it counted 1 (< 3), so it never engaged. PR fix(server): limit restart loops within a five-minute window #20306 notes that slower loops "can continue indefinitely".
Suggested direction: stagger or cap simultaneous continuations, and detect repeated restarts over a longer horizon.
Steps to reproduce
Not run deterministically, because it crashes the machine.
On a 16 GB Mac, have one thread delegate 4+ tasks that each boot an iOS simulator.
Let the machine overload until it restarts.
Let the launch agent start t3 serve at login.
All in-flight runs continue at once. Repeat.
Version
0.1.3-nightly.20261023.3553 for the 20:32 restart. The build at the 20:09 start is unknown. The t3 triage CLI was also 0.1.3-nightly.20261023.3553.
Environment
macOS 27.2.0 arm64, 16 GB RAM, Node v24.22.0 (triage CLI), Nightly desktop app plus launchd t3 serve, Claude provider.
Evidence
task ord status requested(UTC) completed(UTC) kind
A 2 cancelled 09:09:35 09:32:07 continuation
A 3 cancelled 09:32:15 09:36:27 continuation
D 2 cancelled 09:09:36 09:32:06 continuation
D 3 cancelled 09:32:15 09:36:28 continuation
B,C 2 interrupted 09:09:35-36 09:10:26-27 continuation
task start waves (UTC): 05:09:30-41 (4 tasks), 06:26:36-44 (4), 07:02:34-38 (4)
provider-runtime.continue effects since 2026-10-16: 44; up to 8 within one hour
swap at 20:40: 5830 of 6144 MB used
Related issues
PR #18461 and PR #20306 (the continuation cap and its window). #17470 and #16614 (simulator claims and hub CPU). None covers this problem.
Fix applied or workaround
Stopped the service, ran xcrun simctl shutdown all, disabled the launch agent, and set continueThreadsAfterServerUpdate to false in settings.json.
Filed by
claude (claude-sonnet-5-5) via Claude Code, running the t3 triage playbook
Correction to the "Fix applied or workaround" section: setting continueThreadsAfterServerUpdate to false only partly helps.
After setting it and restarting the service (same build, 0.1.3-nightly.20261023.3553):
The two pending provider-runtime.continue effects ran and succeeded, and no continuation runs were created. So the setting does stop restart continuation.
The delegating parent thread still started its own run (a non-continuation run, ordinal 18) at 10:07:49 UTC, about 2 minutes after the service started. By 10:08:57 UTC it was running shell commands, and it re-launched two delegated tasks (one new run each, ordinal 1) within about a minute.
I stopped the parent with thread.stop. All three runs ended interrupted at 10:10:07-08 UTC.
I have not verified why the parent woke. A likely cause is that the cancelled child tasks report back to the parent and that starts a turn, but that is an inference from the code path, not something I confirmed in the trace.
One more observation: an xcodebuild test the agent had started just before the stop kept running afterwards as an orphan (parent process 1) and booted a simulator. It had to be terminated by hand.
So turning off restart continuation does not prevent the overload on its own. The parent thread's startup wake-up needs to be bounded as well.
Activity
Artic0din commentedon Oct 23, 2026
Correction to the "Fix applied or workaround" section: setting
continueThreadsAfterServerUpdatetofalseonly partly helps.After setting it and restarting the service (same build,
0.1.3-nightly.20261023.3553):provider-runtime.continueeffects ran and succeeded, and no continuation runs were created. So the setting does stop restart continuation.thread.stop. All three runs endedinterruptedat 10:10:07-08 UTC.I have not verified why the parent woke. A likely cause is that the cancelled child tasks report back to the parent and that starts a turn, but that is an inference from the code path, not something I confirmed in the trace.
One more observation: an
xcodebuild testthe agent had started just before the stop kept running afterwards as an orphan (parent process 1) and booted a simulator. It had to be terminated by hand.So turning off restart continuation does not prevent the overload on its own. The parent thread's startup wake-up needs to be bounded as well.