Prompt w rodzaju „nigdy nie usuwaj plików” to prośba. Agent może ją pominąć, źle zrozumieć albo o niej zapomnieć w długiej sesji. Hook to blokada: zwykły skrypt, który uruchamia się przed akcją agenta i może ją zatrzymać, zanim cokolwiek się stanie.
Jak działa hook
Claude Code przed użyciem narzędzia (zapis pliku, komenda w terminalu) wysyła do skryptu opis tej akcji jako JSON. Skrypt czyta go i decyduje:
- kod wyjścia
0oznacza, że akcja przechodzi, - kod wyjścia
2blokuje akcję, a komunikat zestderrtrafia do agenta, który dowiaduje się, dlaczego nie wolno.
Hooki wpisuje się w settings.json w sekcji hooks, osobno dla każdego narzędzia (matcher).
Bezpiecznik 1: blokada rm -rf
Najprostszy i najbardziej opłacalny. Skrypt sprawdza komendę, którą agent chce wykonać w terminalu, i odrzuca ją, jeśli zawiera rm -rf. Agent dostaje komunikat i szuka innej drogi, na przykład usuwa konkretny plik.
Bezpiecznik 2: ochrona .env i kluczy API
Drugi skrypt pilnuje zapisów do plików. Blokuje:
- każdą zmianę w
.claude/settings*i w pliku.env, bo agent nie powinien sam poszerzać sobie uprawnień ani grzebać w sekrecie, - zapis treści, która wygląda jak klucz API (wzorzec
sk-…alboapi_key =).
Sekrety mają zostać poza repozytorium. Ten hook to zabezpieczenie na dzień, w którym zapomnisz o tej zasadzie.
Bezpiecznik 3: powiadomienie, gdy agent czeka
Ten niczego nie blokuje. Hook na zdarzenie Notification wysyła wiadomość na telefon (przez ntfy), kiedy agent zatrzymał się i czeka na Twoją decyzję. Dzięki temu nie siedzisz przy terminalu, a długie zadanie nie stoi godzinami na pytaniu o zgodę.
Czego hooki nie załatwiają
Hook widzi tylko to, na co napiszesz regułę. Proste dopasowanie tekstu da się obejść, na przykład inną komendą usuwającą pliki, a wzorzec na klucz API nie złapie każdego sekretu. Traktuj hooki jako jedną warstwę ochrony. Do ważnych projektów dołóż kopie, git i ograniczone uprawnienia. Cudzych hooków nie podpinaj w ciemno: działają z Twoimi uprawnieniami, więc najpierw przeczytaj każdy skrypt.
Gotowe pliki
Wszystkie trzy skrypty i konfigurację settings.json znajdziesz na stronie Hooki w Claude Code: 3 bezpieczniki do skopiowania. Jest tam też instalacja w projekcie i rozdziały odcinka na YouTube.
