Cancelled user input is still delivered to the agent and processed as a valid turn (autopilot mode)
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Shell
- Star
- 11.2k
- Fork
- 1.9k
- Merge trung bình
- 14 giờ 16 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
Describe the bug
Summary
When I cancel a queued input before it is sent, the cancelled text is not discarded. It reappears later — bundled into a subsequent message block, carrying its original (older) timestamp — and the agent processes it as a normal user turn, with no indication it was ever cancelled. This happened in autopilot mode, in a session that also showed unstable tool availability (see "Possibly related" below).
Possibly related (same session, may share a root cause in turn/tool scheduling):
- The session was running in autopilot mode the whole time.
- The task_complete tool was repeatedly present and then absent across turns. The autopilot reminder text ("You have not yet marked the task as complete using the task_complete tool...") kept firing on turns where task_complete was NOT actually in the available tool list, so the agent could not comply and got stuck re-confirming that it was idle.
- Both symptoms look like state being assembled from stale/mismatched snapshots between turns (a stale queued input on one side, a stale tool list / reminder on the other), so they may be the same underlying issue.
Impact:
- The agent wastes a turn acting on something I explicitly cancelled.
- Cancel doesn't actually cancel, which is confusing and erodes trust.
- Potentially risky in autopilot mode: autopilot acts without waiting for confirmation, so a cancelled input containing a destructive command could be executed.
- The task_complete reminder loop wastes turns and tokens.
Suggested fix:
- Discard cancelled inputs at the delivery/queue layer so they never reach the agent context. If a cancelled input must still be forwarded, tag it explicitly (e.g. [cancelled]) so the agent can safely ignore it.
- Only emit the autopilot "mark the task complete" reminder on turns where the task_complete tool is actually exposed to the model.
Affected version
GitHub Copilot CLI v1.0.77
Steps to reproduce the behavior
- Run the CLI in autopilot mode (/autopilot), inside tmux over SSH.
- Type an input (in my case "captain setup flyte") and cancel it before/while it is being submitted.
- Continue the session with a different, unrelated message some time later.
- The cancelled input is delivered to the agent alongside the new message, and the agent starts acting on it.
Expected behavior
A cancelled input should be dropped at the delivery layer and never enter the conversation history. The agent should never see it.
Additional context
- GitHub Copilot CLI v1.0.77
- Model: Claude Opus 4.8
- Autopilot mode: ON
- OS: Linux, running inside tmux over SSH
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.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện luồng đầu vào bị hủy trong chế độ autopilot và truy vết đường dẫn queue/delivery để tạo khối tin nhắn tiếp theo. Xác minh rằng đầu vào bị hủy không bao giờ đi vào lịch sử cuộc hội thoại, đồng thời kiểm tra riêng rằng lời nhắc task_complete chỉ được phát ra khi công cụ đó khả dụng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- shell
- Lĩnh vực
- cli
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100