Claude Code domyślnie nie pokazuje powiadomień na pulpicie w Windows Terminal, PowerShell ani w terminalu VS Code, więc w Windows musisz dodać je sam. Wstaw hook Notification (i hook Stop dla „skończone”) do %USERPROFILE%\.claude\settings.json, który uruchamia PowerShell: okno komunikatu działa bez instalowania czegokolwiek, a moduł BurntToast daje porządny toast. Jeśli Claude Code działa w WSL, hook uruchamia się w Linux, więc musi wywołać powershell.exe przez interop Windows, żeby dotrzeć do pulpitu Windows.
01Natywny Windows czy WSL: gdzie działają twoje hooki
Claude Code działa albo natywnie w Windows, albo w WSL, i od tego zależy, jak działa hook powiadomień.
- Natywny Windows. Ustawienia są w
%USERPROFILE%\.claude\settings.json. Według dokumentacji hooków Anthropic hooki typu command domyślnie działają w Git Bash, a w PowerShell, gdy Git Bash nie jest zainstalowany. Możesz wymusić PowerShell dla pojedynczego hooka przez"shell": "powershell"; Claude Code użyje wtedypwsh.exe(PowerShell 7), jeśli go znajdzie, a w przeciwnym raziepowershell.exe(Windows PowerShell 5.1). - WSL. Instalujesz i uruchamiasz
claudew terminalu WSL, więc plik ustawień to ten linuksowy,~/.claude/settings.jsonw twojej dystrybucji, a hooki działają w powłoce Linux.notify-sendzwykle nie dociera stamtąd do pulpitu Windows. Zamiast tego wywołuj programy Windows.
02Szybki test: dzwonek terminala
Najprostszy sygnał to dzwonek. Dodaj to do pliku ustawień:
{
"preferredNotifChannel": "terminal_bell"
}
Claude Code wyśle wtedy znak dzwonka, gdy skończy albo będzie na ciebie czekać. W Windows Terminal działanie dzwonka ustawiasz per profil przez bellStyle w jego settings.json. "bellStyle": ["window", "taskbar"] miga oknem i przyciskiem na pasku zadań zamiast odtwarzać dźwięk. Więcej o tym znajdziesz w poradniku o dzwonku terminala. Pomaga to tylko wtedy, gdy masz terminal na oku.
03Notification hook z PowerShell
To przykład dla Windows z poradnika o hookach od Anthropic. Działa bez instalowania czegokolwiek:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
}
]
}
]
}
}
Otwiera okno dialogowe, a nie toast w rogu ekranu, i to okno może się pojawić za terminalem. Najpierw przetestuj komendę w PowerShell. Wpisz /hooks w Claude Code, żeby sprawdzić, czy hook jest załadowany.
Pusty matcher odpala się dla każdego typu powiadomienia, w tym permission_prompt (zatwierdzenie czeka ok. sześciu sekund) i idle_prompt (Claude skończył ok. 60 sekund temu). Szczegóły czasów opisuje poradnik o Notification hook.
04Prawdziwy toast z BurntToast
BurntToast to popularny, rozwijany przez społeczność moduł PowerShell do toastów w Windows. Zainstaluj go raz dla swojego użytkownika:
Install-Module -Name BurntToast -Scope CurrentUser
Potem sprawdź, czy działa:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
Użyj go w hooku. Ta wersja uruchamia PowerShell bez profilu i omija execution policy tylko dla tego wywołania, więc działa tak samo z Git Bash i z PowerShell:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
Hook Stop odpala się na końcu każdej tury, więc o skończonym zadaniu dowiadujesz się od razu, a nie minutę później; zobacz poradnik o Stop hook. "async": true uruchamia hook w tle, żeby wolny start PowerShell nie blokował Claude Code.
Jeśli toasty w ogóle się nie pojawiają, sprawdź Ustawienia > System > Powiadomienia: powiadomienia muszą być włączone, a tryb Nie przeszkadzać wyłączony. Toasty BurntToast zwykle widnieją tam pod Windows PowerShell, który też musi mieć zezwolenie na powiadomienia.
05Z WSL: wywołaj Windows przez interop
W WSL hook działa w Linux, ale WSL potrafi uruchamiać programy Windows po nazwie .exe. Poradnik Anthropic zaznacza, że powershell.exe musi być w PATH dzięki interop Windows. Tak jest domyślnie; steruje tym appendWindowsPath w sekcji [interop] pliku /etc/wsl.conf. Sprawdź w powłoce WSL:
command -v powershell.exe
Gdy BurntToast jest zainstalowany po stronie Windows, hook w ~/.claude/settings.json w WSL to ta sama komenda:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
Start Windows PowerShell z WSL może trwać sekundę lub dłużej, co jest kolejnym powodem, by użyć "async": true.
06Gdzie pasuje Claude Code Notifier
Powyższe hooki wystarczą, gdy siedzisz przy biurku. Gdy odejdziesz, nic ci nie dają, a toast nie zatwierdzi komendy za Claude.
Claude Code Notifier to niezależne narzędzie (od TouchTap, nie od Anthropic) zbudowane na hookach Claude Code. Jego darmowe narzędzie CLI, ccn, działa na Macu, Windows i Linux; wsparcie dla Windows jest w becie. W natywnym Windows zainstaluj je z PowerShell:
irm https://claudecodenotifier.com/install.ps1 | iex
Dodaje swoje wpisy hooków do ustawień Claude Code, resztę pliku zostawia w spokoju i robi kopię zapasową. Od razu pokazuje toast w Windows, gdy Claude skończy, potrzebuje uprawnienia albo zadaje pytanie, bez telefonu i bez sieci. Ponieważ podpina się pod Claude Code, a nie pod terminal, działa tak samo w Windows Terminal, PowerShell i terminalach IDE.
Jeśli Claude Code działa w WSL, zainstaluj ccn w WSL komendą dla Linux, bo to tam są Claude Code i jego ustawienia:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Potem uruchom ccn test. To, czy powiadomienie z WSL dotrze na pulpit Windows, zależy od twojej konfiguracji WSL, więc w WSL pewniejszą drogą jest telefon. Po sparowaniu telefonu zdarzenia przychodzą jako powiadomienia push, a z telefonu możesz zezwolić raz, zezwolić na całą sesję albo odmówić uprawnienia, odpowiadać na pytania Claude i wysłać kolejne polecenie. Zobacz parowanie telefonu, stronę ccn i cennik aplikacji mobilnych.
Jeśli instalujesz ccn, usuń własne hooki z toastami, żeby nie dostawać zdublowanych powiadomień.
07FAQ
Dlaczego mój hook w PowerShell nic nie robi w Windows?
Najpierw uruchom dokładnie to samo polecenie w PowerShell. Jeśli tam działa, sprawdź, czy /hooks pokazuje hook i czy escapowanie w JSON-ie jest poprawne (każdy wewnętrzny " wymaga backslasha). W przypadku BurntToast upewnij się, że moduł został zainstalowany dla tego samego użytkownika, który uruchamia Claude Code, i że tryb Nie przeszkadzać jest wyłączony.
Czy Claude Code w Windows potrzebuje Git Bash do hooków?
Nie. Hooki działają w Git Bash, jeśli masz zainstalowany Git for Windows, a w przeciwnym razie w PowerShell. Możesz też ustawić "shell": "powershell" dla dowolnego pojedynczego hooka.
Czy notify-send działa w WSL?
Zwykle nie, jeśli chodzi o pulpit Windows. Niezawodny sposób to wywołanie powershell.exe z hooka przez interop WSL, jak pokazano wyżej.
Czy Windows Terminal sam pokaże powiadomienia Claude Code?
Domyślnie nie. Ustaw preferredNotifChannel na terminal_bell i wybierz bellStyle, który miga oknem lub paskiem zadań, albo użyj hooka z toastem.
Czy da się za darmo dostać powiadomienie w Windows?
Tak. Zarówno powyższe hooki w PowerShell, jak i powiadomienia na pulpicie z ccn są darmowe. Tylko aplikacje na telefon wymagają subskrypcji lub jednorazowego zakupu dożywotniej licencji.