การแจ้งเตือนของ Claude Code: ได้ยินว่าเมื่อไรกำลังรอ และเมื่อไรทำเสร็จแล้ว
“เซสชันที่ติดอยู่ดูเหมือนเซสชันที่ทำเสร็จแล้วทุกประการ ฉันเลยเปิดผิดอันก่อน” ประโยคนี้จากคำขอฟีเจอร์ของ Claude Code สรุปปัญหาได้ครบ นี่คือวิธีได้สัญญาณที่ต่างกันสำหรับแต่ละกรณี
คำตอบสั้น ๆ
Claude Code ส่งการแจ้งเตือนอยู่แล้วเมื่อทำเสร็จหรือรอสิทธิ์ขณะที่คุณไม่อยู่ แต่มีแค่ Ghostty, Kitty และ iTerm2 ที่แสดงเป็นการแจ้งเตือนบนเดสก์ท็อปโดยค่าเริ่มต้น ที่อื่นให้ตั้ง "preferredNotifChannel": "terminal_bell" หากต้องการเสียงสองแบบ ให้ใช้ hook Notification ที่มี matcher permission_prompt สำหรับ “ต้องการคุณ” และ hook Stop สำหรับ “เสร็จแล้ว”
สิ่งที่ Claude Code ทำได้เอง
เมื่อ Claude ทำงานเสร็จหรือหยุดรอพรอมต์ขอสิทธิ์ และดูเหมือนคุณไม่ได้อยู่ที่เทอร์มินัล มันจะส่ง event การแจ้งเตือน โดยค่าเริ่มต้นจะแปลงเป็นการแจ้งเตือนบนเดสก์ท็อปเฉพาะใน Ghostty, Kitty และ iTerm2 ใน Windows Terminal, เทอร์มินัลของ VS Code, Warp และที่เหลือ จะไม่มีอะไรให้เห็นจนกว่าคุณจะตั้งค่า
วิธีแก้ที่ง่ายที่สุดคือกระดิ่งเทอร์มินัล:
กระดิ่งจะทำอะไรขึ้นอยู่กับเทอร์มินัลของคุณ ใน Windows Terminal การตั้งค่า bellStyle เป็นได้ทั้ง audible (ค่าเริ่มต้น), window, taskbar, all หรือ none เมื่อตั้งเป็น all Windows Terminal จะเล่นเสียงและทำให้ไอคอนบนแถบงานกะพริบ
- iTerm2: Settings → Profiles → Terminal → เลือก “Notification Center Alerts” จากนั้น Filter Alerts → เปิด “Send escape sequence-generated alerts”
- tmux: เพิ่ม
set -g allow-passthrough onลงใน~/.tmux.confไม่อย่างนั้นการแจ้งเตือนจะไปไม่ถึงเทอร์มินัลชั้นนอก - ผ่าน SSH: การแจ้งเตือนบนเดสก์ท็อปจะเดินทางกลับมาที่เครื่องของคุณ เซสชันระยะไกลจึงยังแจ้งเตือนคุณได้
คำขอฟีเจอร์การแจ้งเตือนของระบบ (#26581 34 โหวต) ถูกปิดไปโดยระบุว่ามีอยู่แล้ว ซึ่งหมายถึงการแจ้งเตือนในตัวนี้เอง ส่วนคำขอสัญญาณที่ต่างกันระหว่าง “กำลังรอ” กับ “เสร็จแล้ว” (#94373) ยังเปิดอยู่ ตรงนี้เองที่ hook เข้ามามีบทบาท
สอง event: Notification และ Stop
Notificationทำงานเมื่อ Claude Code ส่งการแจ้งเตือน matcher ของมันคือประเภทการแจ้งเตือน สองประเภทที่คุณสนใจคือpermission_prompt(Claude ต้องการให้คุณอนุมัติการใช้เครื่องมือ และพรอมต์รอมาประมาณหกวินาทีแล้ว) และidle_prompt(Claude ตอบเสร็จไปประมาณ 60 วินาทีแล้ว และคุณยังไม่ได้พิมพ์อะไรตั้งแต่นั้น)Stopทำงานทุกครั้งที่ Claude ตอบเสร็จ จะไม่ทำงานเมื่อคุณขัดจังหวะ ส่วนข้อผิดพลาดของ API จะทำให้StopFailureทำงานแทน
hook ทำงานควบคู่กับการแจ้งเตือนในตัว ไม่ได้มาแทนที่ คุณจึงเก็บไว้ทั้งสองอย่างได้
Windows: เสียงสองแบบ
บน Windows hook รันใน Git Bash หรือ PowerShell เมื่อไม่ได้ติดตั้ง Git Bash การตั้ง "shell": "powershell" ช่วยให้ไม่ต้องเดา การกำหนดค่านี้จะเล่นเสียงบี๊บสูงสองครั้งเมื่อ Claude ต้องการสิทธิ์ และบี๊บต่ำเมื่อทำเสร็จ:
Console.Beep รับความถี่เป็นเฮิรตซ์และระยะเวลาเป็นมิลลิวินาที และรอจนเสียงบี๊บจบ คู่มือ hook ของ Anthropic ยังแสดงตัวอย่างบน Windows ที่เปิดกล่องข้อความด้วย System.Windows.Forms โดยหมายเหตุของพวกเขาเองบอกว่ามันเป็นกล่องโต้ตอบ ไม่ใช่การแจ้งเตือน และอาจเปิดขึ้นหลังเทอร์มินัลของคุณ
macOS และ Linux
เอกสารของ Anthropic ใช้ afplay บน macOS:
สำหรับการแจ้งเตือนที่มองเห็นได้ ใช้ osascript -e 'display notification "Claude needs you" with title "Claude Code"' บน macOS หรือ notify-send "Claude Code" "Claude needs you" บน Linux
รายละเอียดที่ช่วยประหยัดเวลาคุณได้ทั้งคืน
- Stop ทำงานบ่อยมาก มันทำงานทุกครั้งที่ Claude ตอบเสร็จ ไม่ใช่แค่เมื่อทั้งงานเสร็จ หากรบกวนเกินไป ให้ใช้การแจ้งเตือน
idle_promptแทน ซึ่งจะรอประมาณหนึ่งนาทีและทำงานเฉพาะเมื่อคุณยังไม่ได้พิมพ์ - อ่าน event หากจำเป็น อินพุตของ Notification มี
message,titleและnotification_typeสคริปต์จึงแสดงคำขอจริงได้ - มุมมองเอเจนต์ (Agent view) หากคุณรันเซสชันเบื้องหลังด้วย
claude agentsมันจะแจ้งคุณผ่านpreferredNotifChannelช่องเดียวกันเมื่อเซสชันเริ่มต้องการอินพุต ทำเสร็จ หรือล้มเหลว และทำให้ hook Notification ทำงานด้วยประเภทagent_needs_inputหรือagent_completed - สถานะในเทอร์มินัล เทอร์มินัลที่รองรับโปรโตคอลสถานะ OSC 7501 สามารถแสดงได้ว่าแต่ละเซสชันของ Claude Code กำลังทำงาน กำลังรอ หรือเสร็จแล้ว Claude Code v2.1.295 ขึ้นไปรายงานสถานะนี้โดยอัตโนมัติ
- hook ไม่ทำงานบน Windows? ดู hook ของ Claude Code ไม่ทำงานบน Windows สาเหตุแทบทุกครั้งคือเชลล์
รู้ว่าเป็นเซสชันไหน และตอบได้ทันที
เสียงบอกคุณว่ามีบางอย่างเกิดขึ้น แต่ไม่ได้บอกว่ามาจากเทอร์มินัลไหนในสามอันของคุณ หรือ Claude ต้องการรันอะไร Pet Island ให้ทุกเซสชันของ Claude Code มีที่ของตัวเองบนเกาะเล็ก ๆ ที่ด้านบนของหน้าจอ: กำลังทำงาน รอคุณอยู่ หรือเสร็จแล้ว คำขอสิทธิ์จะมาพร้อมคำสั่งหรือ diff และคุณอนุญาตหรือปฏิเสธได้ตรงนั้นเลย คำถามและแผนก็ทำงานแบบเดียวกัน คลิกเดียวก็กระโดดไปยังเทอร์มินัลที่ถูกต้องเมื่อคุณอยากดูให้ละเอียดขึ้น
คำถามที่พบบ่อย
Claude Code มีการแจ้งเตือนไหม?
มี เมื่อทำเสร็จหรือรอสิทธิ์ขณะที่คุณไม่อยู่ มันจะส่งการแจ้งเตือน Ghostty, Kitty และ iTerm2 แสดงเป็นการแจ้งเตือนบนเดสก์ท็อปโดยค่าเริ่มต้น ในเทอร์มินัลอื่นให้ตั้ง preferredNotifChannel เป็น "terminal_bell" หรือเพิ่ม hook Notification
จะให้มีเสียงเมื่อ Claude Code ทำเสร็จได้อย่างไร?
เพิ่ม hook Stop ที่เล่นเสียง เช่น afplay บน macOS หรือ [Console]::Beep ใน PowerShell บน Windows
จะแยก “ต้องการสิทธิ์” ออกจาก “เสร็จแล้ว” ได้อย่างไร?
ใช้ hook Notification ที่มี matcher permission_prompt สำหรับเสียงหนึ่ง และ hook Stop สำหรับอีกเสียงหนึ่ง
ทำไมฉันไม่ได้รับการแจ้งเตือนใน Windows Terminal หรือ VS Code?
Claude Code ส่งการแจ้งเตือนบนเดสก์ท็อปโดยค่าเริ่มต้นเฉพาะใน Ghostty, Kitty และ iTerm2 ตั้ง preferredNotifChannel เป็น "terminal_bell" หรือใช้ hook
การแจ้งเตือนทำงานภายใน tmux ไหม?
ทำงาน หลังจากคุณเพิ่ม set -g allow-passthrough on ลงใน ~/.tmux.conf
แหล่งข้อมูล
การตั้งค่าและพฤติกรรมทุกอย่างในหน้านี้ได้รับการตรวจสอบกับหน้าเหล่านี้เมื่อวันที่ 26 ตุลาคม 2026 เอเจนต์เปลี่ยนแปลงเร็ว หากมีอะไรไม่ตรงกันแล้ว ให้ยึดหน้าทางการเป็นหลัก
- เอกสาร Claude Code: Configure your terminal (การแจ้งเตือน)
- เอกสาร Claude Code: Hooks guide
- เอกสาร Claude Code: Hooks reference
- เอกสาร Claude Code: Agent view
- Issue #26581: System notifications when Claude needs attention
- Issue #94373: Notify differently for waiting vs finished
- Issue #2427: Audio notification on task completion
- Microsoft Learn: การตั้งค่าโปรไฟล์ Windows Terminal (bellStyle)
- Microsoft Learn: Console.Beep