Typ /context in een sessie die al sinds het ontbijt loopt. Bij mij staat er een zee aan vrije ruimte. Geen waarschuwing, geen melding dat er gecompact wordt, niets dat rood kleurt.
En toch is die sessie slechter dan om negen uur vanochtend. De meter kan het alleen niet laten zien.
De achteruitgang begint lang voordat het window vol zit
Chroma testte 18 frontier-modellen op context rot en vond bij allemaal hetzelfde: hoe langer de input, hoe onbetrouwbaarder het antwoord, zelfs bij iets simpels als woorden teruggeven. Hun LongMemEval-run laat dat het scherpst zien. Dezelfde vraag, één keer beantwoord vanuit een gerichte prompt van zo'n 300 tokens en één keer vanuit het volledige gesprek van ongeveer 113k tokens waarin die informatie begraven lag. In beide gevallen is alles wat je nodig hebt aanwezig. De antwoorden lopen ver uiteen.
NoLiMa laat zien waar dat begint. Van de 13 geteste modellen, die op papier allemaal minstens 128k context aankunnen, zakten er 11 bij 32k tokens onder de helft van wat ze bij korte context scoren. GPT-4o ging van 99,3% naar 69,7%.
Tweeëndertigduizend tokens. Op een window van een miljoen zit je dan pas op drie procent.
Anthropic noemt het mechanisme een attention budget: elk token kijkt naar elk ander token, dus n tokens leveren n² relaties op, en alles wat je erbij gooit gaat van een eindige pot af. Hun eigen advies is om de kleinste set tokens te zoeken waarmee de klus lukt. Dat is een merkwaardig advies om naast een window van een miljoen te publiceren, en het klopt nog ook.
Wat een lange sessie met je code doet
SlopCodeBench (arXiv 2603.24755, maart 2026) is het onderzoek waar ik op zat te wachten. In plaats van losse opdrachten laat het agents hun eigen eerdere code steeds verder uitbreiden, 93 checkpoints lang, met specs die meebewegen en zonder dat er tussendoor een gecorrigeerde referentie-implementatie wordt aangereikt. Elf modellen, van Sonnet 4.5 tot Opus 4.6 en de GPT-5.x Codex-varianten.
De correctheidscijfers zijn op zichzelf al slecht genoeg: geen enkele agent loste een probleem volledig op, de hoogste score per checkpoint was 17,2%, en bij het laatste checkpoint zakte de strikte score in tot 0,5%. De kosten liepen met een factor 2,9 op terwijl de correctheid niet meebewoog.
De kwaliteitscijfers zouden je gewoontes moeten veranderen:
- Structurele erosie nam toe in 80% van de trajecten. Het aantal functies met hoge complexiteit ging van 4,1 naar 37,0 per codebase, de piek in cyclomatische complexiteit van 27,1 naar 68,2.
- Breedsprakigheid nam toe in 89,8% van de trajecten, met 66% meer structurele duplicatie in het merendeel daarvan.
- Bij repositories die mensen onderhouden blijven diezelfde cijfers vrijwel vlak. Bij agents verslechtert het beeld bijna elke iteratie.
Dat zijn precies de instrumenten die ik beschreef in het dashboard voorbij coverage en mutation testing: complexiteitsconcentratie en clone-detectie. Richt ze op een lange agent-sessie en je krijgt een dalende lijn.
Het paper probeerde ook de voor de hand liggende oplossing. Kwaliteitsbewust prompten verlaagde de breedsprakigheid aan het begin met 34,5% op GPT-5.4, en de dalende lijnen bleven parallel lopen. Je begint netter en gaat even hard achteruit. De knop waar je hier aan moet draaien is de lengte van je sessie.
Wat er wél voor lange sessies pleit
Een paper uit maart 2026 stelt dat coding agents juist heel goed overweg kunnen met lange context, met 17,3% betere scores dan de best gepubliceerde resultaten, op corpora tot drie biljoen tokens. Goed werk, en het lezen waard voordat je mijn kant kiest.
Kijk alleen even hoe ze dat voor elkaar krijgen. De agents zetten de tekst in een bestandssysteem en bewerken die met gewone tools. Het corpus staat op schijf en in het window zit alleen het deel waar op dat moment aan gewerkt wordt. Dat resultaat bewijst niet dat een volgestouwd window prima is, het bewijst dat bulk op schijf hoort.
Dezelfde conclusie, alleen van de andere kant.
Wat /context echt meet
/context in Claude Code 2.1.220 deelt je window op in categorieën: system prompt, system tools, MCP-tools, custom agents, memory files, messages, vrije ruimte, en een regel waar de meeste mensen langs scrollen: Autocompact buffer. In de statusregel staat het percentage tot auto-compact, en verderop in de sessie verschijnt de waarschuwing "Context low".
Juist die bufferregel is interessant. Het is ruimte die je niet kunt uitgeven, gereserveerd zodat het model straks nog plek heeft om een samenvatting van zichzelf te schrijven. Je bruikbare window is kleiner dan het getal op de verpakking, en dat was het altijd al.
Het commando /doctor controleert de andere helft hiervan: wat je installatie in elke sessie laadt voordat je ook maar iets typt. Het beperkt zichzelf netjes tot schattingen op basis van bestanden en verwijst je voor de echte meting door naar /context. Je installatie schoonhouden en je sessie schoonhouden zijn twee verschillende problemen, en voor maar één daarvan bestaat een linter.
/compact is een model dat zichzelf samenvat
Haal de prompts die /compact gebruikt uit de binary en het ontwerp ligt open en bloot. Drie varianten: één die het hele gesprek samenvat, één die alleen het recente deel samenvat als er een eerder stuk intact blijft, en één die aan het begin van een doorlopende sessie staat.
Alle drie eisen ze dezelfde acht secties. De oorspronkelijke vraag en bedoeling. Belangrijke technische concepten. Bestanden en codefragmenten, inclusief volledige snippets. Fouten en oplossingen. Opgeloste problemen. Alle berichten van de gebruiker. Openstaande taken. Waar op dit moment aan gewerkt wordt.
Een grondige spec, en nog steeds een model dat een rapport schrijft over zijn eigen sessie, met de context waarvan je al vermoedt dat die is weggezakt. Alles wat niet in een van die acht bakjes terechtkomt, is weg.
Twee details in die prompt verdienen je aandacht. Het model krijgt de opdracht om beveiligingsrelevante instructies van de gebruiker letterlijk over te nemen, zodat ze daarna nog gelden. Dat zegt in gewone taal dat afspraken anders kunnen verdampen zodra de sessie wordt samengevat. En het wordt gewaarschuwd om tekst in assistant-berichten die eruitziet als een bericht van de gebruiker nooit aan de gebruiker toe te schrijven. Een samenvatting is namelijk een makkelijk doelwit voor alles wat een verzonnen instructie je volgende window in wil smokkelen.
Daarna zegt de hervattingsprompt tegen het model dat het gewoon verder moet, zonder de samenvatting te benoemen, alsof er geen onderbreking was. Soepel, en met opzet. Je voelt de overgang niet, en juist daarom moet je dit niet op de automatische piloot laten gebeuren.
Clear op tijd, compact zelden, schrijf de briefing zelf
Auto-compact slaat aan als je bijna geen ruimte meer hebt, waardoor de samenvatting wordt geschreven door de slechtste versie van je sessie. Ga je compacten, doe het dan bewust en met ruimte over, zolang het geheugen nog scherp is.
Beter nog: zorg dat je het niet nodig hebt. Clear op de grens tussen twee taken en zet wat moet blijven in een bestand in plaats van in een samenvatting. CLAUDE.md is het geheugen dat elke sessie overleeft, en anders dan een gegenereerde samenvatting heb je het zelf geschreven, kun je het teruglezen en kun je een regel schrappen die niet meer klopt. Houd het bij conventies, valkuilen en overwegingen die de agent niet uit de repo kan afleiden, anders krijg je geheugen dat zes weken later met veel overtuiging onzin vertelt.
De regel die ik in de praktijk aanhoud:
| Situatie | Wat je doet |
|---|---|
| Taak klaar, volgende taak staat er los van | /clear, daarna een nieuwe briefing |
| Zelfde taak, window loopt vol met tool-output | Nu /compact, zolang je nog ruimte hebt |
| Model blijft terugvallen op een verkeerde aanname | /clear. Die aanname zit in de gesprekshistorie en een samenvatting neemt hem mee |
| "% until auto-compact" zakt onder de tien | Je hebt beide momenten gemist. Clear en schrijf de briefing met de hand |
Die briefing schrijven kost twee minuten en levert een beter document op dan welke gegenereerde samenvatting ook, want jij weet welke vier dingen ertoe deden en het model zit naar acht te gissen.
Het meetprobleem is hier hetzelfde als bij gegenereerde code. De instrumenten bestaan, ze kosten niets, en niemand kijkt ernaar omdat er nog niets kapot is. Complexiteit en duplicatie vertellen je dat je codebase afdrijft. /context vertelt je dat je sessie dat doet. Allebei vallen ze stil zodra je stopt met kijken, en allebei zijn ze het goedkoopst aan te pakken zolang het antwoord nog saai is.