По умолчанию Claude Code не показывает уведомлений на рабочем столе в Windows Terminal, PowerShell или терминале VS Code, поэтому в Windows их нужно настроить самостоятельно. Добавьте в %USERPROFILE%\.claude\settings.json Notification hook (и Stop hook для «готово»), который запускает PowerShell: окно сообщения работает без установки чего-либо, а модуль BurntToast даёт полноценный toast. Если Claude Code работает внутри WSL, hook выполняется в Linux, поэтому для вывода на рабочий стол Windows он должен вызывать powershell.exe через interop Windows.
01Нативная Windows или WSL: где выполняются hooks
Claude Code работает либо нативно в Windows, либо внутри WSL, и от этого зависит, как работает hook для уведомлений.
- Нативная Windows. Настройки хранятся в
%USERPROFILE%\.claude\settings.json. Согласно справочнику по hooks от Anthropic, командные hooks по умолчанию выполняются в Git Bash, а если Git Bash не установлен — в PowerShell. Для отдельного hook можно принудительно задать PowerShell через"shell": "powershell"; тогда Claude Code используетpwsh.exe(PowerShell 7), если найдёт его, а иначеpowershell.exe(Windows PowerShell 5.1). - WSL. Вы устанавливаете и запускаете
claudeв терминале WSL, поэтому файл настроек — линуксовый,~/.claude/settings.jsonвнутри дистрибутива, а hooks выполняются в shell Linux.notify-sendоттуда обычно не доходит до рабочего стола Windows. Вместо этого вызывайте программы Windows.
02Быстрая проверка: звонок терминала
Самый простой сигнал — звонок (bell). Добавьте в файл настроек:
{
"preferredNotifChannel": "terminal_bell"
}
После этого Claude Code отправляет символ bell, когда заканчивает работу или ждёт Вас. В Windows Terminal поведение звонка задаётся для каждого профиля параметром bellStyle в его settings.json. "bellStyle": ["window", "taskbar"] мигает окном и кнопкой на панели задач вместо звука. Подробнее — в руководстве по звонку терминала. Помогает это, только пока терминал у Вас перед глазами.
03Notification hook на PowerShell
Это пример для Windows из руководства по hooks от Anthropic. Он работает без установки чего-либо:
{
"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')\""
}
]
}
]
}
}
Он открывает диалоговое окно, а не toast в углу экрана, и окно может появиться за терминалом. Сначала проверьте команду в PowerShell. Введите /hooks в Claude Code, чтобы убедиться, что hook загружен.
Пустой matcher срабатывает на все типы уведомлений, включая permission_prompt (подтверждение ждёт около шести секунд) и idle_prompt (Claude закончил около 60 секунд назад). Тайминги описаны в руководстве по Notification hook.
04Настоящий toast с BurntToast
BurntToast — популярный модуль PowerShell для toast-уведомлений Windows, поддерживаемый сообществом. Установите его один раз для своего пользователя:
Install-Module -Name BurntToast -Scope CurrentUser
Затем проверьте, что он работает:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
Используйте его в hook. Эта версия запускает PowerShell без профиля и обходит execution policy для этого вызова, поэтому одинаково работает из Git Bash и 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
}
]
}
]
}
}
Stop hook выполняется в конце каждого хода, так что Вы узнаёте о завершении задачи сразу, а не через минуту; см. руководство по Stop hook. "async": true запускает hook в фоне, чтобы медленный старт PowerShell не задерживал Claude Code.
Если toast-уведомления не появляются, проверьте Параметры > Система > Уведомления: уведомления должны быть включены, а режим «Не беспокоить» — выключен. Уведомления BurntToast обычно отображаются там от имени Windows PowerShell, для которого тоже нужно разрешить уведомления.
05Из WSL: вызов Windows через interop
Внутри WSL hook выполняется в Linux, но WSL умеет запускать программы Windows по имени .exe. В руководстве Anthropic отмечено, что powershell.exe должен быть в PATH через interop Windows. Так и есть по умолчанию; за это отвечает appendWindowsPath в секции [interop] файла /etc/wsl.conf. Проверьте из shell WSL:
command -v powershell.exe
Если BurntToast установлен на стороне Windows, hook в WSL ~/.claude/settings.json — та же команда:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
Запуск Windows PowerShell из WSL может занимать секунду и больше — ещё одна причина указать "async": true.
06Место Claude Code Notifier
Описанные hooks хороши, пока Вы за компьютером. Стоит отойти — и от них нет толку, а через toast нельзя подтвердить команду для Claude.
Claude Code Notifier — независимый инструмент (от TouchTap, а не Anthropic), построенный на hooks Claude Code. Его бесплатная утилита командной строки ccn работает на Mac, Windows и Linux; поддержка Windows в бета-версии. В нативной Windows установите её из PowerShell:
irm https://claudecodenotifier.com/install.ps1 | iex
Она добавляет свои hooks в настройки Claude Code, не трогая остальную часть файла, и сохраняет резервную копию. Сразу после этого она показывает toast Windows, когда Claude закончил, ждёт разрешения или задаёт вопрос, — без телефона и сети. Поскольку она подключается к Claude Code, а не к терминалу, она одинаково работает в Windows Terminal, PowerShell и терминалах IDE.
Если Claude Code работает в WSL, установите ccn внутри WSL командой для Linux, ведь именно там находятся Claude Code и его настройки:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Затем выполните ccn test. Дойдёт ли уведомление из WSL до рабочего стола Windows, зависит от настройки WSL, поэтому для WSL надёжнее телефон. С привязанным телефоном события приходят push-уведомлениями, и прямо с телефона можно разрешить один раз, разрешить на сессию или отклонить запрос, ответить на вопросы Claude и отправить следующую инструкцию. См. привязку телефона, страницу ccn и цены на мобильные приложения.
Если Вы устанавливаете ccn, удалите собственные toast-hooks, чтобы уведомления не дублировались.
07FAQ
Почему мой hook на PowerShell ничего не делает в Windows?
Сначала выполните ту же команду прямо в PowerShell. Если там она работает, проверьте, что hook есть в списке /hooks и что экранирование в JSON верное (перед каждой внутренней " нужен обратный слеш). Для BurntToast убедитесь, что модуль установлен для того же пользователя, под которым запущен Claude Code, и что режим «Не беспокоить» выключен.
Нужен ли Claude Code в Windows Git Bash для hooks?
Нет. Hooks выполняются в Git Bash, если установлен Git for Windows, а если нет — в PowerShell. Также можно указать "shell": "powershell" для отдельного hook.
Работает ли notify-send в WSL?
Для рабочего стола Windows — как правило, нет. Надёжный способ — вызывать powershell.exe из hook через interop WSL, как показано выше.
Может ли Windows Terminal сам показывать уведомления Claude Code?
По умолчанию нет. Установите preferredNotifChannel в terminal_bell и выберите bellStyle, при котором мигает окно или панель задач, либо используйте hook для toast-уведомления.
Можно ли бесплатно получать уведомления в Windows?
Да. И hooks на PowerShell выше, и уведомления на рабочем столе от ccn бесплатны. Подписка или пожизненная покупка нужна только для мобильных приложений.