VS Code、Cursor 與 JetBrains 的 IDE terminal 預設收不到 Claude Code 的桌面通知,因為 Claude Code 只會送給 iTerm2、Ghostty 與 Kitty。若要收到提醒,可以設定 "preferredNotifChannel": "terminal_bell" 讓 IDE 處理鈴聲,或在 ~/.claude/settings.json 中加入 Notification hook 來顯示桌面通知或傳送 push。無論是在整合式 terminal 還是 VS Code 擴充功能的聊天面板,hook 都會觸發,因為兩者讀取的是同一個設定檔。
01為什麼 IDE 沒有動靜
Claude Code 的內建提醒取決於它所執行的 terminal。在預設設定下,它只會在 iTerm2、Ghostty 與 Kitty 中發出桌面通知,而 Anthropic 的 terminal 文件也明確列出 VS Code 整合式 terminal 收不到通知。JetBrains 的 terminal 情況相同。terminal 鈴聲指南說明了 preferredNotifChannel 的每個值。
在 VS Code 與 Cursor 中執行 Claude Code 有兩種方式,兩者的差異很重要:
claude~/.claude/settings.json~/.claude/settings.json(同一個檔案)JetBrains IDE(IntelliJ IDEA、PyCharm、WebStorm、GoLand、Android Studio 等)的情況和右欄相同:Claude Code 外掛會在 IDE 的整合式 terminal 中執行 claude 並與之連線。
02方法一:terminal bell
若 claude 是在整合式 terminal 中執行,請在 ~/.claude/settings.json 加入:
{
"preferredNotifChannel": "terminal_bell"
}
之後 Claude Code 需要你時就會送出 bell 字元,接下來怎麼處理由 IDE 決定。VS Code 和 Cursor 透過協助工具的訊號設定處理 terminal bell;在設定中搜尋「terminal bell」即可選擇音效。JetBrains IDE 請查看對應版本的 terminal 設定。沒戴耳機或 IDE 在背景時很容易漏掉 bell,所以多數人會接著採用方法二。
03方法二:Notification hook
Hook 會執行你指定的指令,在所有 IDE 都能用,不論是 terminal 還是 VS Code 聊天面板。以下範例會在 macOS 顯示桌面通知:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
Linux 上請用 notify-send 'Claude Code' 'Claude Code needs your attention',Windows 上則用 PowerShell 指令;Linux 指南和 Windows 指南都有測試過的版本。如果 osascript 在 macOS 上沒有任何反應,請開啟系統設定 > 通知,允許 Script Editor 發送通知,osascript 的通知就是從這個 app 發出的。
在 VS Code 擴充功能中,不必開檔就能檢查 hooks:開啟 Customize 區塊並選擇 Hooks,即可看到本次 session 載入的 hooks,依事件分組(需 Claude Code v2.1.269 以上)。
如果想在 Claude 完成的當下收到通知,而不是等它在等待時才通知,請再加上 Stop hook。Claude 完成時通知指南有兩者並用的範例。
VS Code 擴充功能的觸發時機不同
在 terminal 中,permission_prompt 通知會等到 prompt 約六秒沒有按鍵才觸發,每按一次鍵就會往後延。根據 Anthropic 文件,在 VS Code 擴充功能(以及 Claude Desktop)中,它會在 Claude 提出請求約六秒後觸發,打字時不會延後;若你在那之前就回應,則完全不會觸發。如果在面板中工作時覺得太吵,可設定環境變數 CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS=1 將其關閉。Notification hook 指南列出了所有通知類型及觸發時機。
04遠端視窗:SSH、WSL、dev container 與 JetBrains Remote Development
IDE 通知最常在這裡出問題。當 VS Code 或 Cursor 視窗連到 SSH 主機、WSL 或 dev container 時,Claude Code 是在那個系統上執行,讀取的是那裡的 ~/.claude/settings.json,而不是你筆電上的。你的 hooks 也在那裡執行,因此 osascript 或 notify-send 這類桌面指令沒有桌面可顯示,會默默失敗。
JetBrains Remote Development 也類似:Claude Code 外掛必須裝在遠端主機上,Claude Code 也在那裡執行。
可行的替代做法:
- Windows 上的 WSL:只要
powershell.exe在 WSL 內的PATH中,hook 就能透過 Windows interop 呼叫它。 - SSH 主機與 container:透過網路把通知送到你收得到的地方,例如 ntfy,或 Telegram、Slack 或 Discord webhook。SSH 指南介紹了各種選項。
05搭配 /ide 使用外部 terminal
如果想用內建桌面通知,可以在 iTerm2、Ghostty 或 Kitty 中執行 Claude Code,再用 /ide 指令連到 IDE。檢視 diff 和分享選取內容仍透過 IDE 運作,通知則由外部 terminal 發出。iTerm2 需先啟用其提醒設定,詳見 terminal bell 指南。
06其他值得注意的事
- Shift+Enter:在 VS Code 和 Cursor 中執行一次
/terminal-setup,Shift+Enter 就能換行。JetBrains terminal 不支援,請改用 Ctrl+J,或先輸入\再按 Enter。 - Remote Control:Anthropic 的 Remote Control 可在 VS Code 擴充功能中用
/remote-control啟動,讓你在 Claude 手機 app 上追蹤 session。它有自己的方案與登入要求,請參閱比較文章。 - 多個視窗:如果你在多個 IDE 視窗中執行 Claude Code,請在通知中加上專案資料夾,才知道是哪一個需要你。Hook 的輸入包含
cwd。請參閱同時執行多個 session。
07Claude Code Notifier 的角色
如果你人就在 IDE 前,搭配平台通知工具的 Notification hook 是不錯的免費方案。但離開螢幕時它幫不上忙,也無法讓你回應。
Claude Code Notifier 的 ccn 同樣是 hook,所以在 IDE terminal 中的運作方式和其他 terminal 一樣,支援 Mac、Windows 與 Linux。單獨安裝時,它會在 Claude 完成、需要權限或提出問題時顯示桌面通知。配對手機後,你可以在手機上對權限請求選擇允許一次、本次 session 皆允許或拒絕,選擇 Claude 問題的答案,並送出下一個指令。如果你在最近 30 秒內有打字,terminal 會照常詢問,手機端不會等待。手機 push 透過 relay 傳送而非本機桌面,因此若把 ccn 裝在 IDE 視窗所連線的遠端機器上,手機一樣收得到。Claude Code Notifier 為獨立產品,並非 Anthropic 所開發。請參閱 ccn 頁面與配對手機。
08常見問題
為什麼 Claude Code 在 VS Code 中不會通知我?
VS Code 整合式 terminal 收不到 Claude Code 的內建桌面通知。請在 ~/.claude/settings.json 設定 "preferredNotifChannel": "terminal_bell" 或加入 Notification hook,然後開啟新的 session。
Hooks 在 Claude Code VS Code 擴充功能中有效嗎?
有效。Claude Code 在 IDE 擴充功能中觸發的 hook 事件與 terminal 相同,擴充功能和 CLI 也共用 ~/.claude/settings.json。擴充功能的 Customize 區塊可以檢視和編輯 hooks。
在 Cursor 中也能用嗎?
可以。Cursor 可以安裝同一個 Claude Code 擴充功能,claude 也會像在 VS Code 中一樣在整合式 terminal 執行。以上內容全部適用。
我的 hook 在本機可以運作,但在 Remote SSH 視窗中卻沒反應,為什麼?
在遠端視窗中,Claude Code 及其 hook 是在遠端機器上執行,而那台機器沒有桌面環境。請在該機器上編輯 ~/.claude/settings.json,並改用 ntfy 這類網路 push,而不是桌面通知指令。