Gemini-CLI-Benachrichtigungen: Ton oder Hinweis, wenn es fertig ist oder dich braucht

Die Gemini CLI wartet seelenruhig bei „Waiting for confirmation“, während du etwas anderes liest. Sie kann dir Bescheid geben. Die Einstellung ist nur standardmäßig aus, und unter Windows verhält sie sich anders, als die Doku vermuten lässt.

Von Aslan, Pet-Island-Team · Aktualisiert am 26. Okt. 2026 · 5 Min. Lesezeit

KURZE ANTWORT

Setz "general": { "enableNotifications": true } in ~/.gemini/settings.json (oder /settings → General → Enable Notifications). Dann benachrichtigt dich die Gemini CLI, wenn sie eine Freigabe braucht und wenn eine Sitzung abgeschlossen ist. In Windows Terminal und im VS-Code-Terminal läutet der automatische Modus nur die Terminalglocke; wenn du eine echte Desktop-Benachrichtigung willst, probier notificationMethod: "osc9". Für deinen eigenen Ton fügst du einen Notification-Hook (löst bei Tool-Berechtigungsabfragen aus) und einen AfterAgent-Hook (löst am Ende eines Turns aus) hinzu.

Bevor du anfängst: welche Gemini CLI du hast

Ein Banner in der Dokumentation der Gemini CLI besagt, dass die Gemini CLI für Nutzer der kostenlosen Stufe und von Google One am 18. Juni 2026 durch die Antigravity CLI ersetzt wurde. Alles Folgende bezieht sich auf die Gemini CLI selbst (den Befehl gemini und ~/.gemini/settings.json). Wenn du zu Antigravity gewechselt bist, liegen deren Einstellungen woanders.

Das wünschen sich Leute schon lange. Der Feature-Request für akustische Benachrichtigungen im Gemini-CLI-Repository (#4310) sammelte 74 Daumen hoch, und ein Maintainer erhöhte die Priorität, „um widerzuspiegeln, wie vielen Leuten das wichtig ist“. Eine spätere Diskussion (#13313) brachte es auf den Punkt: „I can never tell when it is done.“ (Ich weiß nie, wann sie fertig ist.)

Die integrierten Benachrichtigungen einschalten

Die Gemini CLI hat eine experimentelle Benachrichtigungsfunktion. Sie ist standardmäßig deaktiviert. Schalte sie in der CLI über /settings → General → Enable Notifications ein oder in deiner Einstellungsdatei:

~/.gemini/settings.jsonKopieren
{
"general": {
"enableNotifications": true
}
}

Sobald sie an ist, benachrichtigt dich die Gemini CLI bei zwei Events:

  • Aktion erforderlich: Das Modell wartet auf deine Eingabe oder auf eine Tool-Freigabe.
  • Sitzung abgeschlossen: Eine Sitzung wurde erfolgreich beendet.

Die Titel der Benachrichtigungen lauten „Gemini CLI needs your attention“ und „Gemini CLI session complete“. Die Gemini CLI spielt selbst keinen Ton ab: Sie schickt deinem Terminal eine Escape-Sequenz, und das Terminal entscheidet, was passiert.

Wie die Benachrichtigung dich erreicht (und warum Windows anders ist)

Eine zweite Einstellung, general.notificationMethod, legt fest, wie der Hinweis gesendet wird. Die Werte sind auto (Standard), osc9, osc777 und bell.

Die Seite zu Benachrichtigungen sagt, die CLI nutze die Escape-Sequenz OSC 9 und falle auf eine Terminalglocke zurück. Der Quellcode ist genauer. Im Modus auto (packages/cli/src/utils/terminalNotifications.ts):

TerminalWas auto sendet
iTerm2OSC 9 (eine Desktop-Benachrichtigung)
Windows Terminal, VS-Code-Terminal, Alacritty, Apple TerminalNur die Glocke (BEL)
Jedes andere TerminalOSC 777

In Windows Terminal bekommst du also die Glocke, keinen Toast. Was die Glocke macht, ist eine Einstellung von Windows Terminal: bellStyle akzeptiert all, audible, window, taskbar und none, und der Standard ist audible. Mit all spielt Windows Terminal einen Ton ab und lässt das Taskleistensymbol blinken; den Ton wählst du mit bellSound.

Windows Terminal settings.json (Profil)Kopieren
{
"bellStyle": "all"
}

Wenn du statt der Glocke eine echte Desktop-Benachrichtigung ausprobieren willst, erzwinge die Methode:

~/.gemini/settings.jsonKopieren
{
"general": {
"enableNotifications": true,
"notificationMethod": "osc9"
}
}

Ob ein bestimmtes Terminal aus OSC 9 eine Windows-Benachrichtigung macht, hängt von der Terminalversion ab. Wenn nichts erscheint, geh zurück zu auto oder bell und verwende bellStyle: "all". Die Glocke ist der Weg, den der Code der Gemini CLI selbst für Windows Terminal gewählt hat.

In tmux oder screen verpackt die Gemini CLI die Sequenz in eine Passthrough-Escape-Sequenz, damit sie trotzdem das äußere Terminal erreicht.

Dein eigener Ton mit Hooks

Wenn du einen bestimmten Ton, ein Pop-up oder eine Nachricht aufs Handy willst, verwende Hooks. Die Gemini CLI führt Hook-Befehle an festen Punkten aus und wartet, bis sie fertig sind. Zwei Events sind hier wichtig:

  • Notification löst aus, wenn die CLI einen Systemhinweis ausgibt. Derzeit gibt es nur den Typ ToolPermission (ein Tool wartet auf deine Freigabe). Der Hook kann nichts freigeben oder blockieren; er ist rein informativ.
  • AfterAgent löst einmal pro Turn aus, nach der letzten Antwort des Modells. Geminis eigene Best-Practices-Seite empfiehlt es, wenn „you only need to check the final completion“ (du nur den endgültigen Abschluss prüfen musst).

Hooks sind standardmäßig aktiv (hooksConfig.enabled). Ein Hook gibt genau ein JSON-Objekt auf stdout aus und sonst nichts ({} reicht, wenn du nichts zu sagen hast). Exit-Code 0 bedeutet Erfolg; 2 blockiert (und ist nur bei blockierenden Events relevant); alles andere ist eine Warnung, und die CLI macht weiter. Das Standard-Timeout beträgt 60 Sekunden (timeout wird in Millisekunden angegeben).

Windows (PowerShell)

Unter Windows führt die Gemini CLI Hook-Befehle mit pwsh -NoProfile -Command aus oder mit powershell.exe, wenn PowerShell 7 nicht installiert ist. Speichere dieses Skript als %USERPROFILE%\.gemini\hooks\ding.ps1:

~/.gemini/hooks/ding.ps1Kopieren
# Two short beeps: frequency in Hz, duration in ms
[Console]::Beep(880, 150)
[Console]::Beep(1320, 150)
 
# Hooks must print one JSON object
"{}"

Dann verweise beide Events darauf:

~/.gemini/settings.jsonKopieren
{
"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 vermeidet den häufigsten Fehler: dass PowerShell sich weigert, Skripte auszuführen. Die Gemini-Doku schlägt Set-ExecutionPolicy RemoteSigned -Scope CurrentUser als dauerhafte Lösung vor.

macOS und Linux

Auf anderen Systemen laufen Hooks mit bash -c. Ein einzeiliges Skript erledigt das:

~/.gemini/hooks/ding.shKopieren
#!/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 '{}'

Mach es ausführbar (chmod +x ~/.gemini/hooks/ding.sh) und verwende "command": "$HOME/.gemini/hooks/ding.sh" in denselben beiden Events.

Du willst zwei verschiedene Töne, einen für „braucht Freigabe“ und einen für „fertig“? Leg zwei Skripte an. Ein Hook kann das Event auch aus stdin lesen: Die Notification-Eingabe enthält notification_type, message und details, sodass du die eigentliche Anfrage in deinem Pop-up anzeigen kannst.

Warum dein Hook nicht läuft

  1. Prüf /hooks panel. Dort stehen alle Hooks, die die Gemini CLI geladen hat. /hooks enable-all schaltet sie wieder ein, falls sie deaktiviert wurden.
  2. Nicht vertrauenswürdiger Ordner. In einem nicht vertrauenswürdigen Ordner ignoriert die Gemini CLI die .gemini/settings.json des Projekts, also werden Projekt-Hooks nicht geladen. Leg Benachrichtigungs-Hooks in deine Benutzereinstellungen (~/.gemini/settings.json), damit sie überall funktionieren.
  3. Geänderte Hooks gelten als neu. Die Gemini CLI erstellt Fingerabdrücke von Projekt-Hooks; ändern sich Name oder Befehl eines Hooks, gilt er als neuer, nicht vertrauenswürdiger Hook.
  4. Etwas anderes auf stdout. Ein verirrtes echo oder eine PowerShell-Warnung vor dem JSON bricht das Parsen. Schick Logs nach stderr.
  5. Matcher. Für Notification und AfterAgent verwendest du "*" (oder einen leeren String), um alles zu erfassen. Lifecycle-Events verwenden exakte String-Matcher, Tool-Events reguläre Ausdrücke.

Oder seltener gefragt werden

Benachrichtigungen helfen dir, schneller zu antworten; du kannst aber auch reduzieren, wie oft die Gemini CLI dich braucht. general.defaultApprovalMode kann default (fragt), auto_edit (Änderungen werden freigegeben, alles andere fragt) oder plan (schreibgeschützt) sein. Mit Shift+Tab wechselst du zwischen ihnen. tools.allowed listet Tools auf, die den Bestätigungsdialog überspringen (zum Beispiel run_shell_command(git)), und tools.confirmationRequired listet Tools auf, die immer fragen müssen.

Der YOLO-Modus (--yolo oder Ctrl+Y) gibt alles frei und schaltet standardmäßig die Sandbox ein. Er lässt sich nur über die Befehlszeile aktivieren, und security.disableYoloMode schaltet ihn dauerhaft ab, wenn du den Rechner teilst.

Wo Pet Island ins Spiel kommt

Ein Piep sagt dir, dass etwas passiert ist; er sagt dir nicht, in welchem Terminal oder was Gemini ausführen will. Pet Island zeigt die Gemini CLI neben deinen anderen Agenten auf einer kleinen Insel oben auf deinem Bildschirm: Du siehst, wann sie arbeitet, wann sie auf deine Bestätigung wartet und wann sie fertig ist, und ein Klick bringt dich ins richtige Terminal.

Bei der Gemini CLI findet die Bestätigung selbst weiterhin in Gemini statt. Pet Island zeigt die Anfrage an und bringt dich dorthin, gibt Geminis Tools aber nicht für dich frei. (Anfragen von Claude Code und Codex lassen sich dagegen direkt auf der Insel beantworten.)

FAQ

Hat die Gemini CLI Benachrichtigungen?

Ja, als experimentelle Funktion, die standardmäßig aus ist. Setz general.enableNotifications in ~/.gemini/settings.json auf true oder nutze /settings → General → Enable Notifications.

Warum piept die Gemini CLI unter Windows nur?

Im Modus auto sendet der Code der Gemini CLI an Windows Terminal und das VS-Code-Terminal nur die Terminalglocke. Die Einstellung bellStyle von Windows Terminal steuert, ob diese Glocke einen Ton abspielt, die Taskleiste blinken lässt oder beides.

Kann ein Gemini-CLI-Hook ein Tool automatisch freigeben?

Der Notification-Hook nicht. Laut Doku kann er weder Hinweise blockieren noch Berechtigungen erteilen. Verwende stattdessen tools.allowed oder die Policy Engine, um Tools vorab freizugeben.

Welcher Hook löst aus, wenn die Gemini CLI fertig ist?

AfterAgent. Er löst einmal pro Turn aus, nach der letzten Antwort des Modells.

Wohin gehören die Hooks, damit sie in jedem Projekt funktionieren?

In deine Benutzereinstellungen, ~/.gemini/settings.json. Projekteinstellungen werden in nicht vertrauenswürdigen Ordnern ignoriert.

Quellen

Jede Einstellung und jedes Verhalten auf dieser Seite wurde am 26. Oktober 2026 mit diesen Seiten abgeglichen. Agenten ändern sich schnell; wenn etwas nicht mehr passt, gilt die offizielle Seite.

WEITERLESEN

Antworte jedem Agenten direkt oben auf deinem Bildschirm.

Windows und Mac · 7 Tage kostenlos, dann einmalig 8,99 $ · 1 $ pro Verkauf ernährt Straßentiere

Pet Island kostenlos testen