Workbranch › Poradniki

Poradnik

Jak używać hooków w Claude Code

Chcesz, żeby coś działo się za każdym razem, na przykład formatowanie pliku po edycji przez Claude albo powiadomienie, gdy Claude na ciebie czeka, bez liczenia na to, że Claude o tym pamięta. Właśnie do tego służą hooki. Ten poradnik wyjaśnia, czym są, przeprowadza przez pierwszy hook i pokazuje, gdzie je umieścić.

Zaktualizowano 30 października 2026

Krótka odpowiedź: hook to polecenie powłoki, które Claude Code uruchamia automatycznie w określonym momencie, na przykład przed uruchomieniem narzędzia, po edycji pliku albo gdy Claude potrzebuje twojej odpowiedzi. Hooki dodajesz pod kluczem hooks w pliku ustawień, takim jak ~/.claude/settings.json (wszystkie projekty) lub .claude/settings.json (jeden projekt), a potem wpisujesz /hooks, żeby sprawdzić, czy Claude Code je widzi.

Nazwy zdarzeń, lokalizacje plików i działanie opisane poniżej pochodzą z dokumentacji Claude Code od Anthropic z października 2026. Claude Code często się zmienia, więc jeśli czegoś brakuje, uruchom claude update.

Czym są hooki i jak pomagają

Instrukcje w prompcie czy w pliku CLAUDE.md to sugestie: Claude zwykle ich przestrzega, ale to on decyduje. Hook działa inaczej. Sam Claude Code uruchamia twoje polecenie za każdym razem, gdy wystąpi zdarzenie, więc działanie jest deterministyczne. Typowe zastosowania z poradnika Anthropic:

Do najczęściej używanych zdarzeń należą SessionStart (sesja się zaczyna lub zostaje wznowiona), UserPromptSubmit (wysyłasz prompt), PreToolUse (przed wywołaniem narzędzia; hook może je zablokować), PostToolUse (po udanym wywołaniu narzędzia), Notification, Stop (Claude kończy odpowiedź), PreCompact i SessionEnd. Pełna lista w dokumentacji hooków jest dużo dłuższa.

Pierwszy hook: powiadomienie na pulpicie

Ten przykład, oparty na instrukcji Anthropic, powiadamia cię na macOS za każdym razem, gdy Claude Code potrzebuje twojej uwagi.

  1. Otwórz ~/.claude/settings.json w edytorze tekstu. Jeśli plik nie istnieje, utwórz go.
  2. Dodaj obiekt hooks z wpisem Notification. W środku umieść listę grup dopasowań; każda ma matcher (zostaw pusty ciąg, żeby hook działał przy każdym powiadomieniu) i listę hooks z jednym elementem "type": "command".
  3. Jako polecenie ustaw osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. W systemie Linux przykład Anthropic używa zamiast tego notify-send. Pamiętaj, żeby w JSON poprzedzić wewnętrzne cudzysłowy ukośnikiem wstecznym.
  4. Jeśli plik ma już klucz hooks, dodaj Notification obok istniejących zdarzeń zamiast zastępować cały obiekt.
  5. W Claude Code wpisz /hooks. Przeglądarka hooków powinna pokazać nowy hook pod Notification. Naciśnij Esc, żeby wrócić.
  6. Poproś Claude o coś, co wymaga zgody, i przełącz się na inne okno. Powinno pojawić się powiadomienie.

Żeby hook działał tylko przy niektórych powiadomieniach, ustaw matcher na typ, taki jak permission_prompt (pytanie o zgodę czeka od około sześciu sekund) lub idle_prompt (Claude skończył, a ty nic nie wpisujesz od około minuty).

Drugi przykład: formatowanie plików po edycji

W przypadku hooka projektu umieść konfigurację w .claude/settings.json w głównym folderze projektu. Użyj zdarzenia PostToolUse z matcherem Edit|Write, żeby hook działał tylko po narzędziach edytujących pliki. Przykładowe polecenie Anthropic odczytuje ścieżkę zmienionego pliku z JSON, który Claude Code przekazuje na standardowe wejście, i przekazuje ją do Prettiera: jq -r '.tool_input.file_path' | xargs npx prettier --write. Wymaga zainstalowanego jq. Udany hook nie pokazuje niczego w rozmowie; po prostu zobaczysz sformatowany plik.

Gdzie konfiguruje się hooki

LokalizacjaDotyczyUdostępniane?
~/.claude/settings.jsonWszystkich twoich projektówNie, tylko twój komputer
.claude/settings.jsonJednego projektuTak, można zatwierdzić w repozytorium
.claude/settings.local.jsonJednego projektuNie, pozostaje poza git
Ustawienia zasad zarządzanychCałej organizacjiUstawiane przez administratorów
Plik hooks/hooks.json wtyczkiCzasu, gdy wtyczka jest włączonaDołączone do wtyczki
Frontmatter skillaReszty sesji po wywołaniu skillaW pliku skilla
Frontmatter subagentaCzasu działania tego subagentaW pliku subagenta

Żeby wyłączyć hooki, ustaw "disableAllHooks": true w pliku ustawień. Hooki z ustawień zarządzanych działają dalej, chyba że ta opcja jest ustawiona także tam.

Jak hook odpowiada

Gdy wystąpi zdarzenie, Claude Code wysyła jego szczegóły jako JSON na standardowe wejście twojego polecenia. Polecenie odpowiada kodem wyjścia:

Żeby mieć dokładniejszą kontrolę, zakończ z kodem 0 i zamiast tego wypisz obiekt JSON. Dla jednego hooka wybierz jedno podejście.

Warto wiedzieć

Jeśli to nie działa

Śledź, co każda sesja zostawia otwarte

Wtyczka Workbranch dla Claude Code korzysta z podsumowania na starcie sesji: w folderze połączonym z projektem Workbranch pokazuje na początku sesji, co jest jeszcze otwarte, a po słowach „save this to Workbranch” (zapisz to w Workbranch) zapisuje zadania, decyzje i otwarte pytania z sesji w tym projekcie. Zobacz Workbranch dla Claude. Dopiero zaczynasz z Claude Code? Zacznij od poradnika jak zacząć pracę z Claude Code.

Źródła

Najczęściej zadawane pytania

Czy Claude może napisać hook za mnie?

Tak. Poradnik Anthropic mówi, że możesz opisać potrzebny hook w prompcie Claude Code i poprosić Claude, żeby dodał go do twoich ustawień. Potem sprawdź wynik poleceniem /hooks.

Czy hook może zatrzymać Claude nawet w trybie bypass?

Hook PreToolUse, który zwraca decyzję deny, blokuje narzędzie w każdym trybie uprawnień, także w bypassPermissions. Dlatego hooki przydają się do zasad, których nie da się wyłączyć zmianą trybu.

Czy są hooki, które zamiast skryptu używają modelu?

Tak. Oprócz poleceń powłoki hook może być żądaniem HTTP, wywołaniem narzędzia MCP, pojedynczym promptem ocenianym przez model Claude albo eksperymentalnym hookiem agenta z dostępem do narzędzi.