Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Approval-gated action interrupted before its result is saved can never be retried

Đang mở
#134 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

@DerekChia đang làm issue này rồi.

Từ ngày 10/10/2026.

  • #135 của @DerekChia — đang mở
  • #141 của @charan-rathore — đã đóng, không merge
  • #155 của @Twil3akine — đang mở

Đá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
68/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
node.js, sql, typescript
Lĩnh vực
backend, database, frontend

Hướng nghiên cứu

Start with the action receipt and the claimAction/finishAction flow around the mcp_actions table and the POST /api/conversations/thread/connection-actions endpoint. Also trace the approval action card’s polling and retry controls, using the 60-second ConnectionService timeout as the stale-run threshold. Done means an interrupted result-less run can be reclaimed only by its original approval, fresh claims still receive 409, saved results remain protected, and the UI exposes a successful retry.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Problem

If the server stops between claiming an approval-gated MCP action (claimAction) and saving its result (finishAction), that (threadId, toolCallId) is bricked: every retry returns 409 This action is already running. forever, because mcp_actions rows have no expiry and there is no code path that clears a result-less running row.

Worse, the owner has no way to retry from the UI: the action card polls the receipt every 2s, sees status: running, shows "Running / This action is still running on the server.", and hides the Approve buttons while running is true. The card sits on "Running" forever with no affordance.

Reproduction

  1. Start OpenDots (local npm run dev, Node v22.23.1) with a Dot that has an MCP connection with a gated (non-read-only) tool.
  2. Have the Dot call the gated tool so the owner gets an approval card.
  3. Approve it, and kill the server process after the claim INSERT but before the result UPDATE lands (equivalently: INSERT INTO mcp_actions(threadId,toolCallId,connectionId,tool,status,result,createdAt,approvalId) VALUES('thread','tc1','c','tool','running',NULL,<now>,'<approvalId>');).
  4. Restart the server and open the conversation.
  5. The card shows "Running" forever; approving/refreshing never completes. POST /api/conversations/thread/connection-actions with the same approval returns 409 {"error":"This action is already running."} on every attempt, until the approval itself expires an hour later.

Expected: after the in-flight run is demonstrably gone, the receipt should surface the interruption and the same approval should be able to run the stored request again (the request is already bound to its exact connection/tool/arguments, and only that approval may reclaim it).

Actual: misleading "already running" 409 with no self-healing and no owner retry path.

Notes

  • MCP tool calls are bounded to 60s (ConnectionService timeout), so a result-less claim older than a few minutes cannot belong to a live run.
  • The fix must preserve the double-claim guard: a fresh running row must still 409 (double click / retried request must not execute twice), a saved result must still be returned only to its own approval, and a different approval must never steal the claim.
Ngôn ngữ chính
TypeScript
Star
4.8k
Fork
690
Merge trung bình
2 ngày 5 giờ
Pull request đã merge (30 ngày)
53

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CopilotKit/OpenDots

Tất cả issue của CopilotKit/OpenDots

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.