Al maanden begint elke sessie in deze repo met een hook die één ruleset injecteert: schrijf kort, laat de opsmuk weg, hou de techniek exact. Ik heb dat zelf in elkaar gezet omdat ik het zat was om per gesprek opnieuw om beknoptheid te vragen. Sinds versie 2.1.237 zit er een ingebouwde antwoordstijl in Claude Code die ongeveer hetzelfde belooft, en die heet Concise.
Mijn eerste reactie was dat ik mijn hook kon weggooien. Dat bleek te snel gedacht, want de twee doen hun werk op een andere plek in de aanvraag, en die plek bepaalt meer dan de tekst van de instructie zelf.
Wat Concise is
Een antwoordstijl verandert hoe Claude antwoordt, niet wat Claude weet. De stijl wordt aan het eind van de systeemprompt geplakt. Er zijn nu vijf ingebouwde stijlen: Default, plus Proactive, Concise, Explanatory en Learning.
Concise doet volgens de documentatie drie dingen. Het resultaat komt voorop, preamble en narratie vallen weg, en antwoorden blijven standaard kort. Het werk zelf blijft even grondig als in Default. Vraag je om uitleg of om meer detail, dan krijg je een volledig antwoord.
Eén uitzondering is expliciet dichtgetimmerd: foutrapporten, beveiligingswaarschuwingen en bevestigingen voor onomkeerbare acties houden altijd hun volledige inhoud. Dat is precies de goede uitzondering, want dat zijn de momenten waarop kort antwoorden gevaarlijk wordt.
Zetten doe je hem met /config, onder Output style. Het losse /output-style-commando bestaat niet meer: het is afgeschaft in v2.1.73 en verwijderd in v2.1.91. Wie het uit gewoonte intikt, krijgt niets.
Waar de instructie landt
Er zijn drie plekken waar je de stem van je agent kunt bijsturen, en ze gedragen zich anders.
| Antwoordstijl | CLAUDE.md | Hook of skill | |
|---|---|---|---|
| Landt in | de systeemprompt | de projectcontext | het gesprek |
| Geldt vanaf | sessiestart, vast | sessiestart | het moment dat hij afgaat |
| Wijziging halverwege | vereist herstart | vereist herstart | werkt meteen |
| Effect op de cache | hele aanvraag opnieuw | hele aanvraag opnieuw | prefix blijft intact |
| Bereikt subagents | nee | nee | nee |
| Keuze staat in | .claude/settings.local.json | het bestand in de repo | de config in de repo |
De cachekolom verklaart het gedrag dat anders willekeurig lijkt. Claude Code stuurt bij elk bericht de hele context opnieuw, en de API hergebruikt het deel dat vooraan identiek is gebleven. Een wijziging in de systeemprompt zet alles wat erachter staat op losse schroeven, dus wordt de hele aanvraag opnieuw verwerkt. Daarom wacht een stijlwijziging op een herstart of een /clear in plaats van meteen in te gaan. Een skill of hook plakt zijn instructie als gespreksbericht achteraan, en dan blijft de cache heel.
De onderste rij is de rij die ik onderschat had. Een subagent start zijn eigen gesprek met zijn eigen systeemprompt, dus antwoordstijlen gelden alleen voor het hoofdgesprek. Draai je een fan-out met tien agents, dan schrijven die tien in de standaardstem, hoe je de hoofdsessie ook hebt ingesteld.
De cijfers, en het cijfer dat ontbreekt
Wat er hard is:
- Concise vraagt v2.1.237 of hoger. Eén versie later, in 2.1.238, staat in de changelog een fix voor custom-, project- en plugin-antwoordstijlen die halverwege een sessie terugvielen naar de standaardstem.
/output-styleis weg sinds v2.1.91, afgeschaft in v2.1.73.- Vijf ingebouwde stijlen, waar de meeste blogs er nog twee of drie noemen.
Een meting ontbreekt. De documentatie zegt dat Explanatory en Learning per ontwerp langere antwoorden geven en dus meer output-tokens kosten, en dat Concise het omgekeerde doet. Er staat geen percentage bij, en ook geen testopzet. Voor een functie die als besparing wordt gepresenteerd is dat de interessantste ontbrekende alinea. Wil je weten wat het jou scheelt, dan moet je het zelf een week meten.
Aan de invoerkant is de richting wel bekend: elke stijl plakt tekst aan de systeemprompt, dus je input-tokens gaan omhoog. Prompt caching drukt dat na de eerste aanvraag van een sessie.
De kanttekening
“Kort” wordt door de leverancier gedefinieerd. De instructietekst van de ingebouwde stijlen is niet gepubliceerd, dus wat er onder preamble en narratie valt, staat in een prompt die je niet kunt lezen. Bij een eigen stijl of hook zie je precies wat er gevraagd wordt. Hier lees je een omschrijving van drie zinnen en vertrouw je op de rest.
Het opmerken landt bij jou. De stijl bereikt geen subagents, en tot 2.1.238 kon een eigen stijl halverwege een sessie stil terugvallen naar de standaardstem. Beide storingen zien er hetzelfde uit: er komt gewoon antwoord, alleen in een andere toon. Dat is een lastiger soort fout dan een foutmelding, want er is geen moment waarop het misgaat.
Narratie is ook je controlemoment. De aankondiging vooraf (“ik ga nu deze vier bestanden aanpassen”) is niet alleen opsmuk. Het is de plek waar je kunt ingrijpen voordat het gebeurt. Dat foutrapporten en bevestigingen voor onomkeerbare acties volledig blijven, is de goede grens. Alles daaronder is onderhandelbaar geworden, en dat is een keuze die je bewust moet maken in plaats van aanzetten omdat kort prettig leest.
Wat ik zelf doe
Mijn hook blijft staan, om een reden die niets met de tekst te maken heeft. Die hook is versiebeheerd in de repo, dus hij reist mee naar elke machine en elke worktree. De keuze voor een antwoordstijl landt in .claude/settings.local.json, en dat bestand is lokaal en per project. Wat ik in één repo instel, geldt nergens anders.
Verder houd ik twee regels aan. Ik kies de stijl aan het begin van een sessie en niet halverwege, want halverwege wisselen kost een volledige herberekening van de aanvraag. En ik ga een week lang bijhouden wat Concise doet met mijn output-tokens, omdat er geen cijfer is dat ik van iemand anders kan overnemen.
Wat ik nog niet weet is of ik de twee tegelijk wil. Een hook en een stijl die allebei om beknoptheid vragen, is dubbelop, en dubbele instructies maken een model niet twee keer zo beknopt. Dat ga ik uitproberen.
Veelgestelde vragen
Waarom verandert mijn antwoordstijl pas na een herstart?
Omdat de stijl in de systeemprompt zit, en Claude Code leest die één keer bij het starten van een sessie. Een wijziging daarin maakt de hele opgebouwde cache ongeldig. Na een /clear of in een nieuwe sessie is hij actief.
Geldt de stijl ook voor mijn subagents?
Nee. Een subagent draait zijn eigen systeemprompt, dus antwoordstijlen gelden alleen voor het hoofdgesprek. Een fork ligt anders: die erft de systeemprompt van de ouder wél.
Waar wordt mijn keuze opgeslagen?
In .claude/settings.local.json, op projectniveau. Je kunt het outputStyle-veld ook met de hand in een settings-bestand zetten, bijvoorbeeld als je in de desktop-app werkt en geen menu hebt.
Kost een antwoordstijl extra tokens?
Aan de invoerkant wel, want de instructie wordt aan de systeemprompt geplakt. Prompt caching drukt dat na de eerste aanvraag van een sessie. Aan de uitvoerkant hangt het van de stijl af: Explanatory en Learning geven per ontwerp langere antwoorden, Concise kortere. Hoeveel korter is niet gepubliceerd.
Bronnen
- Claude Code CHANGELOG, versie 2.1.237 (introductie Concise) en 2.1.238 (fix voor terugvallende stijlen), geraadpleegd 21 augustus 2026
- Claude Code Docs, “Output styles”, geraadpleegd 21 augustus 2026
- Claude Code Docs, “How Claude Code uses prompt caching”, geraadpleegd 21 augustus 2026
Gecontroleerd op 21 augustus 2026. De omschrijving van Concise, de vijf ingebouwde stijlen, de opslaglocatie en het gedrag rond subagents komen uit de officiële documentatie; de versienummers uit de changelog. Wat ik niet heb kunnen verifiëren: de instructietekst van de ingebouwde stijlen is niet openbaar, dus “zet het resultaat voorop” is de omschrijving van de maker en niet iets wat ik heb kunnen nalezen. Er is ook geen gepubliceerde meting van hoeveel korter Concise antwoordt. Bronnen die elkaar tegenspreken: meerdere blogs en een oudere Duitse vertaling van dezelfde documentatiepagina noemen nog twee of drie ingebouwde stijlen en beschrijven /output-style als het commando om te wisselen. De actuele Engelstalige documentatie noemt er vijf en zegt dat dat commando in v2.1.91 is verwijderd. Ik houd de actuele primaire bron aan.
