Уведомления Claude Code: как отличить «ждёт вас» от «готово»
«Заблокированная сессия выглядит точно так же, как завершённая, поэтому я сначала открываю не ту». Эта фраза из запроса на функцию для Claude Code хорошо описывает проблему. Вот как получить отдельный сигнал для каждого случая.
КОРОТКО
Claude Code уже отправляет уведомление, когда заканчивает работу или ждёт разрешения, пока вас нет, но по умолчанию показывает его как уведомление на рабочем столе только в Ghostty, Kitty и iTerm2. В остальных терминалах задайте "preferredNotifChannel": "terminal_bell". Чтобы получить два разных звука, используйте хук Notification с matcher permission_prompt для «нужны вы» и хук Stop для «готово».
Что Claude Code делает сам
Когда Claude заканчивает задачу или останавливается на запросе разрешения, а вы, судя по всему, отошли от терминала, он генерирует событие уведомления. По умолчанию он превращает его в уведомление на рабочем столе только в Ghostty, Kitty и iTerm2. В Windows Terminal, терминале VS Code, Warp и остальных ничего заметного не происходит, пока вы это не настроите.
Самое простое решение — звонок терминала:
Что делает звонок, решает ваш терминал. В Windows Terminal настройка bellStyle может принимать значения audible (по умолчанию), window, taskbar, all или none. При all Windows Terminal воспроизводит звук и мигает значком на панели задач.
- iTerm2: Settings → Profiles → Terminal → отметьте «Notification Center Alerts», затем Filter Alerts → включите «Send escape sequence-generated alerts».
- tmux: добавьте
set -g allow-passthrough onв~/.tmux.conf, иначе уведомления не дойдут до внешнего терминала. - По SSH: уведомление на рабочем столе передаётся обратно на вашу локальную машину, так что удалённые сессии тоже могут вас оповестить.
Запрос на системные уведомления (#26581, 34 голоса) закрыли как уже реализованный со ссылкой именно на это встроенное уведомление. Запрос на разные сигналы для «ждёт» и «закончил» (#94373) всё ещё открыт. Здесь и пригодятся хуки.
Два события: Notification и Stop
Notificationсрабатывает, когда Claude Code отправляет уведомление. Его matcher — это тип уведомления. Вас интересуют два типа:permission_prompt(Claude нужно, чтобы вы одобрили использование инструмента, и запрос ждёт уже около шести секунд) иidle_prompt(Claude закончил отвечать около 60 секунд назад, и с тех пор вы ничего не вводили).Stopсрабатывает каждый раз, когда Claude заканчивает отвечать. Он не срабатывает, если вы прервали ответ; при ошибках API вместо него срабатываетStopFailure.
Хуки работают параллельно со встроенным уведомлением, а не заменяют его, поэтому можно оставить и то и другое.
Windows: два разных звука
В Windows хуки запускаются в Git Bash, а если Git Bash не установлен, в PowerShell. Настройка "shell": "powershell" убирает неопределённость. Эта конфигурация воспроизводит высокий двойной сигнал, когда Claude нужно разрешение, и низкий сигнал, когда он закончил:
Console.Beep принимает частоту в герцах и длительность в миллисекундах и ждёт, пока сигнал не закончится. В руководстве Anthropic по хукам есть и пример для Windows, который открывает окно сообщения через System.Windows.Forms; сама Anthropic отмечает, что это диалоговое окно, а не уведомление, и оно может открыться позади терминала.
macOS и Linux
В документации Anthropic на macOS используется afplay:
Для видимого оповещения используйте osascript -e 'display notification "Claude needs you" with title "Claude Code"' на macOS или notify-send "Claude Code" "Claude needs you" на Linux.
Детали, которые сэкономят вам вечер
- Stop срабатывает часто. Он срабатывает каждый раз, когда Claude заканчивает отвечать, а не только когда завершена вся задача. Если это слишком назойливо, используйте вместо него уведомление
idle_prompt. Оно ждёт около минуты и срабатывает, только если вы ничего не вводили. - Читайте событие, если нужно. Входные данные Notification включают
message,titleиnotification_type, поэтому скрипт может показать сам запрос. - Agent view. Если вы запускаете фоновые сессии через
claude agents, он уведомляет вас через тот жеpreferredNotifChannel, когда сессии требуется ввод, когда она завершается или падает, и вызывает хук Notification с типомagent_needs_inputилиagent_completed. - Статус в терминале. Терминалы, поддерживающие протокол статуса OSC 7501, могут показывать, работает ли каждая сессия Claude Code, ждёт или закончила. Claude Code v2.1.295 и новее сообщает статус автоматически.
- Хук не срабатывает в Windows? См. Хуки Claude Code не работают в Windows. Почти всегда дело в оболочке.
Какая сессия ждёт и как ей ответить
Звук сообщает, что что-то произошло. Но он не говорит, из какого из трёх терминалов пришёл сигнал и что Claude хочет выполнить. Pet Island даёт каждой сессии Claude Code место на маленьком острове в верхней части экрана: работает, ждёт вас или закончила. Запрос разрешения приходит вместе с командой или диффом, и вы разрешаете или запрещаете его прямо там; вопросы и планы работают так же. Одним щелчком можно перейти в нужный терминал, если хотите посмотреть подробнее.
Частые вопросы
Есть ли в Claude Code уведомления?
Да. Когда он заканчивает работу или ждёт разрешения, пока вас нет, он отправляет уведомление. Ghostty, Kitty и iTerm2 по умолчанию показывают его как уведомление на рабочем столе; в других терминалах задайте preferredNotifChannel значение "terminal_bell" или добавьте хук Notification.
Как получить звук, когда Claude Code закончил?
Добавьте хук Stop, который воспроизводит звук, например afplay на macOS или [Console]::Beep в PowerShell на Windows.
Как отличить «нужно разрешение» от «закончил»?
Используйте хук Notification с matcher permission_prompt для одного звука и хук Stop для другого.
Почему я не получаю уведомления в Windows Terminal или VS Code?
По умолчанию Claude Code отправляет уведомления на рабочий стол только в Ghostty, Kitty и iTerm2. Задайте preferredNotifChannel значение "terminal_bell" или используйте хук.
Работают ли уведомления внутри tmux?
Да, после того как вы добавите set -g allow-passthrough on в ~/.tmux.conf.
Источники
Все настройки и описанное поведение на этой странице сверены с этими источниками 26 октября 2026 г.. Агенты быстро меняются; если что-то уже не совпадает, приоритет за официальной страницей.
- Документация Claude Code: Configure your terminal (уведомления)
- Документация Claude Code: Hooks guide
- Документация Claude Code: Hooks reference
- Документация Claude Code: Agent view
- Issue #26581: System notifications when Claude needs attention
- Issue #94373: Notify differently for waiting vs finished
- Issue #2427: Audio notification on task completion
- Microsoft Learn: параметры профиля Windows Terminal (bellStyle)
- Microsoft Learn: Console.Beep