github / github/copilot-cli

Cancelled user input is still delivered to the agent and processed as a valid turn (autopilot mode)

Ouverte
#4,336 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

area:agents area:input-keyboard
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

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
  1. Run the CLI in autopilot mode (/autopilot), inside tmux over SSH.
  2. Type an input (in my case "captain setup flyte") and cancel it before/while it is being submitted.
  3. Continue the session with a different, unrelated message some time later.
  4. 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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire le flux d’entrée annulée en mode autopilot et suivez le chemin queue/delivery qui assemble le bloc de messages suivant. Vérifiez que l’entrée annulée n’entre jamais dans l’historique de la conversation, puis vérifiez séparément que le rappel task_complete n’est émis que lorsque cet outil est disponible.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
shell
Domaine
cli
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.