Claude Code auto mode: waarom je allow-regel voor Agent niets doet
7m leestijd

Claude Code auto mode: waarom je allow-regel voor Agent niets doet

In één repository blokkeerde de classifier van Claude Code auto mode in een maand 86 van de 594 subagents, vooral gewone code reviews. Agent op de allowlist zetten hielp niet, want auto mode gooit die regel weg zodra je de modus aanzet. Werd dezelfde prompt opnieuw gestuurd, dan ging hij 24 van de 26 keer wel door.

Een review agent wordt geweigerd. Als reden staat er tussen blokhaken [Auto-Mode Bypass]. De hoofdagent haalt zijn schouders op, stuurt precies dezelfde prompt nog een keer, en nu start de reviewer gewoon en doet hij zijn werk.

Dat overkwam me de afgelopen maand tientallen keren in één repository, zo vaak dat ik auto mode steeds uitzette om nog iets gedaan te krijgen. In dat project stond Agent op de allowlist. Het maakte geen verschil, en de reden staat gewoon in de documentatie, alleen niet op een plek waar je het zou zoeken.

Agent-calls slaan permissions.allow over, de classifier blokkeert 86 van de 594, en 24 van 26 herhalingen gaan door.

Wat auto mode goed doet ​

Auto mode vervangt de permissieprompt door een tweede model. Sinds Claude Code 2.1.283 is het de standaardmodus voor interactieve sessies, op elk abonnement. In plaats van dat jij op ja klikt, legt een classifier elke actie naast een lijst blokkeerregels en laat hij het routinewerk door.

Meestal is dat een duidelijke verbetering ten opzichte van de modi en allowlists waar ik in juli over schreef. Wie de veertigste prompt wegklikt, let niet meer op, en een beoordelaar die nooit moe wordt, vist de force-push en de npm publish eruit die jij erdoor had gelaten. In dezelfde repository hield hij ook git-commando's tegen die hij destructief vond, en een poging om iets publiek te zetten. Precies het soort actie waarvoor hij bestaat.

Het probleem zit bij subagents.

De regel die verdwijnt ​

Claude Code beslist over elke actie in een vaste volgorde. Eerst je allow-, ask- en deny-regels, dan leesacties en edits binnen het project, en al het andere gaat naar de classifier. De voor de hand liggende oplossing voor een geblokkeerde subagent is dus een allow-regel voor Agent, die al bij de eerste stap zou moeten beslissen.

Dat gebeurt niet, en dat komt door één alinea in de documentatie:

On entering auto mode, broad allow rules that grant arbitrary code execution are dropped

In de lijst eronder staan een kale Bash(*), interpreters met een wildcard, run-commando's van package managers, en allow-regels voor Agent. Zodra je auto mode verlaat, zet Claude Code ze terug. Zolang je erin zit, is je "Agent" weg, en in de melding bij een blokkade staat daar niets over.

De redenering klopt. Een subagent kan alles uitvoeren wat zijn tools toelaten, dus een algemene allow voor Agent is hetzelfde gat als Bash(*). Maar volgens dezelfde documentatie controleert de classifier een subagent op drie momenten: de taakomschrijving bij het starten, elke actie terwijl hij draait, en zijn rapport als hij klaar is. Bij die eerste controle sneuvelden mijn reviewers.

Een maand in één repository, geteld ​

Claude Code schrijft elke sessie weg in een JSONL-transcript, en een geblokkeerde call komt terug als tool-resultaat met de reden van de classifier erin. Die meldingen heb ik geteld in één repository, mijn Knossos MCP-server, van 12 september tot 14 oktober: 20 sessietranscripts op Claude Code 2.1.269 tot en met 2.1.296. Vier daarvan zijn forks van één gesprek met een kopie van de geschiedenis erin, dus ik heb elke call maar één keer geteld.

WatAantal
Agent-calls594
Geblokkeerd door de classifier86 (14,5%)
waarvan [Auto-Mode Bypass]70
waarvan [Data Exfiltration]12
waarvan [Instruction Poisoning] of zonder label4
Letterlijk herhaalde prompt die daarna wel doorging24 van 26

Bijna alle geblokkeerde starts waren doodgewoon werk: "Review Task 9 (spec + quality)", "Re-review Task 8 fix round 1", "Implement Phase 2 Task 5: release gate". In die repository lopen plannen via subagent-driven development uit de Superpowers-plugin, dus één feature betekent een stuk of twaalf subagents, vooral reviewers die een diff lezen en verslag doen zonder iets aan te passen.

Ik heb gezocht naar woorden die de classifier triggeren en weinig gevonden. Token, bypass en permission komen in de doorgelaten prompts ongeveer even vaak voor als in de geblokkeerde. Push komt wat vaker voor: in 42% van de geblokkeerde prompts tegen 33% van de doorgelaten. Het woord maakt een blokkade iets waarschijnlijker, maar beslist niets. De herhalingen geven de doorslag: 26 keer werd een geblokkeerde prompt woord voor woord opnieuw gestuurd voordat de sessie weer om toestemming ging vragen, en 24 keer ging hij door. Zelfde invoer, ander oordeel. De regel Auto-Mode Bypass is er om een agent te betrappen op "taking a denial in bad faith and tunneling the same action through a different path", en juist de letterlijke herhaling kwam er bijna altijd langs.

En dan is er de grens. Na drie blokkades op rij of twintig in één sessie pauzeert auto mode en vraagt Claude Code weer om toestemming, en die drempels kun je niet instellen. Twee van mijn sessies kwamen uit op 36 en 31 blokkades. Op dat punt zette ik auto mode telkens met de hand uit.

Nog een kleinere vondst: drie Agent-calls kregen helemaal geen oordeel, omdat een van mijn eigen hooks de invoer van de call aanpaste nadat het model hem had geschreven. De classifier moest dus iets anders beoordelen dan wat er zou draaien. Claude Code weigert zulke calls, terecht, en het ziet er precies uit als een blokkade.

Wat wel helpt ​

Zet je werkwijze in autoMode.allow. De uitzonderingen van de classifier staan in autoMode.allow, een lijst regels in gewone taal, en Auto-Mode Bypass is een zachte blokkade, dus een allow-regel kan hem opheffen. Dit is de regel die ik aan ~/.claude/settings.json heb toegevoegd, met "$defaults" erbij zodat de ingebouwde uitzonderingen blijven staan:

json
{
  "autoMode": {
    "allow": [
      "$defaults",
      "Dispatching subagents with the Agent tool to implement, review, re-review or research code in the current working repository, including instructing an implementer to edit files, run the test suite and commit to the current branch, is allowed: it is the user's standard plan-execution workflow."
    ]
  }
}

Beschrijf ook je opzet. Een regel in autoMode.environment die zegt dat reviewers alleen lezen en implementers in de huidige repository blijven, geeft de classifier de context waar hij anders naar raadt. Laat claude auto-mode critique eroverheen gaan, en kijk met claude auto-mode config wat de classifier echt te lezen krijgt. /auto-mode-setup stelt die regels voor je op en biedt aan om allow-regels die auto mode toch negeert uit ~/.claude/settings.json te halen.

Dat het gat daarmee dichtgaat, zie ik in mijn eigen cijfers niet terug. Ik heb deze regels ergens tussen 6 en 13 oktober toegevoegd, en op 13 oktober werden nog steeds drie van de veertien Agent-calls geblokkeerd. Twee daarvan waren Data Exfiltration, en dat is een harde blokkade: geen allow-regel en geen expliciete opdracht van jou die daar iets aan verandert, zo is hij ontworpen.

Gebruik /permissions en laat de modus staan. Het tabblad Recently denied toont elke blokkade, en met r mag het model die ene call opnieuw proberen. Omdat 24 van de 26 herhalingen doorgingen, ruim je zo de meeste valse meldingen op zonder auto mode te verlaten.

Grijp niet naar de omweg. Een mod die tool.check afhandelt, kan een actie goedkeuren voordat de classifier hem ziet, en wat de mod goedkeurt, controleert de classifier niet meer. Dat werkt, en het is ook gewoon je eigen Agent(*) met een paar extra stappen. De acties van een subagent gaan tijdens het draaien nog steeds langs de classifier, maar de controle bij het starten bestaat niet voor niets.

Draai werk met veel subagents in Manual mode. Als een sessie veertig reviewers gaat starten, is één keer Shift+Tab en een goedkeuring per start sneller dan halverwege tegen de grens van twintig blokkades aanlopen.

Een vaste allowlist is saai en voorspelbaar. De classifier is geen van beide. Hij leest mijn reviewer-prompt, zegt nee, leest dezelfde prompt opnieuw en zegt ja. Dat is dobbelen bij de start, en ik wil liever weten welke regel beslist dan hoe vaak het mijn kant op valt. Zolang die controle op dezelfde invoer niet hetzelfde oordeel geeft, behandel je een geblokkeerde subagent eerst als ruis, en vertrouw je voor de echte begrenzing op een subagent met een smalle lijst toegestane tools.

(39 van 39)
1Mijn Claude Code-setup: status line, plugins en terminal2Superpowers: hoe je Claude Code leert eerst te denken3Claude Code-hooks: deterministische controle over AI-workflows4Het CLAUDE.md-bestand: geef je AI permanent geheugen5Stop met vriendelijk vragen aan je agent6Wat er nieuw is in Claude Code: notities van het Londen-event7Het beste cijfer in Opus 4.8 is geen benchmark8Verouderd geheugen is erger dan geen geheugen9De agent is gewoon een loop10Bouw een MCP-server, en vraag je dan af of die moet bestaan11Skill, subagent, hook of slash command? Kies de juiste12Inloggen op MCP-servers vanuit je shell13Claude veilig toegang geven tot je SQL-database14De dag dat 'default' ineens 'Manual' heette15Claude Code-skills: zo schrijf je er een die werkt16Een goede Claude Code-subagent schrijven17Claude Code permissions instellen: de gids die ik miste18Claude Code sandboxen: toestemming is geen muur19Prompt injection voorkomen: verdediging voor wie agents bouwt20Het beste Claude-model voor code: welk model voor welke taak21Legacy code refactoren met AI: begin met characterization tests22Je MCP-server beveiligen: authenticatie, scopes en rate limits23Opus 5 is er, en je effort-instellingen kloppen niet meer24Incident response voor AI-agents: wat je doet als je coding agent de fout in gaat25Claude Code /doctor: wat hij controleert en wat er nieuw is26Context beheren in Claude Code: wanneer /clear en wanneer /compact27Git worktrees uitgelegd: parallel werken met AI-agents zonder botsingen28Claude Code plan mode: beslissen voordat de agent schrijft29Debuggen met een coding agent: geef hem het zoekwerk, de hypothese houd je zelf30Claude Code checkpoints en /rewind: wijzigingen van je agent terugdraaien31Claude Code cross-session messaging: sessies die elkaar berichten sturen32Audit logging voor AI-agents: wat Claude Code vastlegt en wanneer je iemand wakker belt33Claude Code-config delen met je team: wat de repo wel en niet afdwingt34Je Claude Code-sessie heeft geen klok35Claude Code in een grote codebase: de agent afbakenen tot wat ertoe doet36Een Claude Code-sessie terughalen die de resume-picker niet laat zien37Waar Claude Code zijn tijd aan kwijt is: een maand eigen sessies gemeten38Claude Code bijsturen tijdens het werk: Esc, de wachtrij en /btw39Claude Code auto mode: waarom je allow-regel voor Agent niets doet