Thông báo của Gemini CLI: nhận âm thanh hoặc cảnh báo khi nó xong việc hoặc cần bạn

Gemini CLI cứ thản nhiên dừng ở “Waiting for confirmation” trong lúc bạn đọc thứ khác. Nó có thể báo cho bạn. Chỉ là thiết lập này tắt theo mặc định, và trên Windows nó hoạt động khác với những gì tài liệu gợi ý.

Tác giả: Aslan, nhóm Pet Island · Cập nhật 26/10/2026 · 5 phút đọc

TRẢ LỜI NGẮN

Đặt "general": { "enableNotifications": true } trong ~/.gemini/settings.json (hoặc /settings → General → Enable Notifications). Khi đó Gemini CLI sẽ báo cho bạn khi nó cần phê duyệt và khi một phiên hoàn tất. Trên Windows Terminal và terminal của VS Code, chế độ tự động chỉ phát chuông terminal, nên nếu bạn muốn một thông báo trên màn hình thật sự, hãy thử notificationMethod: "osc9". Để có âm thanh riêng, hãy thêm hook Notification (kích hoạt khi có lời nhắc cấp quyền cho công cụ) và hook AfterAgent (kích hoạt khi một lượt kết thúc).

Trước khi bắt đầu: bạn đang dùng Gemini CLI nào

Một banner trên trang tài liệu Gemini CLI cho biết với người dùng gói miễn phí và Google One, Gemini CLI đã được thay thế bằng Antigravity CLI vào ngày 18 tháng 6 năm 2026. Mọi nội dung bên dưới đều nói về chính Gemini CLI (lệnh gemini và ~/.gemini/settings.json). Nếu bạn đã chuyển sang Antigravity, thiết lập của nó nằm ở chỗ khác.

Mọi người đã muốn có tính năng này từ lâu. Yêu cầu tính năng thông báo bằng âm thanh trong repository Gemini CLI (#4310) nhận được 74 lượt thích, và một maintainer đã nâng mức ưu tiên của nó “to reflect how many people care” (để phản ánh có bao nhiêu người quan tâm). Một thảo luận sau đó (#13313) nói gọn: “I can never tell when it is done.” (Tôi chẳng bao giờ biết khi nào nó xong.)

Bật thông báo tích hợp

Gemini CLI có một tính năng thông báo đang thử nghiệm. Tính năng này tắt theo mặc định. Hãy bật nó trong CLI bằng /settings → General → Enable Notifications, hoặc trong tệp cài đặt của bạn:

~/.gemini/settings.jsonSao chép
{
"general": {
"enableNotifications": true
}
}

Sau khi bật, Gemini CLI sẽ báo cho bạn với hai sự kiện:

  • Cần hành động: mô hình đang chờ bạn nhập liệu hoặc phê duyệt công cụ.
  • Phiên hoàn tất: một phiên đã kết thúc thành công.

Tiêu đề thông báo là “Gemini CLI needs your attention” và “Gemini CLI session complete”. Gemini CLI không tự phát âm thanh: nó gửi một chuỗi escape đến terminal của bạn, và terminal quyết định điều gì sẽ xảy ra.

Thông báo đến với bạn như thế nào (và vì sao Windows lại khác)

Một thiết lập thứ hai, general.notificationMethod, chọn cách gửi cảnh báo. Các giá trị là auto (mặc định), osc9, osc777 và bell.

Trang thông báo nói rằng CLI dùng chuỗi escape OSC 9 và chuyển sang chuông terminal khi cần. Mã nguồn thì cụ thể hơn. Ở chế độ auto (packages/cli/src/utils/terminalNotifications.ts):

TerminalAuto gửi gì
iTerm2OSC 9 (thông báo trên màn hình)
Windows Terminal, terminal của VS Code, Alacritty, Apple TerminalChỉ chuông (BEL)
Mọi terminal khácOSC 777

Vì vậy trên Windows Terminal, bạn nhận được chuông chứ không phải thông báo toast. Chuông làm gì là do thiết lập của Windows Terminal: bellStyle nhận all, audible, window, taskbar và none, và mặc định là audible. Với all, Windows Terminal phát âm thanh và làm nhấp nháy biểu tượng trên taskbar; bạn có thể chọn âm thanh bằng bellSound.

settings.json của Windows Terminal (profile)Sao chép
{
"bellStyle": "all"
}

Nếu bạn muốn thử một thông báo trên màn hình thật sự thay cho chuông, hãy ép phương thức:

~/.gemini/settings.jsonSao chép
{
"general": {
"enableNotifications": true,
"notificationMethod": "osc9"
}
}

Một terminal có biến OSC 9 thành thông báo Windows hay không còn tùy vào phiên bản terminal. Nếu không thấy gì xuất hiện, hãy quay lại auto hoặc bell và dùng bellStyle: "all". Chuông là cách mà chính mã nguồn của Gemini CLI đã chọn cho Windows Terminal.

Bên trong tmux hoặc screen, Gemini CLI bọc chuỗi đó trong một passthrough escape để nó vẫn đến được terminal bên ngoài.

Âm thanh riêng của bạn bằng hook

Nếu bạn muốn một âm thanh cụ thể, một cửa sổ bật lên, hoặc một tin nhắn đến điện thoại, hãy dùng hook. Gemini CLI chạy lệnh hook tại các điểm cố định và chờ chúng chạy xong. Có hai sự kiện quan trọng ở đây:

  • Notification kích hoạt khi CLI phát ra một cảnh báo hệ thống. Hiện tại loại duy nhất là ToolPermission (một công cụ đang chờ bạn phê duyệt). Hook này không thể phê duyệt hay chặn bất cứ thứ gì; nó chỉ mang tính thông tin.
  • AfterAgent kích hoạt một lần mỗi lượt, sau phản hồi cuối cùng của mô hình. Chính trang thực hành tốt nhất của Gemini khuyến nghị dùng nó khi “you only need to check the final completion” (bạn chỉ cần kiểm tra lần hoàn tất cuối cùng).

Hook được bật theo mặc định (hooksConfig.enabled). Một hook in đúng một đối tượng JSON ra stdout và không gì khác ({} là được khi bạn không có gì để nói). Mã thoát 0 nghĩa là thành công; 2 sẽ chặn (và chỉ có ý nghĩa với các sự kiện có thể chặn); mọi mã khác là cảnh báo và CLI vẫn tiếp tục. Timeout mặc định là 60 giây (timeout tính bằng mili giây).

Windows (PowerShell)

Trên Windows, Gemini CLI chạy lệnh hook bằng pwsh -NoProfile -Command, hoặc powershell.exe nếu chưa cài PowerShell 7. Hãy lưu script này thành %USERPROFILE%\.gemini\hooks\ding.ps1:

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

Sau đó trỏ cả hai sự kiện tới nó:

~/.gemini/settings.jsonSao chép
{
"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 giúp tránh lỗi phổ biến nhất: PowerShell từ chối chạy script. Tài liệu của Gemini đề xuất Set-ExecutionPolicy RemoteSigned -Scope CurrentUser làm cách khắc phục lâu dài.

macOS và Linux

Trên các hệ thống khác, hook chạy bằng bash -c. Một script một dòng là đủ:

~/.gemini/hooks/ding.shSao chép
#!/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 '{}'

Cấp quyền thực thi cho nó (chmod +x ~/.gemini/hooks/ding.sh) và dùng "command": "$HOME/.gemini/hooks/ding.sh" trong cùng hai sự kiện đó.

Muốn hai âm thanh khác nhau, một cho “cần phê duyệt” và một cho “đã xong”? Hãy tạo hai script. Hook cũng có thể đọc sự kiện từ stdin: đầu vào của Notification mang notification_type, message và details, nên bạn có thể hiển thị đúng yêu cầu thực tế trong cửa sổ bật lên.

Vì sao hook của bạn không chạy

  1. Kiểm tra /hooks panel. Lệnh này liệt kê mọi hook mà Gemini CLI đã nạp. /hooks enable-all bật lại chúng nếu chúng đã bị tắt.
  2. Thư mục chưa được tin cậy. Trong thư mục chưa được tin cậy, Gemini CLI bỏ qua tệp .gemini/settings.json của dự án, nên hook dự án không được nạp. Hãy đặt hook thông báo trong cài đặt người dùng (~/.gemini/settings.json) để chúng hoạt động ở mọi nơi.
  3. Hook bị thay đổi được tính là hook mới. Gemini CLI tạo dấu vân tay cho hook dự án; nếu tên hoặc lệnh của một hook thay đổi, nó sẽ được coi là một hook mới, chưa được tin cậy.
  4. Có thứ khác trên stdout. Một lệnh echo lạc chỗ hoặc một cảnh báo PowerShell nằm trước JSON sẽ làm hỏng việc phân tích cú pháp. Hãy gửi log ra stderr.
  5. Matcher. Với Notification và AfterAgent, hãy dùng "*" (hoặc chuỗi rỗng) để khớp mọi thứ. Các sự kiện vòng đời dùng matcher khớp chuỗi chính xác, còn sự kiện công cụ dùng biểu thức chính quy.

Hoặc giảm số lần bị hỏi

Thông báo giúp bạn trả lời nhanh hơn; bạn cũng có thể giảm số lần Gemini CLI cần đến bạn. general.defaultApprovalMode có thể là default (hỏi), auto_edit (chỉnh sửa được phê duyệt, mọi thứ khác vẫn hỏi) hoặc plan (chỉ đọc). Shift+Tab chuyển vòng giữa các chế độ này. tools.allowed liệt kê các công cụ được bỏ qua hộp thoại xác nhận (ví dụ run_shell_command(git)), còn tools.confirmationRequired liệt kê các công cụ luôn phải hỏi.

Chế độ YOLO (--yolo, hoặc Ctrl+Y) phê duyệt mọi thứ và bật sandbox theo mặc định. Chế độ này chỉ có thể bật từ dòng lệnh, và security.disableYoloMode tắt nó vĩnh viễn nếu bạn dùng chung máy với người khác.

Vai trò của Pet Island

Một tiếng bíp cho bạn biết có chuyện gì đó xảy ra; nó không cho bạn biết terminal nào, hay Gemini muốn chạy gì. Pet Island đưa Gemini CLI lên một island nhỏ ở phía trên màn hình bên cạnh các agent khác của bạn: bạn thấy khi nào nó đang làm việc, khi nào nó đang chờ bạn xác nhận và khi nào nó đã xong, với một cú nhấp để chuyển tới đúng terminal.

Với Gemini CLI, bản thân việc xác nhận vẫn diễn ra trong Gemini. Pet Island hiển thị yêu cầu và đưa bạn tới đó, nhưng không phê duyệt công cụ của Gemini thay bạn. (Ngược lại, yêu cầu từ Claude Code và Codex có thể được trả lời ngay trên island.)

Câu hỏi thường gặp

Gemini CLI có thông báo không?

Có, dưới dạng một tính năng thử nghiệm tắt theo mặc định. Đặt general.enableNotifications thành true trong ~/.gemini/settings.json, hoặc dùng /settings → General → Enable Notifications.

Vì sao Gemini CLI chỉ phát tiếng bíp trên Windows?

Ở chế độ auto, mã nguồn của Gemini CLI chỉ gửi chuông terminal tới Windows Terminal và terminal của VS Code. Thiết lập bellStyle của Windows Terminal quyết định chuông đó phát âm thanh, làm nhấp nháy taskbar, hay cả hai.

Hook của Gemini CLI có thể tự động phê duyệt một công cụ không?

Hook Notification thì không. Tài liệu nói rằng nó không thể chặn cảnh báo hay cấp quyền. Thay vào đó, hãy dùng tools.allowed hoặc policy engine để phê duyệt trước các công cụ.

Hook nào kích hoạt khi Gemini CLI xong việc?

AfterAgent. Nó kích hoạt một lần mỗi lượt, sau phản hồi cuối cùng của mô hình.

Tôi nên đặt hook ở đâu để chúng hoạt động trong mọi dự án?

Trong cài đặt người dùng của bạn, ~/.gemini/settings.json. Cài đặt dự án bị bỏ qua trong các thư mục chưa được tin cậy.

Nguồn

Mọi thiết lập và hành vi trên trang này đã được đối chiếu với các trang sau vào 26 tháng 10 năm 2026. Agent thay đổi rất nhanh; nếu có điều gì không còn khớp, trang chính thức là chuẩn.

ĐỌC TIẾP

Trả lời mọi agent ngay từ phía trên màn hình.

Windows và Mac · Miễn phí 7 ngày, sau đó $8.99 trả một lần · $1 từ mỗi lượt mua dùng để nuôi động vật đường phố

Dùng thử Pet Island miễn phí