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

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