github / github/copilot-cli

apply_patch stores deleted binary in session history, permanently exceeding CAPI 5 MB limit

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

Personne n'a encore pris cette issue.

area:context-memory area:sessions area:tools
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

When apply_patch deletes a large binary file, its tool.execution_complete event stores the entire deleted binary as a textual diff in result.detailedContent.

This result remains in conversation history. Subsequent requests exceed CAPI Responses' 5 MB limit, and /compact fails for the same reason, leaving the session unrecoverable through the CLI.

Affected configuration
  • GitHub Copilot CLI 1.0.71-0
  • Linux
  • Model: GPT-5.6 Sol (gpt-5.6-sol)
  • Context window: 1.1M
  • Reasoning effort: high
  • Interactive session later resumed with copilot --resume=<session-id>

The model, context-window size, and reasoning effort may affect when compaction runs, but the persisted binary tool output appears to be the direct cause of the 5 MB transport failure.

Observed sequence
  1. Copilot used apply_patch to delete a large ELF executable.

  2. The persisted event contained:

    • result.detailedContent: 22,810,594 characters
    • Serialized JSONL record: 72,155,553 bytes
    • Tool telemetry: 111,879 removed lines
  3. events.jsonl grew to 118,622,622 bytes.

  4. Further requests failed with:

    The request is too large to send through CAPI Responses. Try shortening the conversation or prompt. (5.0 MB request; 5.0 MB limit)

  5. Automatic/manual compaction failed with the same error.

Expected behavior

Binary content should not be persisted as a textual patch. The CLI should retain deletion metadata while omitting or capping oversized detailedContent.

After a request-size failure, oversized tool output should be evicted so compaction can recover the session.

Workaround and root-cause confirmation

After backing up the session, I replaced the oversized detailedContent with a short marker. This reduced the event log from 118.6 MB to 46.5 MB and eliminated the CAPI request-size failure.

Related issues

This resembles #3767, but that issue covered inline attachments and was fixed in v1.0.62. This report concerns persisted apply_patch output in v1.0.71.

The session also developed malformed JSONL records that prevented resume, reported separately in #4098. The shared root cause is not proven, although the unusually large write may have widened the failure window.

I have not attached events.jsonl because it contains conversation and tool history.


Investigated and filed with assistance from GitHub Copilot CLI.

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

Suivez la sortie de apply_patch à travers l’événement tool.execution_complete, en particulier result.detailedContent, avant qu’elle soit écrite dans events.jsonl et incluse dans les requêtes CAPI Responses. Reproduisez le problème avec un gros binaire supprimé et exécutez /compact. Le travail est considéré comme terminé lorsque les métadonnées de suppression sont conservées sans persister de contenu textuel trop volumineux, et que la compaction peut récupérer après une erreur de taille de requête.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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