Skip to content

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

Description

@Adamkadaban

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:context-memoryContext window, memory, compaction, checkpoints, and instruction loadingarea:sessionsSession management, resume, history, session picker, and session statearea:toolsBuilt-in tools: file editing, shell, search, LSP, git, and tool call behavior

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions