claude-code-notifier
cách hoạt động hướng dẫn câu hỏi thường gặp
◐Tiếng Việt
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
Bắt đầu
Tất cả hướng dẫn

Claude Code trong tmux hoặc screen: nhận thông báo từ phiên đã detach

Cập nhật ngày 31 tháng 10 năm 2026 · 6 phút đọc
trong trang này 01Khi attach: cho thông báo đi qua tmux 02Đang attach nhưng ở window khác: dùng bell 03Cho biết phiên nào đang cần bạn 04Khi detach: bạn cần push 05Claude Code Notifier nằm ở đâu trong bức tranh này 06GNU screen 07Câu hỏi thường gặp

Bên trong tmux, thông báo desktop của Claude Code sẽ không bao giờ đến được terminal bên ngoài cho tới khi bạn thêm set -g allow-passthrough on vào ~/.tmux.conf. Cách này giải quyết vấn đề khi bạn đang attach. Khi đã detach, không còn terminal nào hiển thị phiên đó nên không gì trên màn hình có thể báo cho bạn, nhưng Claude Code vẫn chạy và hook vẫn được kích hoạt. Để nhận tin từ phiên đã detach, hãy dùng hook gửi push qua mạng, tới điện thoại hoặc ứng dụng chat, thay vì hook phụ thuộc vào terminal.

01Khi attach: cho thông báo đi qua tmux

tmux nằm giữa Claude Code và terminal của bạn, và mặc định sẽ nuốt mất các escape sequence mà Claude Code dùng cho thông báo desktop. Hướng dẫn terminal của Anthropic đưa ra đoạn cấu hình sau cho ~/.tmux.conf:

set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

Áp dụng cho server đang chạy:

tmux source-file ~/.tmux.conf

allow-passthrough cho phép thông báo và cập nhật tiến độ đến được terminal bên ngoài. Các dòng còn lại sửa Shift+Enter để xuống dòng. Sau khi cấu hình, những terminal hiển thị thông báo của Claude Code bên ngoài tmux (Ghostty, Kitty, và iTerm2 khi đã bật cảnh báo) cũng sẽ hiển thị chúng bên trong tmux.

Điều tương tự áp dụng cho các hook trả về terminalSequence. Tài liệu tham khảo hook của Anthropic cho biết Claude Code tự ghi các sequence này, nên chúng hoạt động được trong tmux và GNU screen. Các hướng dẫn cho macOS, Linux và SSH có ví dụ cụ thể.

02Đang attach nhưng ở window khác: dùng bell

Nếu Claude Code chạy ở một window tmux còn bạn làm việc ở window khác, bell là tín hiệu đơn giản. Hãy bảo Claude Code luôn gửi bell:

{
  "preferredNotifChannel": "terminal_bell"
}

Sau đó cấu hình tmux phản hồi lại, trong ~/.tmux.conf:

setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off

monitor-bell (bật mặc định) đánh dấu window vừa rung bell, và tmux hiển thị ! cho window đó trên thanh trạng thái. bell-action other chuyển bell từ các window khác window bạn đang xem sang terminal, để terminal có thể kêu bíp hoặc nhảy icon. Dùng any để tính cả window hiện tại. Đặt visual-bell thành on sẽ hiện thông báo trong tmux thay vì chuyển bell đi.

03Cho biết phiên nào đang cần bạn

Khi chạy nhiều phiên cùng lúc, một thông báo chỉ ghi "Claude cần bạn" thì chẳng giúp được mấy. Hook chạy trong môi trường của pane, nên nó có thể hỏi tmux tên session và window. Ví dụ trên Linux sau hiển thị chúng trong thông báo desktop:

#!/bin/bash
msg=$(jq -r '.message // "Claude Code needs your attention"')
where=""
if [ -n "$TMUX_PANE" ]; then
  where=$(tmux display-message -p -t "$TMUX_PANE" '#S:#W')
fi
notify-send "Claude Code ${where}" "$msg"

Lưu file thành ~/.claude/hooks/notify-tmux.sh, chạy chmod +x cho nó và dùng làm lệnh cho hook Notification hoặc Stop. #S là tên session và #W là tên window; đặt tên session bằng tmux new -s api-refactor và thông báo sẽ cho bạn biết cần đến đâu. Thay notify-send bằng lệnh tương ứng trên nền tảng của bạn, hoặc bằng push. Hướng dẫn nhiều phiên có thêm cách phân biệt các phiên.

04Khi detach: bạn cần push

Detach là mục đích chính của tmux: bạn khởi động một tác vụ dài, detach rồi đi. Claude Code vẫn tiếp tục làm việc trong phiên đã detach. Nhưng lúc này không còn terminal nào để hiển thị escape sequence hay bell, và nếu tmux server được khởi động qua SSH thì lệnh thông báo desktop cũng có thể không có chỗ nào để hiện.

Hook gửi request qua mạng thì không quan tâm có ai đang attach hay không. Dịch vụ push nào cũng được. Hướng dẫn ntfy và hướng dẫn Telegram, Slack và Discord có sẵn hook để bạn dán vào. Các cách này chỉ báo cho bạn biết có chuyện xảy ra; chúng không thể trả lời Claude, nên prompt xin quyền vẫn phải chờ đến khi bạn attach lại bằng tmux attach -t api-refactor.

05Claude Code Notifier nằm ở đâu trong bức tranh này

Claude Code Notifier là công cụ độc lập (do TouchTap phát triển, không phải Anthropic) được xây dựng trên hook của Claude Code. Công cụ dòng lệnh miễn phí của nó, ccn, chạy trên Mac, Windows và Linux. Vì nó gắn vào Claude Code chứ không gắn vào terminal, nó hoạt động như nhau trong tmux, screen hay shell thông thường, dù attach hay detach:

curl -fsSL https://claudecodenotifier.com/install.sh | sh

Trên máy desktop, nó hiển thị thông báo desktop khi Claude làm xong, cần cấp quyền hoặc đặt câu hỏi. Ghép nối điện thoại và các sự kiện đó sẽ đến dưới dạng push notification qua relay mã hóa của TouchTap, từ bất kỳ máy nào chạy ccn, kể cả server bạn truy cập qua SSH.

Điện thoại lấp đầy khoảng trống mà phiên detach để lại. Khi có yêu cầu cấp quyền, bạn có thể cho phép một lần, cho phép trong cả phiên hoặc từ chối ngay trên điện thoại, và Claude tiếp tục làm việc mà bạn không cần attach lại. Bạn có thể chọn câu trả lời khi Claude đặt câu hỏi, và gửi chỉ dẫn tiếp theo ngay khi Claude làm xong. Nếu bạn vừa gõ phím trong 30 giây gần nhất, sẽ không có gì chờ điện thoại và terminal hỏi như bình thường. Nếu bạn vắng mặt, terminal sẽ chờ câu trả lời từ điện thoại, tối đa đến mức bạn chọn (hold_ceiling_seconds), và dừng chờ ngay khi bạn chạm vào bàn phím.

Xem ghép nối điện thoại, rời máy khi chạy tác vụ dài và trang ccn. Ứng dụng điện thoại cần gói đăng ký hoặc mua trọn đời; xem bảng giá.

06GNU screen

Về chuyện này, screen hoạt động khá giống tmux. Tài liệu tham khảo hook của Anthropic cho biết output terminalSequence của hook hoạt động trong screen, và screen hiển thị thông báo khi một window bạn không xem rung bell. Phiên screen đã detach cũng gặp vấn đề giống tmux đã detach: không có gì trên màn hình, nên hãy dùng push.

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

Tại sao thông báo của Claude Code không hiện trong tmux?

tmux chặn các escape sequence mà Claude Code dùng, trừ khi bật passthrough. Thêm set -g allow-passthrough on vào ~/.tmux.conf rồi chạy tmux source-file ~/.tmux.conf.

Claude Code có tiếp tục chạy khi tôi detach khỏi tmux không?

Có. Tiến trình vẫn chạy trong tmux server và các hook vẫn được kích hoạt. Chỉ những thông báo cần terminal đang attach mới không đến được bạn.

Làm sao để nhận thông báo từ một session tmux đã detach?

Dùng hook gửi push qua mạng, chẳng hạn ntfy, webhook của ứng dụng chat hoặc ứng dụng điện thoại của Claude Code Notifier. Escape sequence và tiếng bell của terminal đều cần một client đang attach.

Tôi có thể duyệt quyền mà không cần attach lại không?

Với dịch vụ push thông thường thì không. Với Claude Code Notifier và một điện thoại đã ghép nối, bạn có thể cho phép hoặc từ chối yêu cầu ngay trên điện thoại và session đã detach sẽ tiếp tục chạy.

Làm sao biết session tmux nào đang cần mình?

Đặt tên cho các session và đưa tên đó vào thông báo. Hook có thể đọc tên bằng tmux display-message -p -t "$TMUX_PANE" '#S:#W'.

Claude Code Notifier Nhận push trên điện thoại khi Claude Code chạy xong hoặc cần bạn, rồi duyệt, từ chối hoặc trả lời ngay tại đó. Công cụ dòng lệnh ccn miễn phí trên Mac, Windows và Linux.
Tải cho iOS Tải cho Android Cài đặt ccn

Hướng dẫn liên quan

  • Thông báo từ Claude Code trên server từ xa qua SSHChạy Claude Code trên VPS hoặc server từ xa qua SSH mà vẫn nhận được thông báo: dùng terminal escape sequence truyền qua SSH, hoặc push lên điện thoại bằng ccn.
  • Chạy nhiều session Claude Code: biết session nào đang cần bạnĐang chạy song song nhiều session hoặc worktree Claude Code? Hãy đặt tên cho chúng, đưa tên project vào mọi thông báo, và gửi mỗi yêu cầu về đúng session.
  • Để Claude Code tự chạy rồi rời máy: một quy trìnhQuy trình thực tế cho các tác vụ dài với Claude Code: giữ máy không ngủ, bớt các prompt không cần thiết, nhận thông báo trên điện thoại và trả lời ngay từ đó.
  • Thông báo tích hợp sẵn của Claude Code: terminal bell và preferredNotifChannelCách hoạt động của cảnh báo tích hợp sẵn trong Claude Code, ý nghĩa từng giá trị preferredNotifChannel, và cách thiết lập cho iTerm2, Apple Terminal, Kitty, Ghostty và tmux.
claude-code-notifier

Claude Code Notifier là ứng dụng độc lập của bên thứ ba. Ứng dụng không liên kết với, không được chứng thực hay tài trợ bởi Anthropic, PBC. "Claude" và "Claude Code" là nhãn hiệu của Anthropic, PBC.

ứng dụng Ứng dụng iOS Ứng dụng Android ccn cho macOS, Windows & Linux Tất cả hướng dẫn
pháp lý Chính sách quyền riêng tư Điều khoản dịch vụ Ngôn ngữ khác © 2026 touchtap. Bảo lưu mọi quyền. TouchTap Ltd được đăng ký tại Anh và xứ Wales, số công ty 13942589.