Claude Code edytuje plik. Automatycznie odpala się Prettier. Zapisuje zmiany. Automatycznie uruchamia się lint. Próbuje wykonać rm -rf. Hook blokuje komendę i informuje, że to zabronione.
To Hooks – automatyczne reakcje na zdarzenia w Claude Code. Bez pisania ani jednej linijki kodu AI.
- Czym są Hooks
- Dostępne eventy
- Przykład 1: Lint po każdej edycji pliku
- Przykład 2: Blokowanie niebezpiecznych komend
- Przykład 3: Powiadomienie gdy Claude czeka
- Gdzie skonfigurować Hooks
Hooks to komendy shell, które wykonują się automatycznie w określonych momentach sesji Claude Code. Możesz reagować na:
- Edycję pliku (i uruchomić formatowanie)
- Wykonanie komendy (i zablokować niebezpieczne)
- Zakończenie odpowiedzi (i wysłać powiadomienie)
- Rozpoczęcie sesji (i załadować kontekst)
Hook składa się z trzech elementów:
- Event – kiedy się odpala (np.
PostToolUse) - Matcher – na jakie narzędzie reaguje (np.
Write) - Handler – co wykonać (np.
prettier --write)
Hooks działają bez udziału AI. To Ty definiujesz logikę w prostych skryptach shell. Claude Code tylko je wywołuje w odpowiednich momentach.
Dostępne eventy
Claude Code oferuje kilkanaście eventów, na które możesz reagować:
| Event | Kiedy się odpala | Zastosowanie |
| SessionStart | Początek sesji | Załadowanie kontekstu, logi |
| PreToolUse | Przed użyciem narzędzia | Blokowanie niebezpiecznych operacji |
| PostToolUse | Po użyciu narzędzia | Lint, formatowanie, walidacja |
| Stop | Claude kończy odpowiadać | Podsumowanie, commit |
| Notification | Claude wysyła powiadomienie | Push, Slack, macOS alert |
Eventy typu Pre mogą blokować akcje. Eventy typu Post reagują na już wykonane operacje.
Chcesz, żeby każdy plik edytowany przez Claude Code przechodził przez ESLint? Dodaj hook w .claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx eslint --fix \"$FILE_PATH\""
}
]
}
]
}
}Ten hook odpala się po każdym użyciu narzędzia Write (edycja pliku). Zmienna $FILE_PATH zawiera ścieżkę do edytowanego pliku.
Efekt: Claude edytuje kod → ESLint automatycznie poprawia styl → plik jest od razu zgodny ze standardami.
## Przykład 2: Blokowanie niebezpiecznych komendNie chcesz, żeby Claude przypadkowo uruchomił rm -rf? Stwórz skrypt .claude/hooks/block-rm.sh:
#!/bin/bash
COMMAND=$(jq -r '.tool_input.command')
if echo "$COMMAND" | grep -q 'rm -rf'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "Destrukcyjna komenda zablokowana"
}
}'
else
exit 0
fiI dodaj hook w settings:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/block-rm.sh"
}
]
}
]
}
}Efekt: Claude próbuje uruchomić rm -rf /tmp/build → hook zwraca deny → komenda nie zostaje wykonana → Claude dostaje informację o powodzie blokady.
Hooki PreToolUse mogą zwracać permissionDecision: allow, deny lub ask. To pozwala budować własne polityki bezpieczeństwa.
Claude Code może działać minutami. Chcesz dostać powiadomienie macOS gdy skończy? Użyj eventu Notification:
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude czeka na Twój input\" with title \"Claude Code\"'"
}
]
}
]
}
}Efekt: Claude kończy zadanie i czeka na Twój input → macOS wyświetla powiadomienie → wracasz do terminala.
Możesz też wysyłać powiadomienia na Slack, Discord czy przez Pushover.
## Gdzie skonfigurować HooksLokalizacja pliku settings decyduje o zakresie:
| Plik | Zakres | Dzielony z zespołem |
| ~/.claude/settings.json | Wszystkie projekty | Nie |
| .claude/settings.json | Ten projekt | Tak (przez git) |
| .claude/settings.local.json | Ten projekt | Nie (gitignore) |
Typowa konfiguracja:
- Hooki bezpieczeństwa (blokowanie rm -rf) →
~/.claude/settings.json - Hooki projektowe (lint, format) →
.claude/settings.json - Hooki osobiste (powiadomienia) →
.claude/settings.local.json
Podsumowanie
Hooks to automatyzacja bez AI. Ty definiujesz logikę, Claude Code wywołuje ją w odpowiednich momentach. To idealne narzędzie do:
- Wymuszania standardów kodu (lint, format)
- Ochrony przed niebezpiecznymi operacjami
- Integracji z zewnętrznymi systemami (powiadomienia, logi)
Jeśli chcesz stworzyć bardziej złożone workflow, sprawdź poprzedni wpis: Skills w Claude Code: własne komendy slash.
Więcej o agentach AI i ich automatyzacji znajdziesz w artykule Agentic AI: przyszłość automatyzacji.

