Claude Code
Hooks în Claude Code: cum oprești o acțiune înainte să ruleze
Un hook în Claude Code este un handler care rulează automat la un moment fix din sesiune: o comandă, un apel HTTP sau un prompt. Hook-ul PreToolUse rulează înainte ca Claude să folosească o unealtă și o poate opri, cu codul de ieșire 2 sau cu decizia deny, iar motivul ajunge la Claude.
Actualizat la
Ce sunt hook-urile în Claude Code?
Handlere scrise de tine care rulează la evenimente din sesiune, de exemplu înainte și după folosirea unei unelte sau la trimiterea unui prompt. Handlerul poate fi o comandă shell, un apel HTTP, o unealtă dintr-un server MCP, un prompt evaluat de un model sau un sub-agent. Le configurezi în settings.json, pe eveniment și matcher.
Ce face hook-ul PreToolUse?
- Rulează înainte de apelul uneltei și primește pe stdin un JSON cu tool_name și tool_input.
- Codul de ieșire 2 oprește apelul, iar textul din stderr ajunge la Claude ca motiv.
- Poate întoarce și un JSON cu permissionDecision: allow, deny, ask sau defer.
- Ieșirea fără output și fără eroare nu aprobă nimic: apelul trece prin permisiunile obișnuite.
Cum arată un hook util?
Un hook PreToolUse pe Bash citește comanda și o oprește când încearcă să șteargă un folder întreg, cu un motiv pe care Claude îl citește. Alt hook filtrează outputul testelor, ca la Claude să ajungă doar eșecurile și să rămână mai mult context liber.
Hook sau regulă de permisiune?
Regulile de permisiune se evaluează în ordinea deny, ask, allow, iar prima potrivire decide. Hook-ul PreToolUse nu le ocolește: o regulă deny blochează chiar dacă hook-ul a răspuns allow. Invers, un hook care iese cu codul de ieșire 2 oprește apelul înainte de reguli, chiar dacă o regulă allow l-ar fi lăsat să treacă.
Unde se oprește un hook?
- Filtrul if de pe handler e aproximativ, așa că documentația cere permisiuni pentru un allow sau deny ferm.
- Regulile pe Read și Edit nu prind un script care deschide singur fișiere, iar cele pe Bash potrivesc doar textul comenzii. Izolarea la nivel de sistem vine din sandbox.
- Pentru acțiuni cu impact mare, OWASP recomandă și aprobarea unui om.
Întrebări frecvente
Ce face codul de ieșire 2 într-un hook?
Pe evenimentele care pot bloca, oprește acțiunea, iar stderr devine motivul arătat lui Claude. Blocajul rămâne chiar dacă hook-ul tipărește și JSON.
De ce hook-ul meu nu blochează când iese cu eroare?
Doar codul de ieșire 2 blochează. Orice alt cod de eroare e tratat ca eroare care nu blochează, iar acțiunea merge mai departe.
Poate un hook să aprobe ce interzice o regulă deny?
Nu. Claude Code evaluează regulile deny și ask indiferent ce răspunde hook-ul PreToolUse.
Unde se configurează hook-urile?
În settings.json, la nivel de utilizator sau de proiect, în setările gestionate de organizație, în plugin-uri și în frontmatter-ul skill-urilor și al sub-agenților. Intrările de pe niveluri diferite se adună.
Hook sau instrucțiune în CLAUDE.md?
Claude citește CLAUDE.md ca context la începutul sesiunii. Ce trebuie oprit indiferent ce decide Claude merge într-un hook PreToolUse.
Surse
Citește și
Articole înrudite
Human in the loop: când aprobă omul ce face agentul AI
Human in the loop înseamnă că un om aprobă acțiunile cu impact mare ale unui agent AI înainte să se întâmple. Restul merge singur, cu unelte și permisiuni minime, iar autorizarea stă în sistemele din aval, în afara deciziei modelului. Așa recomandă OWASP să ții în frâu un agent cu prea multă putere.CiteșteSub-agenți în Claude Code: ce sunt și când îi folosești
Un sub-agent în Claude Code este un asistent separat, cu fereastra lui de context, propriul system prompt și doar uneltele pe care i le permiți. Claude îi dă o sarcină, sub-agentul lucrează singur și trimite înapoi doar rezumatul, așa că logurile și rezultatele lungi nu umplu conversația principală.Citește
Studii de caz
Servicii legate
Vrei gărzi pe agenții firmei tale?
Spune-ne ce acțiuni fac agenții voștri azi. Vedem împreună ce trebuie oprit înainte să ruleze.
Scrie-ne