Additional repro of the same visible hold. The rows that kept the run open were exited background shells, and this thread has no subagents.
What happened
The reply was on screen and Grok had ended the turn, but the thread stayed Working. The next message queued and did not send. Force steer was required to continue.
Diagnosis
This is the deferFinalizeForBackgroundWork hold: the prompt has settled and the answer is visible, while background work still looks running, so the run stays active. The sidebar keeps saying Working, and a normal send queues behind it.
The projection for this thread has zero subagent rows. Five background command_execution tools stayed running after their processes had exited. Grok's event log never records task_completed, and it never mentions task ids 01a12f85, 01a12f87, or 01a12f89. Those shell tool calls are recorded complete 3–10 ms after launch, which is the background-launch acknowledgement.
Force steer released the hold. It interrupted the five tools and the provider turn, cancelled the queued run, and the restarted attempt then completed the original run. In the stalled-subagent report above, steer only supersedes the attempt and the hold stays until the subagent dies.
The user-visible failure matches this issue: no waiting state, and the queued follow-up does not send. The work being waited on matches the command-end gap in #15888 / #17144. One extra fact for that gap: the Grok log has no task_completed, TaskOutput, MultiResult, or KillTask event for these tasks, so a parser of those signals had nothing to read. #17144 is still open, so that change is not in this nightly.
On main, the 60 s background-hydration safety force-completes tools that are still awaiting hydration. A tool already tracked as running stays running. Those line references are from a local main checkout and may differ from this nightly binary.
Steps to reproduce
- Desktop Nightly, Grok, model
grok-4.7-build-fast. - In one turn, background two Gradle unit-test runs and three
xcodebuild testruns (launch and do not wait). Observed launches: 09:50:50Z, 09:50:50Z, 09:52:59Z, 09:52:59Z, 09:54:39Z. - Wait until the processes exit. The Gradle log's last write is 09:53:30Z and it ends
BUILD SUCCESSFUL. The xcodebuild log's last result is** TEST SUCCEEDED **at 09:55:50Z (118 tests). That file is not written after 09:55:55Z. - Let the turn finish its reply.
- The thread stays Working. Send a follow-up: it queues.
- Force steer.
Version
0.0.46-nightly.20261009.2873
Environment
macOS 26.5.2 (25F84). T3 Code (Nightly) desktop app, local server. Model grok-4.7-build-fast. Grok CLI on PATH at report time: 1.0.50 (c58f321264ba).
Evidence
Thread 7932ec94-25d9-4266-9e86-4ec5fd33373b. Times are UTC.
- Grok
turn_endedoutcome=completedat2026-10-12T10:19:55.911Z. - Provider event log, 30 ms later:
session/promptstatus=failederrorTag=Interruptat2026-10-12T10:19:55.941Z. - Runs 1–3 completed within about a second of their own
turn_ended(09:01:05Z,09:07:06Z,09:11:29Z). Run 4 stayed open. - Run 4 requested
2026-10-12T09:12:12.885Z. Provider turn 4 closedinterruptedat2026-10-12T10:21:24.658Z, the steer. Run 4 itself completed after the restarted attempt, at2026-10-12T10:25:54.223Z. Attempt 1 issuperseded. Attempt 2 iscompleted. - Run 5, the queued follow-up, requested
2026-10-12T10:20:37.326Zand wascancelledat2026-10-12T10:21:24.643Z. - Five
[bg] command_executionrows, allinterruptedat2026-10-12T10:21:24.657Z–.658Z:09:50:50.394ZGradle unit tests, task01a12f8509:50:50.429Zxcodebuild tests, task01a12f8509:52:59.558ZGradle unit tests, task01a12f8709:52:59.589Zxcodebuild tests, task01a12f8709:54:39.037Zxcodebuild tests, task01a12f89
orchestration_v2_projection_subagentscount for this thread: 0.
Related
#15888 and #17144 cover background commands holding a Grok run after they end. #15489 is the same symptom with a weaker cause. This trace is only on this issue.
Workaround
Force steer unstuck this thread. The shells were already dead, and only the projection was still running. There were no subagents to cancel.
Filed by
Grok (grok-4.7-build-fast) via T3 Code triage.