claude-code-notifier
運作方式 指南 常見問題
◐繁體中文
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
開始使用
所有指南

Claude Code 通知沒反應?檢查清單

更新於 2026年10月31日 · 閱讀時間 7 分鐘
本頁內容 011. 確認 Claude Code 已載入 hook 022. 接受工作區信任 033. 確認事件在你預期的時間點觸發 044. 自己執行 hook 指令 055. 查看除錯記錄檔 066. 檢查作業系統 07如果你使用 Claude Code Notifier 08常見問題

Claude Code 通知失效時,原因幾乎都是以下四種之一:hook 沒有載入、hook 有執行但失敗、你依賴的事件沒有在預期的時間點觸發,或是作業系統把通知藏起來了。在 Claude Code 中執行 /hooks 查看已載入的項目,用 claude --debug 啟動工作階段查看每個 hook 實際做了什麼,最後再檢查電腦或手機上的通知設定。如果你使用 Claude Code Notifier,ccn doctor 和 ccn test 這兩個指令就能涵蓋大部分檢查。

以下清單依原因的常見程度由高到低排列,適用於 Mac、Windows 和 Linux。

011. 確認 Claude Code 已載入 hook

在 Claude Code 的 prompt 輸入 /hooks。這是一個唯讀的瀏覽介面,會列出 Claude Code 載入的所有 hook,並標示各自的來源:使用者設定、專案設定、本機設定、外掛或目前的工作階段。選取某個 hook 即可看到確切的指令及定義它的檔案。

如果清單中沒有你的 hook:

  • JSON 格式錯誤。設定檔必須是嚴格的 JSON。結尾多一個逗號或加上 // 註解都會讓檔案失效,Claude Code 會在下次啟動時顯示 Settings Error。執行 claude doctor 可查看被 Claude Code 拒絕的項目。
  • 檔案放錯位置。個人 hook 放在 ~/.claude/settings.json(Windows 上是 %USERPROFILE%\.claude\settings.json)。專案 hook 放在專案內的 .claude/settings.json。執行 /status 並查看 Setting sources 這一行,就能知道載入了哪些檔案。
  • 事件名稱錯誤。事件名稱區分大小寫:Notification、Stop、PermissionRequest。無法辨識的事件名稱會顯示 Settings Warning 並被略過。
  • hook 被關閉了。任何設定檔中只要有 "disableAllHooks": true,所有 hook 都會停用。如果 /hooks 顯示 Only hooks from managed settings run here,表示你的組織設定了 allowManagedHooksOnly,你自己的 hook 不會執行。
  • 修改沒有被讀到。Claude Code 通常會自動重新載入設定。如果幾秒後 hook 仍未出現,請重新啟動工作階段。

022. 接受工作區信任

在互動式工作階段中,Claude Code 會暫緩執行所有設定檔中的 hook(包括你自己的 ~/.claude/settings.json),直到你接受該資料夾的工作區信任對話框為止。如果你關掉了這個對話框,或是所在資料夾從未開啟過 Claude Code,hook 就不會在那裡執行。請在該資料夾中啟動 claude 並接受對話框。

033. 確認事件在你預期的時間點觸發

許多「壞掉」的通知其實只是時機問題。根據 Anthropic 的 hooks 參考文件:

Hook觸發時機
Notification 搭配 permission_prompt權限提示已等待約六秒且你沒有輸入任何內容。每次按鍵都會重設計時。
Notification 搭配 idle_promptClaude 完成後約 60 秒,且你沒有輸入、也沒有背景 agent 仍在執行時。
Stop每次 Claude 完成回應時。中斷時不會觸發。API 錯誤則會改為觸發 StopFailure。
PermissionRequestClaude Code 即將向你請求權限的那一刻。

所以如果你一邊在 terminal 打字一邊測試 Notification hook,它可能永遠不會觸發。請切換到其他視窗並稍候。若想在回合結束的瞬間收到提醒,請使用 Stop;詳見 Stop hook 指南。

也請檢查你的權限模式。較新版本的 Claude Code 會以 auto 模式啟動互動式工作階段,由分類器自動核准大部分動作而不詢問。沒有提示,就不會有 permission_prompt 通知,也不會觸發 PermissionRequest hook。要測試權限提醒,請按 Shift+Tab 直到狀態列顯示 manual 模式,再請 Claude 做一件需要核准的事。詳情請參閱權限模式說明。

matcher 同樣區分大小寫。PermissionRequest 的 matcher 若寫成 bash,就不會比對到 Bash 工具。

044. 自己執行 hook 指令

從 /hooks 複製指令,並在 terminal 中搭配範例輸入執行:

echo '{"hook_event_name":"Stop","cwd":"/tmp","last_assistant_message":"done"}' | ./my-hook.sh
echo $?

常見的失敗原因:

  • command not found:請使用腳本的絕對路徑,專案內的腳本則使用 ${CLAUDE_PROJECT_DIR}。
  • 腳本完全沒有動作:用 chmod +x ./my-hook.sh 讓它可執行。
  • jq: command not found:安裝 jq,或改用 Python 或 Node.js 解析 JSON。

055. 查看除錯記錄檔

用 claude --debug 啟動 Claude Code。terminal 不會多印任何東西,記錄會寫入 ~/.claude/debug/<session-id>.txt。若要自訂路徑,請使用 claude --debug-file /tmp/claude.log,並在另一個 terminal 執行 tail -f /tmp/claude.log。如果工作階段已在執行,/debug 會開啟記錄並告訴你記錄檔的位置。

找出以 Hooks: 開頭的行。每一行都會列出事件、指令、結束方式(finished with status 0、timed out、failed to start)以及耗時。若需要更詳細的比對資訊,請設定 CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose。

有兩種問題只會在這裡現形:

  • shell 設定檔印出了內容。如果 ~/.bashrc 或 ~/.zshrc 執行了 echo,而 shell 又載入了它,這段文字就會出現在 hook 的 JSON 輸出前面,導致 Claude Code 把輸出當成純文字。請在記錄中搜尋 Hook output does not start with {。將設定檔中的輸出包在 if [[ $- == *i* ]]; then ... fi 裡,讓它只在互動式 shell 中執行。
  • 沒有可寫入的 terminal。在 Mac 和 Linux 上,command hook 執行時沒有控制 terminal。試圖響鈴或將跳脫碼寫入 /dev/tty 的 hook 會默默失敗。請改用桌面通知指令,或使用 Claude Code 本身的 preferredNotifChannel 設定,詳見 terminal 響鈴指南。

066. 檢查作業系統

如果 debug log 顯示 hook 以狀態 0 結束,卻還是沒看到任何通知,那就是作業系統把它隱藏了。請確認發出通知的 app 有權限顯示通知,並確認專注模式(Mac)、勿擾模式(Windows)或 Linux 桌面的勿擾開關已關閉。在 Linux 上,還必須有 notification daemon 在執行。

各平台的指令請參考 macOS、Windows 和 Linux 的指南。

07如果你使用 Claude Code Notifier

Claude Code Notifier 是一款獨立工具(並非 Anthropic 出品),會把一個小程式 ccn 安裝為 Claude Code 的 hook。上述內容同樣適用,因為 ccn 就跟其他 hook 一樣。請先從它內建的檢查開始:

  1. ccn doctor 會檢查 hook、憑證、與伺服器的連線以及在場偵測。請先修正它回報的任何問題。
  2. ccn test 會送出一則測試通知。如果收得到,問題就出在事件或設定,而不是傳送流程。
  3. ccn devices 會列出與這台電腦配對的手機。如果沒有列出任何裝置,請用 ccn pair 重新配對;配對指南有完整步驟。
  4. ccn config show 會印出目前生效的設定。請確認 notify_on_done、notify_on_permission 和 notify_on_question 都已開啟,且 quiet_hours 沒有涵蓋目前的時間。在手機上變更的設定,可透過 ccn sync 同步到電腦。

有些行為看起來像故障,其實是刻意設計的:

  • 你正在鍵盤前。如果你在過去 30 秒內有打字,就不會等待手機回應,terminal 會照常詢問。開啟 quiet_when_present(預設值)時,當你在 Claude 執行的 terminal 前,手機不會收到任何通知;若你正在使用其他 app,手機則會收到一張資訊卡片。
  • Mac 上通知重複或遺漏。請勿在同一台 Mac 上同時執行舊版 Mac 選單列 app 和 ccn。
  • 長時間未使用。如果手機或電腦 60 天未使用,伺服器會刪除其配對,你就需要重新配對。

在手機上,請確認該 app 已允許通知,且專注模式(iPhone)或勿擾模式(Android)沒有讓它靜音。在 Android 上,電池最佳化可能會延遲部分 app 的通知;如果通知來得晚,請在電池設定中允許該 app 不受限制地執行。如果你手動編輯過 settings.json,ccn doctor 會告訴你它的 hook 是否還在。ccn upgrade 可更新到最新版本。

08常見問題

為什麼我的 Notification hook 只是偶爾觸發?

permission_prompt 和 idle_prompt 類型會在你看似離開時才觸發。permission_prompt 會等待約六秒沒有輸入,idle_prompt 則是在 Claude 完成後約 60 秒。如果你正在打字,它們會延後觸發。若需要即時訊號,請使用 PermissionRequest 或 Stop。

Claude Code 的 debug log 在哪裡?

執行 claude --debug,log 會寫入 ~/.claude/debug/<session-id>.txt。可用 claude --debug-file <path> 指定位置,或在執行中的 session 裡使用 /debug。

ccn test 正常,但收不到真正的通知,為什麼?

傳送流程沒問題,所以請檢查設定和時機。用 ccn config show 檢查 notify_on_* 和 quiet_hours;記得開啟 quiet_when_present 時,你在 terminal 前就不會發送任何通知;另外也請檢查 Claude Code 的權限模式。

Claude Code Notifier Claude Code 完成或需要你處理時,手機會收到 push 通知,並可直接在手機上核准、拒絕或回覆。ccn 命令列工具在 Mac、Windows 和 Linux 上皆可免費使用。
下載 iOS 版 下載 Android 版 安裝 ccn

相關指南

  • Claude Code hook 完整解析:每個事件及其用途介紹 Claude Code hook 是什麼、要寫在 settings.json 的哪裡、matcher、輸入與 exit code 如何運作,以及每個 hook 事件的用途。
  • Claude Code 的 Notification hook:觸發時機與使用方式Claude Code 的 Notification hook 何時觸發、permission_prompt 和 idle_prompt 代表什麼、它收到的輸入,以及為何會延遲觸發。
  • 將手機連接到 Mac、Windows 或 Linux 上的 Claude Code一分鐘內將手機與 Claude Code 配對:安裝 ccn,再掃描 QR code 或輸入 6 位數代碼。附 Mac、Windows 與 Linux 的步驟。
  • Claude Code 通知的安靜時段與勿擾模式在夜間或開會時停止 Claude Code 通知:hook 中的安靜時段、手機的專注模式與勿擾模式,以及 ccn 的 quiet_hours。
claude-code-notifier

Claude Code Notifier 為獨立的第三方應用程式,與 Anthropic, PBC 並無關聯,亦未獲其背書或贊助。「Claude」及「Claude Code」為 Anthropic, PBC 之商標。

App iOS App Android App ccn(macOS、Windows、Linux) 所有指南
法律資訊 隱私權政策 服務條款 其他語言 © 2026 touchtap. 保留所有權利。 TouchTap Ltd 註冊於英格蘭和威爾斯,公司編號 13942589。