Notifications de Gemini CLI : un son ou une alerte quand il termine ou a besoin de vous

Gemini CLI reste tranquillement sur « Waiting for confirmation » pendant que vous lisez autre chose. Il peut vous prévenir. Le paramètre est simplement désactivé par défaut, et sous Windows il ne se comporte pas comme la documentation le laisse entendre.

Par Aslan, équipe Pet Island · Mis à jour le 26 oct. 2026 · 5 min de lecture

RÉPONSE COURTE

Définissez "general": { "enableNotifications": true } dans ~/.gemini/settings.json (ou /settings → General → Enable Notifications). Gemini CLI vous alerte alors quand il a besoin d’une approbation et quand une session se termine. Dans Windows Terminal et le terminal de VS Code, le mode automatique se contente de faire sonner le terminal : si vous voulez une vraie notification de bureau, essayez notificationMethod: "osc9". Pour votre propre son, ajoutez un hook Notification (déclenché par les demandes d’autorisation d’outils) et un hook AfterAgent (déclenché à la fin d’un tour).

Avant de commencer : quelle version de Gemini CLI avez-vous ?

Un bandeau de la documentation de Gemini CLI indique que, pour les utilisateurs de l’offre gratuite et de Google One, Gemini CLI a été remplacé par Antigravity CLI le 18 juin 2026. Tout ce qui suit concerne Gemini CLI lui-même (la commande gemini et ~/.gemini/settings.json). Si vous êtes passé à Antigravity, ses paramètres se trouvent ailleurs.

Cette fonctionnalité est attendue depuis longtemps. La demande de notifications sonores dans le dépôt de Gemini CLI (#4310) a recueilli 74 pouces levés, et un mainteneur a relevé sa priorité « to reflect how many people care » (pour refléter le nombre de personnes concernées). Une discussion ultérieure (#13313) le résumait simplement : « I can never tell when it is done. » (je ne sais jamais quand il a terminé).

Activer les notifications intégrées

Gemini CLI dispose d’une fonctionnalité de notification expérimentale. Elle est désactivée par défaut. Activez-la dans la CLI avec /settings → General → Enable Notifications, ou dans votre fichier de paramètres :

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

Une fois la fonctionnalité activée, Gemini CLI vous alerte pour deux événements :

  • Action requise : le modèle attend votre saisie ou l’approbation d’un outil.
  • Session terminée : une session s’est terminée avec succès.

Les titres des notifications sont « Gemini CLI needs your attention » et « Gemini CLI session complete ». Gemini CLI ne joue pas de son lui-même : il envoie une séquence d’échappement à votre terminal, et c’est le terminal qui décide de ce qui se passe.

Comment la notification vous parvient (et pourquoi Windows est différent)

Un second paramètre, general.notificationMethod, choisit comment l’alerte est envoyée. Les valeurs possibles sont auto (par défaut), osc9, osc777 et bell.

La page des notifications indique que la CLI utilise la séquence d’échappement OSC 9 et se rabat sur la sonnerie du terminal. Le code source est plus précis. En mode auto (packages/cli/src/utils/terminalNotifications.ts) :

TerminalCe qu’envoie auto
iTerm2OSC 9 (une notification de bureau)
Windows Terminal, terminal de VS Code, Alacritty, Apple TerminalUniquement la sonnerie (BEL)
Tous les autres terminauxOSC 777

Dans Windows Terminal, vous obtenez donc la sonnerie, pas une notification toast. L’effet de la sonnerie est un paramètre de Windows Terminal : bellStyle accepte all, audible, window, taskbar et none, et la valeur par défaut est audible. Avec all, Windows Terminal émet un son et fait clignoter l’icône dans la barre des tâches ; vous pouvez choisir le son avec bellSound.

settings.json de Windows Terminal (profil)Copier
{
"bellStyle": "all"
}

Si vous voulez essayer une vraie notification de bureau au lieu de la sonnerie, forcez la méthode :

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

La transformation d’OSC 9 en notification Windows dépend de la version du terminal. Si rien n’apparaît, revenez à auto ou bell et utilisez bellStyle: "all". La sonnerie est la voie que le code de Gemini CLI a lui-même choisie pour Windows Terminal.

Dans tmux ou screen, Gemini CLI encapsule la séquence dans un échappement de type passthrough pour qu’elle atteigne quand même le terminal externe.

Votre propre son avec des hooks

Si vous voulez un son précis, une fenêtre contextuelle ou un message sur votre téléphone, utilisez des hooks. Gemini CLI exécute les commandes des hooks à des points précis et attend qu’elles se terminent. Deux événements comptent ici :

  • Notification se déclenche quand la CLI émet une alerte système. Aujourd’hui, le seul type est ToolPermission (un outil attend votre approbation). Le hook ne peut pas approuver ni bloquer quoi que ce soit ; il est purement informatif.
  • AfterAgent se déclenche une fois par tour, après la réponse finale du modèle. La page des bonnes pratiques de Gemini le recommande quand « you only need to check the final completion » (vous avez seulement besoin de vérifier la fin).

Les hooks sont activés par défaut (hooksConfig.enabled). Un hook écrit exactement un objet JSON sur stdout et rien d’autre ({} convient quand vous n’avez rien à dire). Le code de sortie 0 signifie la réussite ; 2 bloque (et ne compte que pour les événements bloquants) ; tout autre code est un avertissement et la CLI continue. Le délai d’expiration par défaut est de 60 secondes (timeout est exprimé en millisecondes).

Windows (PowerShell)

Sous Windows, Gemini CLI exécute les commandes des hooks avec pwsh -NoProfile -Command, ou powershell.exe si PowerShell 7 n’est pas installé. Enregistrez ce script sous %USERPROFILE%\.gemini\hooks\ding.ps1 :

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

Puis associez-le aux deux événements :

~/.gemini/settings.jsonCopier
{
"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 évite l’échec le plus courant : PowerShell qui refuse d’exécuter des scripts. La documentation de Gemini propose Set-ExecutionPolicy RemoteSigned -Scope CurrentUser comme solution permanente.

macOS et Linux

Sur les autres systèmes, les hooks s’exécutent avec bash -c. Un script d’une ligne suffit :

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

Rendez-le exécutable (chmod +x ~/.gemini/hooks/ding.sh) et utilisez "command": "$HOME/.gemini/hooks/ding.sh" dans les deux mêmes événements.

Vous voulez deux sons différents, l’un pour « a besoin d’une approbation » et l’autre pour « a terminé » ? Créez deux scripts. Un hook peut aussi lire l’événement sur stdin : l’entrée de Notification contient notification_type, message et details, ce qui vous permet d’afficher la demande réelle dans votre fenêtre contextuelle.

Pourquoi votre hook ne s’exécute pas

  1. Vérifiez /hooks panel. Il liste tous les hooks chargés par Gemini CLI. /hooks enable-all les réactive s’ils ont été désactivés.
  2. Dossier non approuvé. Dans un dossier non approuvé, Gemini CLI ignore le .gemini/settings.json du projet, donc les hooks de projet ne sont pas chargés. Placez les hooks de notification dans vos paramètres utilisateur (~/.gemini/settings.json) pour qu’ils fonctionnent partout.
  3. Un hook modifié compte comme nouveau. Gemini CLI calcule une empreinte des hooks de projet ; si le nom ou la commande d’un hook change, il est traité comme un nouveau hook non approuvé.
  4. Autre chose sur stdout. Un echo égaré ou un avertissement PowerShell devant le JSON casse l’analyse. Envoyez les journaux vers stderr.
  5. Les matchers. Pour Notification et AfterAgent, utilisez "*" (ou une chaîne vide) pour tout intercepter. Les événements de cycle de vie utilisent des matchers à chaîne exacte, les événements d’outils des expressions régulières.

Ou être sollicité moins souvent

Les notifications vous aident à répondre plus vite ; vous pouvez aussi réduire la fréquence à laquelle Gemini CLI a besoin de vous. general.defaultApprovalMode peut valoir default (demander), auto_edit (les modifications sont approuvées, tout le reste demande) ou plan (lecture seule). Shift+Tab passe de l’un à l’autre. tools.allowed liste les outils qui évitent la boîte de dialogue de confirmation (par exemple run_shell_command(git)), et tools.confirmationRequired liste les outils qui doivent toujours demander.

Le mode YOLO (--yolo, ou Ctrl+Y) approuve tout et active le bac à sable par défaut. Il ne peut être activé que depuis la ligne de commande, et security.disableYoloMode le désactive définitivement si vous partagez la machine.

La place de Pet Island

Un bip vous dit que quelque chose s’est passé ; il ne vous dit pas dans quel terminal, ni ce que Gemini veut exécuter. Pet Island affiche Gemini CLI sur une petite île en haut de votre écran, à côté de vos autres agents : vous voyez quand il travaille, quand il attend votre confirmation et quand il a terminé, et un clic vous amène au bon terminal.

Avec Gemini CLI, la confirmation elle-même se fait toujours dans Gemini. Pet Island affiche la demande et vous y emmène, mais n’approuve pas les outils de Gemini à votre place. (Les demandes de Claude Code et de Codex, en revanche, peuvent recevoir une réponse directement sur l’île.)

FAQ

Gemini CLI a-t-il des notifications ?

Oui, sous forme de fonctionnalité expérimentale désactivée par défaut. Définissez general.enableNotifications sur true dans ~/.gemini/settings.json, ou utilisez /settings → General → Enable Notifications.

Pourquoi Gemini CLI se contente-t-il d’un bip sous Windows ?

En mode auto, le code de Gemini CLI n’envoie que la sonnerie du terminal à Windows Terminal et au terminal de VS Code. Le paramètre bellStyle de Windows Terminal détermine si cette sonnerie émet un son, fait clignoter la barre des tâches, ou les deux.

Un hook Gemini CLI peut-il approuver automatiquement un outil ?

Pas le hook Notification. La documentation indique qu’il ne peut ni bloquer les alertes ni accorder d’autorisations. Utilisez plutôt tools.allowed ou le moteur de stratégies pour pré-approuver des outils.

Quel hook se déclenche quand Gemini CLI a terminé ?

AfterAgent. Il se déclenche une fois par tour, après la réponse finale du modèle.

Où placer les hooks pour qu’ils fonctionnent dans tous les projets ?

Dans vos paramètres utilisateur, ~/.gemini/settings.json. Les paramètres de projet sont ignorés dans les dossiers non approuvés.

Sources

Chaque paramètre et chaque comportement décrits sur cette page ont été vérifiés dans ces pages le 26 octobre 2026. Les agents évoluent vite : si quelque chose ne correspond plus, c’est la page officielle qui fait foi.

À LIRE AUSSI

Répondez à tous vos agents depuis le haut de votre écran.

Windows et Mac · 7 jours gratuits, puis 8,99 $ une seule fois · 1 $ de chaque vente nourrit des animaux errants

Essayer Pet Island gratuitement