Файл дня

Хук для Claude Code, который показывает начало каждого ответа в уведомлении

Слава Сажин 15.10.2026 3 мин чтения 2 просмотра

Когда Claude Code заканчивает ответ, в углу экрана всплывает уведомление с его первыми словами, и можно спокойно работать в другом окне.

Сегодня в «Файле дня» хук для Claude Code для тех, кто даёт Claude задачу и уходит в другое окно. Дальше вы либо то и дело возвращаетесь проверить, закончил ли он, либо приходите через полчаса и видите, что он остановился на первой минуте с вопросом к вам. С этим хуком каждый законченный ответ появляется уведомлением в углу экрана с началом ответа, и вы отличаете «Готово, все тесты проходят» от «Удалить старую папку?», не уходя из окна, в котором работаете.

Как это работает

Это Stop-хук: Claude Code запускает его каждый раз, когда ответ закончен, и передаёт ему текст ответа. Хук убирает знаки Markdown *, ` и #, сводит строки в одну, оставляет первые 120 символов и показывает их в уведомлении macOS с заголовком «Claude Code» и подзаголовком «Ответ готов». Пустой ответ показывается как «Работа закончена». Ответ попадает в уведомление как обычный текст и никогда не становится частью команды, поэтому ответ с цитатой из кода или веб-страницы ничего не запустит: мы дали хуку 21 пример ответа с кавычками, $( ), обратными кавычками и командами AppleScript, и каждый дошёл как текст. Хук никогда не останавливает Claude, уведомление его единственное действие.

Что мы изменили

Одну строку. Ответ, который начинается с дефиса, например со списка, попадал в команду уведомления так, будто это один из её параметров. На Linux, где по инструкции Claude меняет osascript на notify-send, такой ответ не показывал уведомления вовсе, только ошибку «Unknown option», которую никто не видит. Теперь хук убирает дефисы и пробелы в начале текста: «- Исправил ошибку» показывается как «Исправил ошибку», а дефисы внутри текста остаются. Та же обрезка защищает osascript на Mac и команду любой другой системы.

Что нужно знать

  • Хук срабатывает после каждого ответа, и в запусках claude -p тоже: задача, которую вы запускаете по расписанию, тоже закончится уведомлением.
  • Уведомление показывает начало ответа как есть. Если Claude напишет в первой строке пароль или имя клиента, это появится в углу экрана и останется в Центре уведомлений.
  • Не Mac: шаг 6 инструкции просит Claude поставить команду уведомлений вашей системы. В наших тестах Claude написал notify-send на Linux (4 раза из 4) и уведомление PowerShell на Windows (2 из 2), и каждый раз передавал ответ как текст.

Установка

Один файл кладётся в ~/.claude/hooks/ и подключается в ~/.claude/settings.json как Stop-хук. В этой папке лежат собственные настройки Claude, поэтому Claude спросит разрешения, прежде чем туда писать: ответьте Yes. Дальше по инструкции ниже Claude проверяет, что установлен jq, и отправляет одно пробное уведомление, а вы разрешаете уведомления для «Редактора скриптов» в «Системных настройках», раздел «Уведомления»: на Mac уведомления из скриптов приходят под этим именем. Потом закройте Claude Code и откройте снова, потому что хуки читаются при запуске. Проверка: попросите «Ответь одной строкой: уведомления работают» и сразу переключитесь в другое окно. Через несколько секунд в углу экрана появится уведомление «Claude Code» с началом ответа.

notify-done.sh 1 КБ Скачать
#!/bin/bash
# Stop-хук: когда Claude Code заканчивает ответ, на Mac всплывает уведомление
# с началом этого ответа. Хук никогда не останавливает работу Claude.
INPUT=$(cat)
# Тире в начале убираются: ответ, который начинается с «-», команда уведомления прочитала бы как свой параметр.
MSG=$(printf '%s' "$INPUT" | jq -r '(.last_assistant_message // "") | gsub("[*`#]"; "") | gsub("\\s+"; " ") | sub("^[ -]+"; "") | .[0:120]' 2>/dev/null)
[ -z "$MSG" ] && MSG="Работа закончена"
osascript - "$MSG" >/dev/null 2>&1 <<'EOF'
on run argv
display notification (item 1 of argv) with title "Claude Code" subtitle "Ответ готов"
end run
EOF
exit 0
kak-postavit.md 2 КБ Скачать
# Как узнать, что Claude закончил, не сидя у экрана

1. Попросите Claude: «Положи скачанный файл notify-done.sh в папку ~/.claude/hooks/ и сделай его исполняемым».
2. Попросите Claude: «Добавь ~/.claude/hooks/notify-done.sh в ~/.claude/settings.json как Stop-хук».
3. Попросите Claude: «Проверь, что на этом компьютере установлен jq, и установи его, если нет».
4. На Mac попросите Claude: «Выполни команду osascript -e 'display notification "test"'».
5. Потом откройте «Системные настройки» (System Settings), перейдите в «Уведомления» (Notifications), найдите в списке «Редактор скриптов» (Script Editor) и включите «Разрешить уведомления» (Allow Notifications).
6. Если у вас не Mac, попросите Claude: «В файле ~/.claude/hooks/notify-done.sh замени osascript на команду уведомлений моей системы».
7. Закройте Claude Code и откройте снова: хуки читаются при запуске.

Проверка:

1. Попросите Claude: «Ответь одной строкой: уведомления работают» и сразу переключитесь в другое окно.
2. Через несколько секунд в углу экрана всплывёт уведомление «Claude Code» с началом ответа.

Статья стоила вашего времени?

Мастер-класс каждую среду

Разбираем в прямом эфире рабочую схему на Claude Code, а запись и все файлы к ней остаются у вас. $28 в месяц.

Последняя запись · 21.10.2026 Рутина съедает полдня, а заметить её некогда? Claude сам находит, что вы делаете руками снова и снова Слава Сажин
Все мастер-классы

Связаться с командой Combobulating