[Bug]: acpRegistry runs complete in milliseconds with zero items while the agent keeps executing queued turns — thread silently unresponsive, all output dropped
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 18/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- backend
Hướng nghiên cứu
The fault sits in the acpRegistry provider driver under apps/server, which maps each session/prompt to a run and drops session/update notifications when no run is open. Start by reading the code that resolves a prompt and closes its run, then the events.<threadId>.log path it writes to. Done means a run stays open until the agent's turn ends, or a queued prompt is marked queued/failed rather than completed with zero items; a regression test should cover the steering collision.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Before submitting
- I searched existing issues and did not find a duplicate. Closest related: #34267 (ACP providers offer Steer but fail with "does not support active-run steering") and #23919 (Codex queue turns never appear in the thread) — neither covers this acpRegistry failure mode.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
Observed on a long-lived thread (~640 items, 17 runs) driven by an ACP Registry provider. Reconstruction from logs:
- Thread runs on provider instance
acpRegistry_kimi_code(Kimi Code CLI as ACP agent), modelaone/qwen3.8-max, runtime mode full-access. A run is in flight (agent streaming LLM steps and tool calls). - While that run is still active, send a steering message to the thread from the web UI.
- The agent ends the in-flight turn early (its
session/promptresolves "succeeded" mid-reasoning; the last reasoning item is truncated mid-sentence). T3 then immediately delivers the steering message as a freshsession/prompt— and from this point on, everysession/promptfor the thread resolves in 6–42 ms regardless of content. - Send further user messages to the thread. Each one creates a run that is marked
completedwithin tens of milliseconds with zero provider items.
Expected behavior
- A run stays open until the agent's turn for that prompt actually ends, and all provider output (reasoning, tool calls, assistant messages) is attached to the run and visible in the thread.
- If a prompt cannot be delivered or is queued behind an in-flight turn, the run should show a queued/blocked/failed state — never
completedwith zero items and no error.
Actual behavior
- Every run after the steering collision is marked
status: completedin 37–83 ms (requestedAt→completedAt) with zero items. The thread reportsactiveRunId: null, empty queue,pendingRequestCount: 0— it looks healthy and idle. - Meanwhile the agent session is fully alive: it consumes every queued prompt as a full turn at its turn boundaries (dozens of LLM steps per turn, tool calls, git commits, file writes over 15+ minutes). None of that output ever reaches the thread — all
session/updatenotifications for those turns are dropped because no run is open to attach them to. - The agent-side session
state.jsonlastPromptfield is updated with each new message (proof of delivery into the agent), and itsupdatedAtmatches the agent's next turn start. - Net effect: the thread becomes permanently and silently unresponsive from the user's point of view, while the agent invisibly keeps receiving and executing every message. The user gets no indication anything is wrong.
Impact
Major degradation or frequent failure
Version or commit
t3 v0.1.9 (linux-x64), runtime service-state protocol 3, activeVersion 0.1.9
Environment
Linux x64 headless server host; T3 server + web UI. Provider: acpRegistry_kimi_code (Kimi Code CLI ACP agent), model aone/qwen3.8-max, options thinking=max mode=yolo. Affected thread 8596cad7-de97-40ef-b958-4848be7edff9, agent session session_da355b67-a123-4b67-b0d4-74f9cdf81170. All timestamps below are UTC on 2026-11-13.
Logs or stack traces
T3 provider event log (~/.t3/userdata/logs/provider/events.<threadId>.log) — the collision at 12:33:49 and every prompt afterwards acking in milliseconds:
12:31:43.358 session/prompt started (run 14)
12:33:49.860 user steering message recorded (attached to run 14)
12:33:49.879 session/prompt succeeded (run 14 turn ended mid-reasoning;
last reasoning item truncated mid-sentence)
12:33:49.913 session/prompt started (steering redelivered as fresh prompt)
12:33:49.955 session/prompt succeeded (42 ms — yet the agent's turn 15 that this
prompt started kept running until 12:36:50)
12:34:53.921 session/prompt started (run 15)
12:34:53.927 session/prompt succeeded (6 ms, zero items)
12:35:06.670 session/prompt started (run 16)
12:35:06.676 session/prompt succeeded (6 ms, zero items)
12:44:58.611 session/prompt started (run 17)
12:44:58.621 session/prompt succeeded (10 ms, zero items)
Agent-side session log (~/.kimi-code/sessions/<workspace-dir>/<session>/logs/kimi-code.log) — continuous turns across the same window; the agent never stopped and consumed each queued prompt at its turn boundary:
12:33:37.068 llm request turnStep=14.5 (run 14 in flight; this step's response never
completes — turn ended by the steering collision)
12:33:49.922 llm request turnStep=15.1 (turn 15 starts 9 ms after the 42 ms prompt ack;
steps 15.1–15.5 run until 12:36:50)
12:36:50.443 llm request turnStep=16.1 (turn 16 = next queued prompt; 17 steps,
runs until 12:47:42)
12:47:42.903 llm request turnStep=17.1 (turn 17 = next queued prompt)
12:51:47.845 llm request turnStep=18.2 (still executing ~7 min after run 17 was
marked "completed" with zero items)
Agent session state.json: lastPrompt equals the run-17 message text; updatedAt = 12:47:42.893Z == turn 17.1 start (12:47:42.903Z) — queued prompts are consumed at turn boundaries.
T3 thread record (t3_thread_read): runs 15/16/17 status: completed, startedAt→completedAt = 37/54/83 ms, no assistant/reasoning/tool items; itemCount frozen at 644 while the agent executed turns 15–18 (dozens of LLM steps, one 6,285-token output step, a git commit, and dozens of generated files in the thread's worktree — all invisible in the thread).
Interpretation. Two faults compound:
- Agent side (primary): the ACP agent resolves
session/promptbefore the turn ends — immediately when the prompt is queued behind an in-flight turn, and (for the 12:33:49.913 prompt) ~40 ms into a turn that then ran for 3 more minutes. Per ACP semantics the request should stay open until the turn completes with a stop reason. - T3 side: the acpRegistry driver treats that instant resolve as a completed run (zero items, no anomaly flagged), and afterwards drops the session's continuing
session/updatestream because no run is open to attach it to. T3 also keeps offering steering on this provider (cf. #34267); the "end turn, then send steering as a fresh prompt" fallback is what broke the run↔turn mapping here. A sanity check — e.g. a "completed" run with zero items while the session is still emitting updates, or updates arriving for a session with no open run — would catch this and could re-attach or at least surface the desync instead of showing a healthy idle thread.
Once desynced, the thread never recovers: every subsequent message repeats the millisecond no-op run.
Workaround
None that restores visibility. Messages sent to the thread still reach and are executed by the agent (verified via agent-side logs and worktree effects), so the loop kept running — but the user sees nothing and gets no replies. We are monitoring the agent session log and the git worktree out-of-band to observe real progress. We deliberately avoided freshContext/session restart because the live agent session is still working in the same worktree, and a restart would create two concurrent sessions writing to it.
- Ngôn ngữ chính
- TypeScript
- Star
- 24.8k
- Fork
- 6.4k
- Merge trung bình
- 59 phút
- Pull request đã merge (30 ngày)
- 418
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của pingdotgg/t3code
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
via-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: MCP App inline frames never go below 80px, so compact apps get blank space under themĐang mở
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Question card options show LaTeX as raw source, though the question text renders itCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Settings inheritance popover shows raw slugs for branch naming, default permissions and response streamingCó thể đã có người làm @juliusmarminge đã nhận 1 ngày trước. Đang mởvouch:denounced
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của pingdotgg/t3code
Issue tương tự
-
bug platform:mobile root-cause:found
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
openchamber/openchamber#6926 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
push-based/user-flow#356 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Cygnux-Labs/Tracekit#827 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
www build: a refused import shows only "ENOENT scandir <outDir>", never the build-audience errorĐang mởkind:defect
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 91/100
Maintainer thường phản hồi trong vòng 1 ngày
-
type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
nightgauge/nightgauge#3266 ·
Maintainer thường phản hồi trong vòng 1 ngày