Вайбкодинг2026-09-237 минРедакция Submarine School

Claude Code: как включить уведомление после ответа

Claude Code: как включить уведомление после ответа

Чтобы получить уведомление, когда Claude Code закончит ответ, выберите нужное поведение. Для обычного оповещения вдали от терминала достаточно встроенного канала. Для сигнала сразу после каждого ответа нужен хук Stop. Ниже есть безопасная настройка, проверка и разбор случаев, когда уведомление не появляется.

Какой способ выбрать

В Claude Code есть два близких механизма. Событие Notification предназначено для моментов, когда программе нужно ваше внимание. Событие Stop возникает, когда основной агент закончил отвечать. Поэтому выбор зависит от требуемой точности.

  • Нужен обычный сигнал, когда вы отошли от терминала: включите канал terminal_bell.
  • Нужен сигнал сразу после каждого ответа: настройте командный хук Stop.
  • Нужно оповещение о запросе разрешения: используйте Notification или хук PermissionRequest.
  • Работаете в Claude Code Desktop: сначала проверьте системные уведомления приложения, отдельный терминальный хук обычно не нужен.

Официальная настройка терминала Claude Code уточняет, что встроенное уведомление срабатывает после завершения задачи или при запросе разрешения, когда пользователь выглядит отошедшим от терминала. По умолчанию системные уведомления поддерживаются в Ghostty, Kitty и iTerm2. Для других терминалов предлагается звонок терминала или пользовательский хук.

Правило выбора: Notification зовёт вас к терминалу, а Stop отмечает конец ответа. Если важна каждая завершённая реплика без задержки, настраивайте Stop.

Уведомление освобождает от ожидания у терминала. Следующий шаг, научиться ставить Claude Code задачи так, чтобы результат можно было быстро принять.

Занять место

Включить встроенный звонок терминала

Самый короткий путь не требует скрипта. Добавьте предпочтительный канал в пользовательский файл ~/.claude/settings.json. Если файл уже содержит настройки, добавьте поле внутрь существующего объекта и не заменяйте остальные параметры.

{
  "preferredNotifChannel": "terminal_bell"
}
  1. Откройте ~/.claude/settings.json.
  2. Проверьте JSON командой python3 -m json.tool ~/.claude/settings.json.
  3. Разрешите звуки или уведомления для терминала в настройках операционной системы.
  4. Запустите Claude Code, дайте короткую задачу и переключитесь в другое окно до завершения ответа.

Встроенный канал не обязан звенеть в ту же секунду, когда появился последний символ. В справочнике hooks для типа idle_prompt указана задержка около минуты после ответа, если с тех пор вы ничего не печатали. Для мгновенного сигнала нужен следующий способ.

По теме: Папка Claude: что хранится в .claude и что можно менять

Сигнал сразу после ответа через Stop hook

Создайте небольшой скрипт, который возвращает разрешённую управляющую последовательность BEL. Claude Code сам передаст её терминалу. Это надёжнее попытки писать в /dev/tty, потому что hooks запускаются без управляющего терминала.

mkdir -p ~/.claude/hooks
printf '%s\n' '#!/bin/sh' 'printf '\''{"terminalSequence":"\\u0007"}\\n'\''' > ~/.claude/hooks/notify-stop.sh
chmod +x ~/.claude/hooks/notify-stop.sh

Добавьте хук в ~/.claude/settings.json. Если раздел hooks уже существует, объедините настройки, сохранив другие события.

{
  "hooks": {
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "~/.claude/hooks/notify-stop.sh"
      }]
    }]
  }
}

Событие Stop запускается, когда основной агент закончил ответ. Оно не запускается после ручного прерывания, а ошибка API вызывает StopFailure. Эти границы описаны в официальном справочнике Stop. Если нужно различать успех и ошибку, добавьте для сбоя второй звук.

Хук сообщает, что ответ готов, но не проверяет качество работы. На бесплатном вебинаре вы соберёте проект и разберёте проверку изменений.

Записаться на вебинар

Как проверить настройку без риска

Проверяйте сначала на задаче без записи файлов. Так вы отделите работу уведомления от разрешений на изменение проекта.

  1. Запустите claude в тестовой папке.
  2. Попросите перечислить три файла, ничего не меняя.
  3. Переключитесь в другое окно и дождитесь окончания ответа.
  4. Убедитесь, что ответ завершён, а сигнал прозвучал ровно один раз.
  5. Отдельно вызовите запрос разрешения и решите, нужен ли второй тип оповещения.

Уведомление говорит только о завершении ответа, а не о том, что тесты прошли или файл создан. Принимать результат стоит по схеме работы с ИИ-агентами, а постоянные правила проекта хранить в CLAUDE.md.

По теме: Claude Memory: как работает память в чате и Claude Code

Диагностика: почему уведомления нет

  • Звук не слышен: проверьте громкость, режим фокусирования и разрешение уведомлений для терминала.
  • В iTerm2 нет баннера: включите Notification Center Alerts и разрешите оповещения из управляющих последовательностей.
  • Внутри tmux сигнал теряется: включите allow-passthrough в ~/.tmux.conf и перечитайте конфигурацию.
  • Хук не запускается: проверьте исполняемый бит скрипта, путь и корректность settings.json.
  • Сигнал приходит с задержкой: вероятно, работает idle_prompt, а не Stop.
  • Сигнал приходит дважды: одновременно включены встроенный канал и пользовательский hook.

При отладке используйте BEL или локальный системный звук. Не отправляйте содержимое ответа во внешний сервис. При работе по SSH терминальный механизм может доставить уведомление на локальную машину, но приложение терминала и промежуточный tmux должны пропускать управляющую последовательность.

Ограничения и случаи, когда способ не подходит

Хук Stop срабатывает после каждого ответа основного агента, включая короткие, поэтому может оказаться слишком шумным. Тип agent_completed относится к фоновой сессии и работает только при открытом представлении агентов в терминале. Для обычного Claude в браузере эти настройки Claude Code не применяются.

  • Не считайте сигнал доказательством успешного теста или публикации.
  • Не добавляйте в hook секреты и токены.
  • Не включайте оповещение на каждый вызов инструмента, если нужен только итог.
  • Для короткой задачи используйте встроенные уведомления приложения.

Если ответ занимает много контекста, уведомление не сохраняет детали работы. Для этого применяют [/compact и контрольную запись](/blog/claude-code-compact-kak-sohranit-kontekst-2026).

Частые вопросы

Можно ли получить уведомление сразу после каждого ответа?

Да. Используйте Stop hook. Встроенный idle_prompt рассчитан на ситуацию, когда вы не реагируете после ответа, и может появиться позже.

Почему звонок работает, а системного баннера нет?

BEL поддерживает терминал, но баннер зависит от приложения и разрешений операционной системы.

Работает ли настройка через SSH?

Да, если локальный терминал и tmux пропускают уведомляющую последовательность.

Можно ли озвучить весь ответ?

Технически Stop получает последнее сообщение, но передача текста повышает риск утечки. Безопаснее нейтральный сигнал.

Настройте уведомление и переходите к главному: ставить агенту проверяемые задачи и принимать результат по понятным критериям. На бесплатном вебинаре вы соберёте первый проект с ИИ.

Записаться на вебинар
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Первый проект с ИИ: живой разбор, бесплатно Занять место