Уведомления Claude Code: как отличить «ждёт вас» от «готово»

«Заблокированная сессия выглядит точно так же, как завершённая, поэтому я сначала открываю не ту». Эта фраза из запроса на функцию для Claude Code хорошо описывает проблему. Вот как получить отдельный сигнал для каждого случая.

Автор: Aslan, команда Pet Island · Обновлено 26 окт. 2026 г. · 4 мин чтения

КОРОТКО

Claude Code уже отправляет уведомление, когда заканчивает работу или ждёт разрешения, пока вас нет, но по умолчанию показывает его как уведомление на рабочем столе только в Ghostty, Kitty и iTerm2. В остальных терминалах задайте "preferredNotifChannel": "terminal_bell". Чтобы получить два разных звука, используйте хук Notification с matcher permission_prompt для «нужны вы» и хук Stop для «готово».

Что Claude Code делает сам

Когда Claude заканчивает задачу или останавливается на запросе разрешения, а вы, судя по всему, отошли от терминала, он генерирует событие уведомления. По умолчанию он превращает его в уведомление на рабочем столе только в Ghostty, Kitty и iTerm2. В Windows Terminal, терминале VS Code, Warp и остальных ничего заметного не происходит, пока вы это не настроите.

Самое простое решение — звонок терминала:

~/.claude/settings.jsonКопировать
{
"preferredNotifChannel": "terminal_bell"
}

Что делает звонок, решает ваш терминал. В 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 нужно разрешение, и низкий сигнал, когда он закончил:

%USERPROFILE%\.claude\settings.jsonКопировать
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(1320, 150); [Console]::Beep(1320, 150)" }
]
}
],
"Stop": [
{
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(660, 300)" }
]
}
]
}
}

Console.Beep принимает частоту в герцах и длительность в миллисекундах и ждёт, пока сигнал не закончится. В руководстве Anthropic по хукам есть и пример для Windows, который открывает окно сообщения через System.Windows.Forms; сама Anthropic отмечает, что это диалоговое окно, а не уведомление, и оно может открыться позади терминала.

macOS и Linux

В документации Anthropic на macOS используется afplay:

~/.claude/settings.jsonКопировать
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
],
"Stop": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Pop.aiff" }]
}
]
}
}

Для видимого оповещения используйте 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 г.. Агенты быстро меняются; если что-то уже не совпадает, приоритет за официальной страницей.

ЧИТАЙТЕ ТАКЖЕ

Отвечайте любому агенту прямо с верхней части экрана.

Windows и Mac · 7 дней бесплатно, затем $8.99 один раз · $1 с каждой продажи идёт на корм бездомным животным

Попробовать Pet Island бесплатно