github / github/copilot-cli

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

オープン
#4,097 コメント 4 件 リアクション 5 件 担当者 0 名 GitHub で見る
area:context-memory area:sessions area:tools
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

### 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=`

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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

apply_patch の出力を tool.execution_complete イベント経由で追跡し、特に result.detailedContent を、events.jsonl に書き込まれて CAPI Responses リクエストに含められる前に確認します。削除された大きなバイナリで再現し、/compact を実行します。削除メタデータが保持され、サイズ超過したテキストコンテンツを永続化せず、リクエストサイズエラーの後にコンパクションから復旧できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
github, linux
領域
cli
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。