Сповіщення Gemini CLI: звук або сигнал, коли він закінчив або потрібні ви
Gemini CLI спокійно стоїть на «Waiting for confirmation», поки ви читаєте щось інше. Він уміє про це повідомляти. Просто налаштування за замовчуванням вимкнене, а у Windows воно поводиться не так, як випливає з документації.
КОРОТКО
Задайте "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 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 |
|---|---|
| iTerm2 | OSC 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.
Якщо хочете спробувати справжнє сповіщення на робочому столі замість дзвінка, задайте спосіб примусово:
Чи перетворить конкретний термінал 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:
Потім спрямуйте на нього обидві події:
-ExecutionPolicy Bypass запобігає найчастішому збою: відмові PowerShell запускати скрипти. Як постійне рішення документація Gemini пропонує Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.
macOS і Linux
В інших системах хуки запускаються через bash -c. Вистачить однорядкового скрипта:
Зробіть його виконуваним (chmod +x ~/.gemini/hooks/ding.sh) і вкажіть "command": "$HOME/.gemini/hooks/ding.sh" у тих самих двох подіях.
Хочете два різні звуки, один для «потрібне підтвердження», інший для «готово»? Зробіть два скрипти. Хук також може прочитати подію з stdin: вхідні дані Notification містять notification_type, message і details, тож у спливному вікні можна показати сам запит.
Чому ваш хук не запускається
- Перевірте
/hooks panel. Там перелічено всі хуки, які завантажив Gemini CLI./hooks enable-allзнову вмикає їх, якщо їх було вимкнено. - Недовірена папка. У недовіреній папці Gemini CLI ігнорує
.gemini/settings.jsonпроєкту, тому хуки проєкту не завантажуються. Розміщуйте хуки сповіщень у користувацьких налаштуваннях (~/.gemini/settings.json), щоб вони працювали всюди. - Змінені хуки вважаються новими. Gemini CLI знімає відбитки хуків проєкту; якщо назва або команда хука змінюється, він вважається новим, недовіреним хуком.
- Щось іще в stdout. Випадковий
echoабо попередження PowerShell перед JSON ламає розбір. Пишіть логи в stderr. - 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 р.. Агенти швидко змінюються; якщо щось уже не збігається, пріоритет має офіційна сторінка.
- Документація Gemini CLI: Notifications (експериментальна функція)
- Документація Gemini CLI: Hooks
- Документація Gemini CLI: Hooks reference
- Документація Gemini CLI: Writing hooks (приклад для PowerShell)
- Документація Gemini CLI: Configuration reference
- Документація Gemini CLI: Trusted folders
- Вихідний код Gemini CLI: terminalNotifications.ts
- Issue Gemini CLI #4310: Audio notifications
- Обговорення Gemini CLI #13313: Enable sound when Gemini is done
- Microsoft Learn: параметри профілю Windows Terminal (bellStyle, bellSound)
- Microsoft Learn: Console.Beep