Notifikasi Gemini CLI: dapatkan suara atau peringatan saat ia selesai atau membutuhkan Anda

Gemini CLI dengan santai diam di “Waiting for confirmation” selagi Anda membaca hal lain. Sebenarnya ia bisa memberi tahu Anda. Hanya saja pengaturannya nonaktif secara default, dan di Windows perilakunya berbeda dari yang tersirat di dokumentasi.

Oleh Aslan, tim Pet Island · Diperbarui 26 Okt 2026 · 5 menit baca

JAWABAN SINGKAT

Setel "general": { "enableNotifications": true } di ~/.gemini/settings.json (atau /settings → General → Enable Notifications). Setelah itu Gemini CLI akan memberi tahu Anda saat membutuhkan persetujuan dan saat sebuah sesi selesai. Di Windows Terminal dan terminal VS Code, mode otomatis hanya membunyikan bel terminal, jadi jika Anda menginginkan notifikasi desktop sungguhan, coba notificationMethod: "osc9". Untuk suara Anda sendiri, tambahkan hook Notification (terpicu pada prompt izin alat) dan hook AfterAgent (terpicu saat sebuah giliran berakhir).

Sebelum mulai: Gemini CLI mana yang Anda miliki

Sebuah banner di dokumentasi Gemini CLI menyebutkan bahwa untuk pengguna tingkat gratis dan Google One, Gemini CLI digantikan oleh Antigravity CLI pada 18 Juni 2026. Semua yang ada di bawah ini membahas Gemini CLI itu sendiri (perintah gemini dan ~/.gemini/settings.json). Jika Anda sudah pindah ke Antigravity, pengaturannya berada di tempat lain.

Orang-orang sudah lama menginginkan fitur ini. Permintaan fitur notifikasi audio di repositori Gemini CLI (#4310) mengumpulkan 74 jempol, dan seorang maintainer menaikkan prioritasnya “to reflect how many people care” (untuk mencerminkan betapa banyak orang yang peduli). Diskusi berikutnya (#13313) merangkumnya dengan sederhana: “I can never tell when it is done.” (Saya tidak pernah tahu kapan ia selesai.)

Aktifkan notifikasi bawaan

Gemini CLI memiliki fitur notifikasi eksperimental. Fitur ini nonaktif secara default. Aktifkan di CLI dengan /settings → General → Enable Notifications, atau di file pengaturan Anda:

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

Setelah aktif, Gemini CLI memberi tahu Anda untuk dua event:

  • Tindakan diperlukan: model sedang menunggu input Anda atau persetujuan alat.
  • Sesi selesai: sebuah sesi berhasil diselesaikan.

Judul notifikasinya adalah “Gemini CLI needs your attention” dan “Gemini CLI session complete”. Gemini CLI tidak memutar suaranya sendiri: ia mengirim escape sequence ke terminal Anda, dan terminal yang menentukan apa yang terjadi.

Cara notifikasi sampai kepada Anda (dan mengapa Windows berbeda)

Pengaturan kedua, general.notificationMethod, menentukan cara peringatan dikirim. Nilainya adalah auto (default), osc9, osc777, dan bell.

Halaman notifikasi menyebutkan bahwa CLI memakai escape sequence OSC 9 dan beralih ke bel terminal sebagai cadangan. Kode sumbernya lebih spesifik. Dalam mode auto (packages/cli/src/utils/terminalNotifications.ts):

TerminalYang dikirim auto
iTerm2OSC 9 (notifikasi desktop)
Windows Terminal, terminal VS Code, Alacritty, Apple TerminalHanya bel (BEL)
Terminal lainnyaOSC 777

Jadi di Windows Terminal Anda mendapatkan bel, bukan toast. Apa yang dilakukan bel adalah pengaturan Windows Terminal: bellStyle menerima all, audible, window, taskbar, dan none, dan default-nya audible. Dengan all, Windows Terminal memutar suara dan membuat ikon taskbar berkedip; Anda dapat memilih suaranya dengan bellSound.

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

Jika Anda ingin mencoba notifikasi desktop sungguhan alih-alih bel, paksa metodenya:

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

Apakah sebuah terminal mengubah OSC 9 menjadi notifikasi Windows bergantung pada versi terminalnya. Jika tidak ada yang muncul, kembali ke auto atau bell dan gunakan bellStyle: "all". Bel adalah jalur yang dipilih oleh kode Gemini CLI sendiri untuk Windows Terminal.

Di dalam tmux atau screen, Gemini CLI membungkus sequence tersebut dalam passthrough escape agar tetap sampai ke terminal luar.

Suara Anda sendiri dengan hook

Jika Anda menginginkan suara tertentu, popup, atau pesan ke ponsel Anda, gunakan hook. Gemini CLI menjalankan perintah hook pada titik-titik tertentu dan menunggu hingga selesai. Ada dua event yang penting di sini:

  • Notification terpicu saat CLI mengeluarkan peringatan sistem. Saat ini satu-satunya jenisnya adalah ToolPermission (sebuah alat sedang menunggu persetujuan Anda). Hook ini tidak dapat menyetujui atau memblokir apa pun; sifatnya hanya informatif.
  • AfterAgent terpicu sekali per giliran, setelah respons akhir model. Halaman praktik terbaik Gemini sendiri merekomendasikannya saat “you only need to check the final completion” (Anda hanya perlu mengecek penyelesaian akhir).

Hook aktif secara default (hooksConfig.enabled). Hook mencetak tepat satu objek JSON ke stdout dan tidak ada yang lain ({} tidak masalah jika Anda tidak punya apa pun untuk disampaikan). Kode keluar 0 berarti sukses; 2 memblokir (dan hanya berpengaruh untuk event yang dapat memblokir); selain itu dianggap peringatan dan CLI tetap berjalan. Timeout default-nya 60 detik (timeout dalam milidetik).

Windows (PowerShell)

Di Windows, Gemini CLI menjalankan perintah hook dengan pwsh -NoProfile -Command, atau powershell.exe jika PowerShell 7 tidak terpasang. Simpan skrip ini sebagai %USERPROFILE%\.gemini\hooks\ding.ps1:

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

Lalu arahkan kedua event ke skrip tersebut:

~/.gemini/settings.jsonSalin
{
"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 menghindari kegagalan yang paling umum: PowerShell menolak menjalankan skrip. Dokumentasi Gemini menyarankan Set-ExecutionPolicy RemoteSigned -Scope CurrentUser sebagai solusi permanen.

macOS dan Linux

Di sistem lain, hook berjalan dengan bash -c. Skrip satu baris sudah cukup:

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

Jadikan skrip itu executable (chmod +x ~/.gemini/hooks/ding.sh) dan gunakan "command": "$HOME/.gemini/hooks/ding.sh" pada dua event yang sama.

Ingin dua suara berbeda, satu untuk “membutuhkan persetujuan” dan satu untuk “selesai”? Buat dua skrip. Hook juga dapat membaca event dari stdin: input Notification membawa notification_type, message, dan details, sehingga Anda bisa menampilkan permintaan yang sebenarnya di popup.

Mengapa hook Anda tidak berjalan

  1. Cek /hooks panel. Perintah ini menampilkan setiap hook yang dimuat Gemini CLI. /hooks enable-all mengaktifkannya kembali jika sebelumnya dinonaktifkan.
  2. Folder tidak tepercaya. Di folder yang tidak tepercaya, Gemini CLI mengabaikan .gemini/settings.json milik proyek, sehingga hook proyek tidak dimuat. Letakkan hook notifikasi di pengaturan pengguna Anda (~/.gemini/settings.json) agar berfungsi di mana saja.
  3. Hook yang diubah dianggap baru. Gemini CLI membuat sidik jari (fingerprint) untuk hook proyek; jika nama atau perintah sebuah hook berubah, hook itu diperlakukan sebagai hook baru yang tidak tepercaya.
  4. Ada hal lain di stdout. echo yang nyasar atau peringatan PowerShell di depan JSON akan merusak parsing. Kirim log ke stderr.
  5. Matcher. Untuk Notification dan AfterAgent, gunakan "*" (atau string kosong) untuk mencocokkan semuanya. Event lifecycle memakai matcher string persis, event alat memakai regular expression.

Atau kurangi frekuensi pertanyaannya

Notifikasi membantu Anda menjawab lebih cepat; Anda juga bisa mengurangi seberapa sering Gemini CLI membutuhkan Anda. general.defaultApprovalMode dapat bernilai default (bertanya), auto_edit (pengeditan disetujui, selebihnya bertanya), atau plan (read-only). Shift+Tab berpindah di antara mode-mode tersebut. tools.allowed berisi daftar alat yang melewati dialog konfirmasi (misalnya run_shell_command(git)), dan tools.confirmationRequired berisi daftar alat yang harus selalu bertanya.

Mode YOLO (--yolo, atau Ctrl+Y) menyetujui semuanya dan mengaktifkan sandbox secara default. Mode ini hanya dapat diaktifkan dari baris perintah, dan security.disableYoloMode menonaktifkannya secara permanen jika Anda berbagi mesin dengan orang lain.

Peran Pet Island

Bunyi bip memberi tahu Anda bahwa sesuatu terjadi; bunyi itu tidak memberi tahu terminal mana, atau apa yang ingin dijalankan Gemini. Pet Island menempatkan Gemini CLI di sebuah island kecil di bagian atas layar Anda di samping agen-agen Anda yang lain: Anda bisa melihat kapan ia sedang bekerja, kapan ia menunggu konfirmasi Anda, dan kapan ia selesai, dengan sekali klik untuk melompat ke terminal yang tepat.

Dengan Gemini CLI, konfirmasinya sendiri tetap terjadi di Gemini. Pet Island menampilkan permintaan dan membawa Anda ke sana, tetapi tidak menyetujui alat Gemini untuk Anda. (Sebaliknya, permintaan Claude Code dan Codex dapat dijawab langsung di island.)

FAQ

Apakah Gemini CLI memiliki notifikasi?

Ya, sebagai fitur eksperimental yang nonaktif secara default. Setel general.enableNotifications ke true di ~/.gemini/settings.json, atau gunakan /settings → General → Enable Notifications.

Mengapa Gemini CLI hanya berbunyi bip di Windows?

Dalam mode auto, kode Gemini CLI hanya mengirim bel terminal ke Windows Terminal dan terminal VS Code. Pengaturan bellStyle di Windows Terminal menentukan apakah bel itu memutar suara, membuat taskbar berkedip, atau keduanya.

Bisakah hook Gemini CLI menyetujui alat secara otomatis?

Hook Notification tidak bisa. Dokumentasinya menyebutkan bahwa hook ini tidak dapat memblokir peringatan atau memberikan izin. Gunakan tools.allowed atau policy engine untuk menyetujui alat terlebih dahulu.

Hook mana yang terpicu saat Gemini CLI selesai?

AfterAgent. Hook ini terpicu sekali per giliran, setelah respons akhir model.

Di mana saya meletakkan hook agar berfungsi di setiap proyek?

Di pengaturan pengguna Anda, ~/.gemini/settings.json. Pengaturan proyek diabaikan di folder yang tidak tepercaya.

Sumber

Setiap pengaturan dan perilaku di halaman ini telah dicocokkan dengan halaman-halaman berikut pada 26 Oktober 2026. Agen berubah dengan cepat; jika ada yang tidak lagi sesuai, halaman resmi yang berlaku.

BACA JUGA

Jawab setiap agen dari bagian atas layar Anda.

Windows dan Mac · Gratis 7 hari, lalu $8.99 sekali bayar · $1 dari setiap penjualan memberi makan hewan jalanan

Coba Pet Island gratis