github / github/copilot-cli

Auto-compaction loops infinitely when instruction files are large

Aperta
#3,621 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
area:configuration area:context-memory
Lingua principale
Shell
Stelle
11.2k
Fork
1.9k
Merge medio
14h 16m
PR unite (30g)
6

Descrizione

### Describe the bug

## Describe the bug

When a user has large instruction files (global `~/.copilot/copilot-instructions.md` and/or
repo-level `.github/copilot-instructions.md`) the agent enters a continuous auto-compaction
loop, wiping working memory on virtually every turn. Multi-step tasks never complete.

The session output becomes a wall of:

```
● Compacting conversation history...
● Compaction completed
└ A new checkpoint has been added to your session.
```

The agent loses all prior context, restarts the task from scratch, then compacts again immediately.
This repeats indefinitely. No multi-step work survives.

---

## Affected version

```
GitHub Copilot CLI 1.0.57-5.
Run 'copilot update' to check for updates.
```

Broken: **1.0.52 through 1.0.57** (current stable as of 2026-06-01)
Working: **1.0.48** and below
Not tested: **1.0.49 through 1.0.51** (may work; the 1.0.52-2 changelog entry is the first mention of tier enforcement)

### Affected version

GitHub Copilot CLI 1.0.57-5

### Steps to reproduce the behavior

## Steps to reproduce the behavior

1. Create `~/.copilot/copilot-instructions.md` with content >= 300 KB
(or combine global + repo instructions so the total exceeds ~150,000 tokens)
2. Start a session in any repository
3. Ask a multi-step question requiring 2+ tool calls (e.g., "read file X and summarize it")
4. Observe repeated "Compacting conversation history..." output before the task completes
5. Note that context is wiped each time, and the agent restarts the same task from scratch
6. Observe this loop continues indefinitely

---

### Expected behavior

## Expected behavior

The agent completes multi-step tasks without compacting context mid-execution. If instructions
alone approach the tier limit, the agent should warn the user rather than silently loop.
`/compact off` should suppress all auto-compaction (tier-based and manual), not just
user-initiated compaction.

---

### Additional context

## Additional context

**Root cause candidate — 1.0.52-2 changelog:**
> "Context window tier selection (default ~200K vs 1M tokens) is now enforced end-to-end,
> so picking a tier actually constrains compaction, truncation, and token display"

This introduced hard tier-based limits into the auto-compaction trigger. The problem is that
the default tier (~200K tokens) does not account for the instructions footprint:

- Global instructions: ~374 KB ≈ ~140,000 tokens
- Repo instructions: ~33 KB ≈ ~12,000 tokens
- **Instructions baseline at session zero: ~152,000 tokens**

This leaves fewer than 50,000 tokens of working memory — not enough for any non-trivial
tool-call sequence. After compaction, instructions (which cannot be compacted) are still
152K tokens, so the threshold is immediately hit again. The session never stabilizes.

**Why `/compact off` does not help:**
`/compact off` disables user-initiated manual compaction only. Tier-enforcement auto-compaction
is a separate code path and is unaffected.

**Partial fixes in 1.0.56–1.0.57 that did NOT resolve this:**
- 1.0.56-0: "Context window tier selection now persists durably in session events and survives
SDK-only resume paths" — fixed tier persistence but not the instructions-footprint loop
- 1.0.57-4: "Session no longer hangs indefinitely after an error occurs during internal event
processing" — related symptom, different failure mode

**Proposed fixes (any one would help):**
1. At session start, detect when instructions alone exceed the tier; warn/prompt rather than looping
2. Set the effective tier floor = instructions_size + configurable working headroom minimum
3. Make `/compact off` suppress tier-based auto-compaction, not just manual compaction
4. Allow users to opt into the 1M-token tier without per-turn enforcement

**Workaround:** Revert to **1.0.48** (or possibly anything prior to 1.0.52 — versions 1.0.49–1.0.51 not tested).

**Environment:**
- OS: Windows 11 (Build 26100)
- CPU: x86_64
- Terminal: Windows Terminal
- Shell: PowerShell / cmd
- Node.js: v24.15.0
- Installation: `npm install -g @github/copilot`

**Note on use case:** The global instructions file is used as intended — centralizing org, team,
and repository standards so they apply across all sessions. This bug disproportionately affects
power users of the global instructions feature.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia riproducendo il loop con file di istruzioni globali e del repository alle dimensioni descritte, confrontando le versioni 1.0.48 e 1.0.57. Traccia il percorso di auto-compaction per l’applicazione del tier introdotto in 1.0.52-2 e verifica che un’attività in più passaggi venga completata, mentre `/compact off` abbia l’effetto documentato, senza compaction ripetute.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
node.js, powershell, shell
Ambito
cli
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.