Powiadomienia Gemini CLI: dźwięk lub alert, gdy skończy lub cię potrzebuje
Gemini CLI spokojnie stoi na „Waiting for confirmation”, podczas gdy ty czytasz coś innego. Może cię o tym powiadomić. Tyle że ustawienie jest domyślnie wyłączone, a w systemie Windows działa inaczej, niż sugeruje dokumentacja.
KRÓTKA ODPOWIEDŹ
Ustaw "general": { "enableNotifications": true } w ~/.gemini/settings.json (lub /settings → General → Enable Notifications). Gemini CLI będzie wtedy powiadamiać cię, gdy potrzebuje zatwierdzenia i gdy sesja się zakończy. W Windows Terminal i terminalu VS Code tryb automatyczny używa tylko dzwonka terminala, więc jeśli chcesz prawdziwego powiadomienia na pulpicie, spróbuj notificationMethod: "osc9". Dla własnego dźwięku dodaj hook Notification (uruchamia się przy monitach o zgodę na użycie narzędzia) i hook AfterAgent (uruchamia się po zakończeniu tury).
Zanim zaczniesz: którą wersję Gemini CLI masz
Baner w dokumentacji Gemini CLI informuje, że dla użytkowników bezpłatnego planu i Google One Gemini CLI zostało 18 czerwca 2026 zastąpione przez Antigravity CLI. Wszystko poniżej dotyczy samego Gemini CLI (polecenia gemini i pliku ~/.gemini/settings.json). Jeśli przeszedłeś na Antigravity, jego ustawienia znajdują się gdzie indziej.
Ludzie chcieli tego od dawna. Prośba o powiadomienia dźwiękowe w repozytorium Gemini CLI (#4310) zebrała 74 kciuki w górę, a jeden z opiekunów podniósł jej priorytet, „żeby odzwierciedlić, jak wielu osobom na tym zależy”. Późniejsza dyskusja (#13313) ujęła to prosto: „Nigdy nie wiem, kiedy skończył”.
Włączanie wbudowanych powiadomień
Gemini CLI ma eksperymentalną funkcję powiadomień. Domyślnie jest wyłączona. Włącz ją w CLI przez /settings → General → Enable Notifications lub w pliku ustawień:
Po włączeniu Gemini CLI powiadamia cię o dwóch zdarzeniach:
- Wymagane działanie: model czeka na twoje dane wejściowe lub na zatwierdzenie narzędzia.
- Sesja zakończona: sesja zakończyła się pomyślnie.
Tytuły powiadomień to „Gemini CLI needs your attention” i „Gemini CLI session complete”. Gemini CLI samo nie odtwarza dźwięku: wysyła do terminala sekwencję ucieczki, a terminal decyduje, co się stanie.
Jak powiadomienie do ciebie dociera (i dlaczego Windows działa inaczej)
Drugie ustawienie, general.notificationMethod, określa sposób wysyłania alertu. Wartości to auto (domyślna), osc9, osc777 i bell.
Strona o powiadomieniach mówi, że CLI używa sekwencji ucieczki OSC 9 i w razie potrzeby wraca do dzwonka terminala. Kod źródłowy jest bardziej szczegółowy. W trybie auto (packages/cli/src/utils/terminalNotifications.ts):
| Terminal | Co wysyła auto |
|---|---|
| iTerm2 | OSC 9 (powiadomienie na pulpicie) |
| Windows Terminal, terminal VS Code, Alacritty, Apple Terminal | Tylko dzwonek (BEL) |
| Każdy inny terminal | OSC 777 |
W Windows Terminal dostajesz więc dzwonek, a nie wyskakujące powiadomienie. To, co robi dzwonek, zależy od ustawienia Windows Terminal: bellStyle przyjmuje all, audible, window, taskbar i none, a domyślnie jest audible. Przy all Windows Terminal odtwarza dźwięk i miga ikoną na pasku zadań; dźwięk wybierzesz w bellSound.
Jeśli zamiast dzwonka chcesz wypróbować prawdziwe powiadomienie na pulpicie, wymuś metodę:
To, czy dany terminal zamieni OSC 9 w powiadomienie Windows, zależy od wersji terminala. Jeśli nic się nie pojawi, wróć do auto lub bell i użyj bellStyle: "all". Dzwonek to droga, którą dla Windows Terminal wybrał sam kod Gemini CLI.
W tmux lub screen Gemini CLI opakowuje ją w sekwencję passthrough, żeby nadal docierała do zewnętrznego terminala.
Własny dźwięk za pomocą hooków
Jeśli chcesz konkretnego dźwięku, wyskakującego okienka albo wiadomości na telefon, użyj hooków. Gemini CLI uruchamia polecenia hooków w określonych punktach i czeka na ich zakończenie. Ważne są tu dwa zdarzenia:
Notificationuruchamia się, gdy CLI generuje alert systemowy. Obecnie jedynym typem jestToolPermission(narzędzie czeka na twoje zatwierdzenie). Hook nie może niczego zatwierdzić ani zablokować; ma charakter wyłącznie informacyjny.AfterAgenturuchamia się raz na turę, po ostatniej odpowiedzi modelu. Strona z dobrymi praktykami Gemini zaleca go, gdy „musisz sprawdzić tylko ostateczne zakończenie”.
Hooki są domyślnie włączone (hooksConfig.enabled). Hook wypisuje na stdout dokładnie jeden obiekt JSON i nic poza nim ({} wystarczy, gdy nie masz nic do przekazania). Kod wyjścia 0 oznacza sukces; 2 blokuje (i ma znaczenie tylko przy zdarzeniach blokujących); wszystko inne to ostrzeżenie i CLI działa dalej. Domyślny limit czasu to 60 sekund (timeout podaje się w milisekundach).
Windows (PowerShell)
W systemie Windows Gemini CLI uruchamia polecenia hooków przez pwsh -NoProfile -Command lub powershell.exe, jeśli PowerShell 7 nie jest zainstalowany. Zapisz ten skrypt jako %USERPROFILE%\.gemini\hooks\ding.ps1:
Następnie wskaż go w obu zdarzeniach:
-ExecutionPolicy Bypass zapobiega najczęstszemu błędowi: PowerShell odmawia uruchamiania skryptów. Dokumentacja Gemini jako trwałe rozwiązanie proponuje Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.
macOS i Linux
W innych systemach hooki działają przez bash -c. Wystarczy jednowierszowy skrypt:
Nadaj mu uprawnienia do wykonywania (chmod +x ~/.gemini/hooks/ding.sh) i użyj "command": "$HOME/.gemini/hooks/ding.sh" w tych samych dwóch zdarzeniach.
Chcesz dwóch różnych dźwięków, jednego dla „potrzebuje zatwierdzenia” i drugiego dla „skończone”? Utwórz dwa skrypty. Hook może też odczytać zdarzenie ze stdin: dane wejściowe Notification zawierają notification_type, message i details, więc możesz pokazać w okienku faktyczną prośbę.
Dlaczego twój hook się nie uruchamia
- Sprawdź
/hooks panel. Wyświetla każdy hook wczytany przez Gemini CLI./hooks enable-allwłącza je z powrotem, jeśli zostały wyłączone. - Niezaufany folder. W niezaufanym folderze Gemini CLI ignoruje plik
.gemini/settings.jsonprojektu, więc hooki projektu się nie wczytują. Umieść hooki powiadomień w ustawieniach użytkownika (~/.gemini/settings.json), żeby działały wszędzie. - Zmienione hooki liczą się jako nowe. Gemini CLI tworzy odciski hooków projektu; jeśli zmieni się nazwa lub polecenie hooka, jest on traktowany jako nowy, niezaufany hook.
- Coś innego na stdout. Zabłąkane
echolub ostrzeżenie PowerShell przed JSON psuje parsowanie. Logi kieruj do stderr. - Matchery. Dla
NotificationiAfterAgentużyj"*"(lub pustego ciągu), żeby dopasować wszystko. Zdarzenia cyklu życia używają matcherów z dokładnym ciągiem, zdarzenia narzędzi używają wyrażeń regularnych.
Albo spraw, żeby pytał rzadziej
Powiadomienia pomagają szybciej odpowiadać; możesz też ograniczyć, jak często Gemini CLI cię potrzebuje. general.defaultApprovalMode może mieć wartość default (pytaj), auto_edit (edycje są zatwierdzane, o wszystko inne pyta) lub plan (tylko do odczytu). Shift+Tab przełącza między nimi. tools.allowed zawiera narzędzia, które pomijają okno potwierdzenia (na przykład run_shell_command(git)), a tools.confirmationRequired narzędzia, które zawsze muszą pytać.
Tryb YOLO (--yolo lub Ctrl+Y) zatwierdza wszystko i domyślnie włącza piaskownicę. Można go włączyć tylko z wiersza poleceń, a security.disableYoloMode wyłącza go na stałe, jeśli współdzielisz komputer.
Gdzie przydaje się Pet Island
Sygnał dźwiękowy mówi ci, że coś się stało; nie mówi, w którym terminalu ani co Gemini chce uruchomić. Pet Island umieszcza Gemini CLI na małej wyspie u góry ekranu obok twoich innych agentów: widzisz, kiedy pracuje, kiedy czeka na twoje potwierdzenie i kiedy skończył, a jedno kliknięcie przenosi cię do właściwego terminala.
W przypadku Gemini CLI samo potwierdzenie nadal odbywa się w Gemini. Pet Island pokazuje prośbę i przenosi cię tam, ale nie zatwierdza za ciebie narzędzi Gemini. (Na prośby z Claude Code i Codex można natomiast odpowiadać bezpośrednio na wyspie.)
CZĘSTE PYTANIA
Czy Gemini CLI ma powiadomienia?
Tak, jako funkcję eksperymentalną, domyślnie wyłączoną. Ustaw general.enableNotifications na true w ~/.gemini/settings.json lub użyj /settings → General → Enable Notifications.
Dlaczego Gemini CLI w systemie Windows tylko wydaje sygnał dźwiękowy?
W trybie auto kod Gemini CLI wysyła do Windows Terminal i terminala VS Code tylko dzwonek terminala. Ustawienie bellStyle w Windows Terminal określa, czy dzwonek odtwarza dźwięk, miga paskiem zadań, czy jedno i drugie.
Czy hook Gemini CLI może automatycznie zatwierdzić narzędzie?
Hook Notification nie może. Według dokumentacji nie może on blokować alertów ani przyznawać uprawnień. Do wstępnego zatwierdzania narzędzi użyj zamiast tego tools.allowed lub silnika zasad.
Który hook uruchamia się, gdy Gemini CLI skończy?
AfterAgent. Uruchamia się raz na turę, po ostatniej odpowiedzi modelu.
Gdzie umieścić hooki, żeby działały w każdym projekcie?
W ustawieniach użytkownika, ~/.gemini/settings.json. Ustawienia projektu są ignorowane w niezaufanych folderach.
Źródła
Każde ustawienie i zachowanie opisane na tej stronie zostało sprawdzone z tymi stronami 26 października 2026. Agenci szybko się zmieniają; jeśli coś przestało się zgadzać, obowiązuje strona oficjalna.
- Dokumentacja Gemini CLI: Notifications (eksperymentalne)
- Dokumentacja Gemini CLI: Hooks
- Dokumentacja Gemini CLI: Hooks reference
- Dokumentacja Gemini CLI: Writing hooks (przykład w PowerShell)
- Dokumentacja Gemini CLI: Configuration reference
- Dokumentacja Gemini CLI: Trusted folders
- Kod źródłowy Gemini CLI: terminalNotifications.ts
- Zgłoszenie Gemini CLI #4310: Audio notifications
- Dyskusja Gemini CLI #13313: Enable sound when Gemini is done
- Microsoft Learn: ustawienia profilu Windows Terminal (bellStyle, bellSound)
- Microsoft Learn: Console.Beep