‘Wijzig alsjeblieft alleen de concepten’ is een zinnige werkinstructie. Maar het is nog geen technisch controlepunt. Een hook kan een terugkerende regel toepassen op het moment dat een specifieke actie is voorbereid. Zo wordt een algemeen verzoek een controleerbare beslissing over een bepaalde toolaanroep.
De Claude Code-referentie beschrijft onder andere de gebeurtenis PreToolUse: die treedt op nadat de toolparameters zijn aangemaakt en voordat de aanroep wordt verwerkt. De hook kan een beslissing teruggeven. De volgende voorbeelden lichten een eigen ontwerp toe; er is daarvoor geen hookconfiguratie geïnstalleerd of uitgevoerd.
Welke informatie is er op het beslismoment beschikbaar?
Ons leerproject bevat een map met concepten en daarnaast een referentiebestand. De agent mag alleen concepten bewerken. Een zinnige regel kijkt daarom naar het specifieke doel van een schrijfactie. Hij beslist niet of de volledige inhoud van het gesprek betrouwbaar is.
De interface levert de toolnaam en de invoer. Voor een passend bestandsverzoek kan het doel daaruit worden bepaald. Een onbekende tool of een onbegrijpelijke invoer moet een eigen status opleveren. Een stille fout in het controleprogramma mag er niet uitzien als een succesvol gecontroleerd pad.
Een beslissing is een gestructureerde returnwaarde
Een illustratieve weigeringswaarde in de gedocumenteerde PreToolUse-structuur ziet er zo uit. De reden is onze eigen formulering; die beschrijft de lokale regel, geen algemene beoordeling van de gebruiker.
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "The target file is outside the drafts area."
}
}
Dit fragment is de returnwaarde, geen volledig controleprogramma. Het bevat noch de registratie van de hook, noch het inlezen en controleren van de invoer. Juist deze scheiding is nuttig: de regel, de technische evaluatie en de interface-uitvoer kunnen afzonderlijk worden bekeken.
Bij een pad horen is meer dan een overeenkomend voorvoegsel
Een louter vergelijken van tekenreeksen kan naburige mappen met vergelijkbare namen met elkaar verwarren. Je eigen regel moet daarom werken met eenduidig opgeloste paden en controleren of het doel daadwerkelijk tot de bedoelde hoofdmap behoort. Met verschillende scheidingstekens en koppelingen moet in de gebruikte omgeving rekening worden gehouden.
own rule logic, schematic:
Input fully readable? Otherwise check status unknown.
Tool belongs to the write path being handled? Otherwise not checked.
Resolve target and permitted root unambiguously.
Target really inside the root? Otherwise deny.
Assess only the specific call being handled.
Deze schets suggereert bewust geen volledige bescherming. Vooral externe programma's die zelf verdere bestanden wijzigen, vragen een andere afweging dan een enkel bestandsveld. Een toegestaan startbestand zegt nog niets over welke vervolgacties een script uitvoert.
Vier tests maken het bereik zichtbaar
Maak in een wegwerpproject een toegestaan bestand, een beschermde referentie en een naburige map met een vergelijkbare naam aan. Voeg een ongeldige invoer toe. Noteer voor elk geval vooraf welke beslissing wordt verwacht. Kijk daarna zowel naar de returnwaarde als naar de daadwerkelijke uitvoering.
Test ook een storing van het controleprogramma zelf. Het storingsgedrag hangt af van de gebeurtenis en de configuratie en hoort daarom bij de acceptatie. Een ontbrekende melding is geen bewijs dat de regel succesvol is gecontroleerd.
Noteer bij elke test ook of de hook überhaupt werd bereikt. Een actie die een andere route neemt, kan de regel omzeilen zonder dat de interne padcontrole verkeerd heeft gewerkt.
Een hook is geen volledig beschermingskader
PreToolUse betreft toolaanroepen. Context kan via andere routes in de sessie terechtkomen; de huidige referentie beschrijft op dit punt uitdrukkelijk grenzen. Een hook vervangt daarom noch rechten noch controle over de omgeving, en is geen algemene bescherming tegen prompt injection.
Begin met één enkele lokale regel en documenteer welke routes hij wel en niet afdekt. De technische winst ligt in een begrijpelijk controlepunt. Of dit controlepunt in jouw versie correct is ingericht, moet blijken uit een daadwerkelijke proef met de passende interfaces.
Bronnen en documentatiestand: 25 oktober 2026.

