Claude Code, Windows Terminal, PowerShell veya VS Code terminalinde varsayılan olarak masaüstü bildirimi göstermez; bu yüzden Windows'ta bunu kendiniz eklersiniz. %USERPROFILE%\.claude\settings.json dosyasına PowerShell çalıştıran bir Notification hook (ve "bitti" için bir Stop hook) ekleyin: mesaj kutusu hiçbir şey kurmadan çalışır, BurntToast modülü ise gerçek bir toast bildirimi verir. Claude Code WSL içinde çalışıyorsa hook Linux'ta çalışır; bu durumda Windows masaüstüne ulaşmak için Windows interop üzerinden powershell.exe çağırması gerekir.
01Doğrudan Windows mı, WSL mi: hook'larınız nerede çalışır
Claude Code ya doğrudan Windows üzerinde ya da WSL içinde çalışır ve bildirim hook'unun nasıl çalışacağını bu belirler.
- Doğrudan Windows. Ayarlar
%USERPROFILE%\.claude\settings.jsondosyasındadır. Anthropic'in hooks referansına göre komut hook'ları varsayılan olarak Git Bash'te, Git Bash kurulu değilse PowerShell'de çalışır. Tek bir hook için"shell": "powershell"ile PowerShell'i zorunlu kılabilirsiniz; bu durumda Claude Code bulursapwsh.exe(PowerShell 7), bulamazsapowershell.exe(Windows PowerShell 5.1) kullanır. - WSL.
claude'u WSL terminalinde kurup çalıştırırsınız; dolayısıyla ayar dosyası Linux tarafındaki, dağıtımınızın içindeki~/.claude/settings.jsondosyasıdır ve hook'lar bir Linux shell'inde çalışır. Oradakinotify-sendgenellikle Windows masaüstüne ulaşmaz. Bunun yerine Windows programlarını çağırın.
02Hızlı test: terminal zili
En zahmetsiz sinyal zildir. Ayar dosyanıza şunu ekleyin:
{
"preferredNotifChannel": "terminal_bell"
}
Bundan sonra Claude Code işini bitirdiğinde veya sizi beklediğinde bir zil karakteri gönderir. Windows Terminal'de zilin ne yapacağı, kendi settings.json dosyasındaki bellStyle ile profil bazında ayarlanır. "bellStyle": ["window", "taskbar"] ses çalmak yerine pencereyi ve görev çubuğu düğmesini yanıp söndürür. Bu yöntem hakkında daha fazlası terminal zili rehberinde. Yalnızca terminal görünür durumdayken işe yarar.
03PowerShell ile bir Notification hook
Bu, Anthropic'in hooks rehberindeki Windows örneğidir. Hiçbir şey kurmadan çalışır:
{
"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')\""
}
]
}
]
}
}
Ekranın köşesinde bir toast değil, bir iletişim kutusu açar ve bu kutu terminalinizin arkasında açılabilir. Komutu önce PowerShell'de test edin. Hook'un yüklendiğini kontrol etmek için Claude Code'da /hooks yazın.
Boş matcher her bildirim türünde tetiklenir; buna permission_prompt (bir onay yaklaşık altı saniyedir bekliyor) ve idle_prompt (Claude yaklaşık 60 saniye önce bitirdi) da dahildir. Zamanlamanın ayrıntıları Notification hook rehberinde.
04BurntToast ile gerçek bir toast
BurntToast, Windows toast bildirimleri için yaygın olarak kullanılan, topluluk tarafından geliştirilen bir PowerShell modülüdür. Kullanıcınız için bir kez kurun:
Install-Module -Name BurntToast -Scope CurrentUser
Ardından çalıştığını kontrol edin:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
Bir hook içinde kullanın. Bu sürüm PowerShell'i profil olmadan başlatır ve yalnızca bu çağrı için execution policy'yi atlar; böylece Git Bash'ten de PowerShell'den de aynı şekilde çalışır:
{
"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
}
]
}
]
}
}
Stop hook her turun sonunda çalışır, bu yüzden biten bir görevden bir dakika sonra değil hemen haberiniz olur; Stop hook rehberine bakın. "async": true hook'u arka planda çalıştırır, böylece PowerShell'in yavaş açılması Claude Code'u bekletmez.
Toast'lar hiç görünmüyorsa Ayarlar > Sistem > Bildirimler bölümünü kontrol edin: bildirimler açık, Rahatsız Etmeyin kapalı olmalıdır. BurntToast toast'ları orada genellikle Windows PowerShell altında görünür; onun bildirimlerine de izin verilmiş olmalıdır.
05WSL'den: Windows'u interop ile çağırın
WSL içinde hook Linux'ta çalışır, ancak WSL Windows programlarını .exe adlarıyla başlatabilir. Anthropic'in rehberi, powershell.exe'nin Windows interop aracılığıyla PATH'inizde olması gerektiğini belirtir. Bu varsayılan durumdur ve /etc/wsl.conf dosyasının [interop] bölümündeki appendWindowsPath ile kontrol edilir. WSL shell'inizden kontrol edin:
command -v powershell.exe
BurntToast Windows tarafında kuruluysa, WSL'deki ~/.claude/settings.json dosyanızdaki hook da aynı komuttur:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
WSL'den Windows PowerShell'i başlatmak bir saniye veya daha uzun sürebilir; bu da "async": true kullanmak için bir neden daha.
06Claude Code Notifier'ın yeri
Yukarıdaki hook'lar masanızın başındaysanız yeterlidir. Uzaklaştığınızda işe yaramazlar ve bir toast Claude için bir komutu onaylayamaz.
Claude Code Notifier, Claude Code'un hook'ları üzerine kurulmuş bağımsız bir araçtır (Anthropic tarafından değil, TouchTap tarafından geliştirilmiştir). Ücretsiz komut satırı aracı ccn; Mac, Windows ve Linux'ta çalışır; Windows desteği beta aşamasındadır. Doğrudan Windows'ta PowerShell'den kurun:
irm https://claudecodenotifier.com/install.ps1 | iex
Hook kayıtlarını Claude Code ayarlarınıza ekler, dosyanın geri kalanına dokunmaz ve bir yedek tutar. Claude işini bitirdiğinde, izin gerektiğinde veya bir soru sorduğunda hemen bir Windows toast'ı gösterir; telefon ya da ağ gerekmez. Terminale değil Claude Code'a bağlandığı için Windows Terminal, PowerShell ve IDE terminallerinde aynı şekilde çalışır.
Claude Code WSL'de çalışıyorsa ccn'i Linux satırıyla WSL içine kurun, çünkü Claude Code ve ayarları oradadır:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Ardından ccn test çalıştırın. WSL içinden gönderilen bir masaüstü bildiriminin Windows masaüstünüze ulaşıp ulaşmayacağı WSL kurulumunuza bağlıdır; bu yüzden WSL için güvenilir yol telefondur. Eşleştirilmiş bir telefonla olaylar push bildirimi olarak gelir; telefondan bir izne bir kez veya oturum boyunca izin verebilir ya da reddedebilir, Claude'un sorularını yanıtlayabilir ve bir sonraki talimatı gönderebilirsiniz. Telefon uygulamaları için telefon eşleştirme, ccn sayfası ve fiyatlandırma bölümlerine bakın.
ccn'i kurarsanız, yinelenen bildirimlerden kaçınmak için kendi toast hook'larınızı kaldırın.
07SSS
Windows'ta PowerShell hook'um neden hiçbir şey yapmıyor?
Önce komutun aynısını PowerShell'de çalıştırın. Orada çalışıyorsa, /hooks listesinde hook'un göründüğünü ve JSON kaçış karakterlerinin doğru olduğunu kontrol edin (içteki her " için ters eğik çizgi gerekir). BurntToast için modülün Claude Code'u çalıştıran kullanıcıyla aynı kullanıcı için kurulduğundan ve Rahatsız Etmeyin modunun kapalı olduğundan emin olun.
Windows'ta Claude Code hook'lar için Git Bash'e ihtiyaç duyar mı?
Hayır. Git for Windows kuruluysa hook'lar Git Bash'te, kurulu değilse PowerShell'de çalışır. Ayrıca herhangi bir hook için tek tek "shell": "powershell" ayarlayabilirsiniz.
notify-send WSL'de çalışır mı?
Windows masaüstü için genellikle çalışmaz. Güvenilir yol, yukarıda gösterildiği gibi hook'tan WSL interop üzerinden powershell.exe'yi çağırmaktır.
Windows Terminal, Claude Code bildirimlerini kendi başına gösterebilir mi?
Varsayılan olarak hayır. preferredNotifChannel değerini terminal_bell yapıp pencereyi veya görev çubuğunu yanıp söndüren bir bellStyle seçin ya da toast için bir hook kullanın.
Windows bildirimi almanın ücretsiz bir yolu var mı?
Evet. Hem yukarıdaki PowerShell hook'ları hem de ccn'in masaüstü bildirimleri ücretsizdir. Yalnızca telefon uygulamaları abonelik veya ömür boyu satın alma gerektirir.