Сповіщення Gemini CLI: звук або сигнал, коли він закінчив або потрібні ви

Gemini CLI спокійно стоїть на «Waiting for confirmation», поки ви читаєте щось інше. Він уміє про це повідомляти. Просто налаштування за замовчуванням вимкнене, а у Windows воно поводиться не так, як випливає з документації.

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

КОРОТКО

Задайте "general": { "enableNotifications": true } у ~/.gemini/settings.json (або /settings → General → Enable Notifications). Після цього Gemini CLI сповіщає вас, коли йому потрібне підтвердження і коли сесію завершено. У Windows Terminal і терміналі VS Code автоматичний режим лише подає дзвінок термінала, тож якщо потрібне справжнє сповіщення на робочому столі, спробуйте notificationMethod: "osc9". Для власного звуку додайте хук Notification (спрацьовує на запитах дозволів для інструментів) і хук AfterAgent (спрацьовує наприкінці ходу).

Перш ніж почати: який у вас Gemini CLI

Банер у документації Gemini CLI повідомляє, що для користувачів безплатного рівня і Google One Gemini CLI замінили на Antigravity CLI 18 червня 2026 року. Усе, що нижче, стосується самого Gemini CLI (команда gemini і ~/.gemini/settings.json). Якщо ви перейшли на Antigravity, його налаштування зберігаються в іншому місці.

Цього давно чекали. Запит на звукові сповіщення в репозиторії Gemini CLI (#4310) зібрав 74 вподобайки, і мейнтейнер підвищив його пріоритет, «to reflect how many people care» (щоб відобразити, скільком людям це важливо). У пізнішому обговоренні (#13313) це сформулювали просто: «I can never tell when it is done» (ніколи не зрозуміло, коли він закінчив).

Увімкніть вбудовані сповіщення

У Gemini CLI є експериментальна функція сповіщень. За замовчуванням її вимкнено. Увімкніть її в CLI через /settings → General → Enable Notifications або у файлі налаштувань:

~/.gemini/settings.jsonКопіювати
{
"general": {
"enableNotifications": true
}
}

Після ввімкнення Gemini CLI сповіщає вас про дві події:

  • Action required: модель чекає на ваше введення або підтвердження інструмента.
  • Session complete: сесію успішно завершено.

Заголовки сповіщень: «Gemini CLI needs your attention» і «Gemini CLI session complete». Сам Gemini CLI звуку не відтворює: він надсилає терміналу escape-послідовність, а що станеться, вирішує термінал.

Як сповіщення доходить до вас (і чому у Windows інакше)

Друге налаштування, general.notificationMethod, визначає спосіб надсилання сповіщення. Можливі значення: auto (за замовчуванням), osc9, osc777 і bell.

На сторінці про сповіщення сказано, що CLI використовує escape-послідовність OSC 9, а як запасний варіант дзвінок термінала. Вихідний код точніший. У режимі auto (packages/cli/src/utils/terminalNotifications.ts):

ТерміналЩо надсилає auto
iTerm2OSC 9 (сповіщення на робочому столі)
Windows Terminal, термінал VS Code, Alacritty, Apple TerminalЛише дзвінок (BEL)
Усі інші терміналиOSC 777

Тож у Windows Terminal ви отримуєте дзвінок, а не спливне сповіщення. Що робить дзвінок, визначає налаштування Windows Terminal: bellStyle приймає значення all, audible, window, taskbar і none, за замовчуванням audible. За all Windows Terminal відтворює звук і блимає значком на панелі завдань; звук можна вибрати через bellSound.

settings.json Windows Terminal (профіль)Копіювати
{
"bellStyle": "all"
}

Якщо хочете спробувати справжнє сповіщення на робочому столі замість дзвінка, задайте спосіб примусово:

~/.gemini/settings.jsonКопіювати
{
"general": {
"enableNotifications": true,
"notificationMethod": "osc9"
}
}

Чи перетворить конкретний термінал OSC 9 на сповіщення Windows, залежить від версії термінала. Якщо нічого не з’являється, поверніть auto або bell і використовуйте bellStyle: "all". Саме дзвінок вибрав для Windows Terminal власний код Gemini CLI.

Усередині tmux або screen Gemini CLI обгортає послідовність у passthrough-escape, щоб вона однаково дійшла до зовнішнього термінала.

Власний звук за допомогою хуків

Якщо потрібен певний звук, спливне вікно або повідомлення на телефон, використовуйте хуки. Gemini CLI запускає команди хуків у певних точках і чекає на їхнє завершення. Тут важливі дві події:

  • Notification спрацьовує, коли CLI видає системне сповіщення. Зараз єдиний тип — ToolPermission (інструмент чекає на ваше підтвердження). Хук не може нічого схвалити чи заблокувати; він має лише інформаційний характер.
  • AfterAgent спрацьовує один раз за хід, після фінальної відповіді моделі. Сторінка рекомендацій самого Gemini радить його, коли «you only need to check the final completion» (треба перевірити лише підсумкове завершення).

Хуки ввімкнено за замовчуванням (hooksConfig.enabled). Хук виводить у stdout рівно один об’єкт JSON і нічого більше ({} підійде, якщо нема чого сказати). Код виходу 0 означає успіх; 2 блокує (і має значення лише для блокувальних подій); усе інше вважається попередженням, і CLI продовжує роботу. Тайм-аут за замовчуванням — 60 секунд (timeout задається в мілісекундах).

Windows (PowerShell)

У Windows Gemini CLI запускає команди хуків через pwsh -NoProfile -Command або powershell.exe, якщо PowerShell 7 не встановлено. Збережіть цей скрипт як %USERPROFILE%\.gemini\hooks\ding.ps1:

~/.gemini/hooks/ding.ps1Копіювати
# Two short beeps: frequency in Hz, duration in ms
[Console]::Beep(880, 150)
[Console]::Beep(1320, 150)
 
# Hooks must print one JSON object
"{}"

Потім спрямуйте на нього обидві події:

~/.gemini/settings.jsonКопіювати
{
"general": { "enableNotifications": true },
"hooks": {
"Notification": [
{ "matcher": "*", "hooks": [ { "name": "ding-approval", "type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File $HOME\\.gemini\\hooks\\ding.ps1" } ] }
],
"AfterAgent": [
{ "matcher": "*", "hooks": [ { "name": "ding-done", "type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File $HOME\\.gemini\\hooks\\ding.ps1" } ] }
]
}
}

-ExecutionPolicy Bypass запобігає найчастішому збою: відмові PowerShell запускати скрипти. Як постійне рішення документація Gemini пропонує Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.

macOS і Linux

В інших системах хуки запускаються через bash -c. Вистачить однорядкового скрипта:

~/.gemini/hooks/ding.shКопіювати
#!/usr/bin/env bash
cat > /dev/null # drain the event JSON
afplay /System/Library/Sounds/Glass.aiff 2>/dev/null \
|| paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null
echo '{}'

Зробіть його виконуваним (chmod +x ~/.gemini/hooks/ding.sh) і вкажіть "command": "$HOME/.gemini/hooks/ding.sh" у тих самих двох подіях.

Хочете два різні звуки, один для «потрібне підтвердження», інший для «готово»? Зробіть два скрипти. Хук також може прочитати подію з stdin: вхідні дані Notification містять notification_type, message і details, тож у спливному вікні можна показати сам запит.

Чому ваш хук не запускається

  1. Перевірте /hooks panel. Там перелічено всі хуки, які завантажив Gemini CLI. /hooks enable-all знову вмикає їх, якщо їх було вимкнено.
  2. Недовірена папка. У недовіреній папці Gemini CLI ігнорує .gemini/settings.json проєкту, тому хуки проєкту не завантажуються. Розміщуйте хуки сповіщень у користувацьких налаштуваннях (~/.gemini/settings.json), щоб вони працювали всюди.
  3. Змінені хуки вважаються новими. Gemini CLI знімає відбитки хуків проєкту; якщо назва або команда хука змінюється, він вважається новим, недовіреним хуком.
  4. Щось іще в stdout. Випадковий echo або попередження PowerShell перед JSON ламає розбір. Пишіть логи в stderr.
  5. Matchers. Для Notification і AfterAgent використовуйте "*" (або порожній рядок), щоб збігалося все. Події життєвого циклу використовують matchers із точним збігом рядка, події інструментів використовують регулярні вирази.

Або нехай питає рідше

Сповіщення допомагають відповідати швидше; а ще можна зробити так, щоб Gemini CLI звертався до вас рідше. general.defaultApprovalMode може бути default (питати), auto_edit (редагування схвалюються, про все інше питає) або plan (лише читання). Shift+Tab перемикає їх по колу. tools.allowed перелічує інструменти, для яких діалог підтвердження пропускається (наприклад, run_shell_command(git)), а tools.confirmationRequired перелічує інструменти, які мають питати завжди.

Режим YOLO (--yolo або Ctrl+Y) схвалює все і за замовчуванням вмикає пісочницю. Його можна ввімкнути лише з командного рядка, а security.disableYoloMode вимикає його назавжди, якщо комп’ютером користуються кілька людей.

Де тут Pet Island

Сигнал повідомляє, що щось сталося, але не каже, у якому терміналі і що Gemini хоче виконати. Pet Island виводить Gemini CLI на маленький острів у верхній частині екрана поруч з іншими вашими агентами: ви бачите, коли він працює, коли чекає на ваше підтвердження і коли закінчив, і одним клацанням переходите в потрібний термінал.

З Gemini CLI саме підтвердження й далі відбувається в Gemini. Pet Island показує запит і переводить вас туди, але не схвалює інструменти Gemini за вас. (Запити Claude Code і Codex, навпаки, можна підтверджувати просто на острові.)

Поширені запитання

Чи є в Gemini CLI сповіщення?

Так, як експериментальна функція, вимкнена за замовчуванням. Задайте general.enableNotifications значення true у ~/.gemini/settings.json або використовуйте /settings → General → Enable Notifications.

Чому Gemini CLI у Windows лише пищить?

У режимі auto код Gemini CLI надсилає у Windows Terminal і термінал VS Code лише дзвінок термінала. Налаштування bellStyle у Windows Terminal визначає, чи відтворює цей дзвінок звук, чи блимає панель завдань, чи і те, і інше.

Чи може хук Gemini CLI автоматично схвалити інструмент?

Хук Notification цього не вміє. У документації сказано, що він не може блокувати сповіщення або надавати дозволи. Щоб заздалегідь схвалити інструменти, використовуйте tools.allowed або рушій політик.

Який хук спрацьовує, коли Gemini CLI закінчив?

AfterAgent. Він спрацьовує один раз за хід, після фінальної відповіді моделі.

Куди помістити хуки, щоб вони працювали в усіх проєктах?

У користувацькі налаштування, ~/.gemini/settings.json. У недовірених папках налаштування проєкту ігноруються.

Джерела

Усі налаштування й описану поведінку на цій сторінці звірено з цими джерелами 26 жовтня 2026 р.. Агенти швидко змінюються; якщо щось уже не збігається, пріоритет має офіційна сторінка.

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

Відповідайте будь-якому агенту просто з верхньої частини екрана.

Windows і Mac · 7 днів безплатно, потім $8.99 одноразово · $1 з кожного продажу йде на корм безпритульним тваринам

Спробувати Pet Island безплатно