Żeby dostać powiadomienie, gdy Claude Code skończy pracę, dodaj do ~/.claude/settings.json hook Stop, który uruchamia systemowe polecenie powiadomień. Stop odpala się w chwili, gdy Claude kończy odpowiedź. Na „Claude czeka na mnie” dodaj też hook Notification: odpala się, gdy prośba o uprawnienia czeka około sześciu sekund albo gdy Claude jest bezczynny przez mniej więcej minutę. Oba działają na Macu, Windows i Linux, a narzędzie takie jak Claude Code Notifier może wysyłać te same alerty na twój telefon.
01Co Claude Code robi sam z siebie
Claude Code już sam próbuje cię zaalarmować, gdy wygląda na to, że odszedłeś od terminala. Domyślnie wysyła powiadomienie systemowe w iTerm2, Ghostty i Kitty, w Apple Terminal może wysłać znak dzwonka, a w innych terminalach nie robi nic. W iTerm2 trzeba jeszcze włączyć ustawienia alertów, zanim cokolwiek się pokaże.
Jeśli więc korzystasz z terminala w VS Code, Warpa, Windows Terminal czy większości terminali na Linux, zwykle nie dostaniesz nic. Dzwonek terminala możesz wymusić ustawieniem preferredNotifChannel, opisanym w poradniku o dzwonku terminala. Żeby mieć prawdziwe powiadomienie systemowe w dowolnym terminalu, potrzebujesz hooka.
02Dwa hooki, których potrzebujesz
Hooki to polecenia, które Claude Code uruchamia w określonych momentach sesji. Tutaj liczą się dwa:
StopGdy Claude kończy odpowiedź (nie gdy mu przerwiesz)„Claude skończył”Notification z matcherem permission_promptProśba o uprawnienia czeka około sześciu sekund, a ty nic nie wpisujesz„Claude czeka na zatwierdzenie”Notification z matcherem idle_promptOkoło 60 sekund po tym, jak Claude skończył, jeśli od tego czasu nic nie wpisałeśPrzypomnienie, że twoja kolejStop jest najszybszy. Odpala się na końcu każdej tury, od razu. Typy Notification zależą od tego, czy nie patrzysz: każde naciśnięcie klawisza je odracza, więc nie dostajesz pingów, gdy obserwujesz ekran. Jeśli chcesz sygnał w chwili, gdy Claude prosi o uprawnienia, użyj zamiast tego hooka PermissionRequest, opisanego w poradniku o PermissionRequest.
Ogólnie o działaniu hooków (zdarzenia, matchery, pliki ustawień, kody wyjścia) przeczytasz w objaśnieniu hooków w Claude Code.
03Działająca konfiguracja na macOS
Otwórz ~/.claude/settings.json (utwórz go, jeśli nie istnieje) i dodaj poniższe. Jeśli plik ma już obiekt hooks, dodaj Stop i Notification jako klucze w jego środku, zamiast go zastępować.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude has finished\" with title \"Claude Code\"'"
}
]
}
],
"Notification": [
{
"matcher": "permission_prompt|idle_prompt",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
Stop nie ma matchera, więc odpala się w każdej turze. Matcher Notification ogranicza go do dwóch typów oznaczających „wróć”.
Jeśli nic się nie pojawia, macOS może blokować Script Editor, którego osascript używa do wyświetlania powiadomień. Uruchom raz w Terminalu osascript -e 'display notification "test"', potem otwórz Ustawienia systemowe > Powiadomienia, znajdź Script Editor i włącz Zezwalaj na powiadomienia.
04Ta sama konfiguracja na Linux i Windows
Zostaw powyższą strukturę JSON i podmień tylko stringi w command.
Linux (wymaga demona powiadomień pulpitu, więc nie zadziała na serwerze headless):
"command": "notify-send 'Claude Code' 'Claude has finished'"
Jeśli brakuje notify-send, zainstaluj libnotify-bin na Debianie i Ubuntu albo odpowiednik w swojej dystrybucji. Konfigurację przez SSH i na serwerach opisuje poradnik powiadomienia przez SSH.
Windows (PowerShell). Przykład od Anthropic otwiera okno komunikatu zamiast powiadomienia w rogu ekranu:
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude has finished', 'Claude Code')\""
Okno może pojawić się za oknem terminala, więc najpierw przetestuj polecenie w PowerShell. W WSL powershell.exe musi być dostępny przez interop Windows. Inne opcje znajdziesz w poradniku dla Windows.
05Sprawdź, czy działa
- Wpisz
/hooksw Claude Code. Twoje hooki powinny być widoczne podStopiNotification. - Zadaj Claude krótkie pytanie. Gdy odpowie, powinno pojawić się powiadomienie
Stop. - Poproś o coś, co wymaga uprawnień, przełącz się na inne okno i poczekaj. Powiadomienie
permission_promptprzyjdzie po około sześciu sekundach.
Zmiany w settings.json są zwykle wczytywane od razu. Jeśli hook nie pojawia się w /hooks, sprawdź, czy plik to poprawny JSON (bez końcowych przecinków i komentarzy). Uruchom Claude Code poleceniem claude --debug, żeby zobaczyć, co zrobił każdy hook. Więcej rozwiązań znajdziesz na liście kontrolnej rozwiązywania problemów.
06Powiadomienia na telefonie
Powiadomienie na pulpicie pomaga tylko wtedy, gdy siedzisz przy biurku. Kiedy odejdziesz, alert musi trafić gdzie indziej. Są trzy popularne sposoby:
- Własny serwis push, np. ntfy, wywoływany przez
curlz tych samych hooków. Tanio i elastycznie. Zobacz poradnik ntfy. - Webhook czatu dla Telegram, Slack lub Discord. Dobre, jeśli i tak cały czas siedzisz na czacie. Zobacz poradnik o webhookach czatu.
- Claude Code Notifier, który skonfiguruje hooki za ciebie i pozwoli odpowiadać z telefonu.
Rozwiązania DIY w zupełności wystarczą, jeśli chcesz tylko dostać ping. Ich ograniczenie polega na tym, że działają w jedną stronę. Dowiadujesz się, że Claude czeka, ale i tak musisz wrócić do klawiatury, żeby cokolwiek zatwierdzić.
Claude Code Notifier to niezależne narzędzie (nie od Anthropic) złożone z dwóch części: ccn, darmowego narzędzia wiersza poleceń dla Maca, Windows i Linux, oraz aplikacji na iPhone i Android. Instalujesz je jedną linijką:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Na Windows użyj irm https://claudecodenotifier.com/install.ps1 | iex w PowerShell (wsparcie dla Windows jest w becie). Inne opcje, w tym Homebrew, npx @touchtap/ccn i plugin do Claude Code, znajdziesz na stronie ccn.
Instalacja dodaje siedem wpisów hooków, z których każdy uruchamia ccn hook, nie rusza reszty twojego settings.json i zapisuje obok jednorazową kopię zapasową. Nawet bez telefonu ccn pokazuje powiadomienie na pulpicie, gdy Claude skończy, potrzebuje uprawnień albo zadaje pytanie. Ta część jest darmowa i działa bez sieci.
Sparuj telefon poleceniem ccn pair, a dostaniesz dodatkowo:
- push „Claude skończył” w chwili zakończenia tury;
- prośby o uprawnienia, które możesz zezwolić jednorazowo, na całą sesję albo odrzucić;
- pytania wielokrotnego wyboru od Claude, na które odpowiesz z telefonu;
- pole do wysłania Claude kolejnej instrukcji zaraz po tym, jak skończy.
Jeśli pisałeś coś w ciągu ostatnich 30 sekund, nic nie czeka na telefon, a terminal pyta jak zwykle. Aplikacje wymagają subskrypcji lub zakupu dożywotniego; zobacz cennik. Konfigurację krok po kroku opisuje parowanie telefonu.
07FAQ
Dlaczego mój Notification hook odpala się tak późno?
Typ permission_prompt czeka, aż prompt będzie na ekranie przez około sześć sekund bez twojej reakcji, a idle_prompt czeka około 60 sekund po tym, jak Claude skończy. To opóźnienie jest celowe, żeby nie pingować cię, gdy patrzysz. Do natychmiastowego alertu „skończone” użyj hooka Stop, a do natychmiastowego „wymaga zatwierdzenia” hooka PermissionRequest.
Czy Stop hook odpala się, gdy przerwę Claude klawiszem Esc?
Nie. Stop nie uruchamia się, gdy tura kończy się twoim przerwaniem. Nie uruchamia się też, gdy tura kończy się błędem API, np. przekroczeniem rate limitu. Claude Code wywołuje wtedy osobne zdarzenie StopFailure, które możesz obsłużyć hookiem w ten sam sposób.
Czy Stop hook odpala się po każdej wiadomości, czy dopiero po zakończeniu całego zadania?
Po każdej turze. Claude Code nie wie, kiedy twoje zadanie jako całość jest skończone, tylko kiedy przestał odpowiadać. Przy dłuższej wymianie zdań dostaniesz jeden alert na odpowiedź. Jeśli to za dużo, użyj zamiast tego powiadomienia idle_prompt, które odpala się dopiero, gdy nie ma cię przez około minutę.
Czy to działa w terminalu VS Code lub JetBrains?
Tak. Hooki uruchamia sam Claude Code, a nie terminal, więc działają w każdym terminalu, także w IDE. Od terminala zależą tylko wbudowane powiadomienia. Zobacz poradnik o terminalach w IDE.
Czy mogę dostawać powiadomienia na telefon bez instalowania na nim czegokolwiek?
Częściowo. Hook wysyłający do ntfy lub webhooka czatu dotrze do aplikacji, którą już masz. Ale tylko poinformuje cię, że coś się stało. Żeby zatwierdzać lub odpowiadać z telefonu, potrzebujesz czegoś, co odeśle twoją odpowiedź do hooka — i to właśnie robią aplikacje Claude Code Notifier.