## 経緯 以前に以下の対応をしたが、結局安定しない微妙なものになってしまった。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📜2025-06-25 Claude Codeの作業や回答が終わり人間待ちになったとき通知を表示する </div> <div class="link-card-v2-content">Claude Codeの作業完了時に通知を表示したいと考え、AppleScriptの`osascript`コマンドでは通知できなかったため、GhosttyのOSC 9シーケンスを利用した。macOS 15.5、Ghostty 1.1.4、Zsh 5.9環境で動作を確認したが、通知が安定しない場合もあった。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" /> <a data-href="📜2025-06-25 Claude Codeの作業や回答が終わり人間待ちになったとき通知を表示する" class="internal-link"></a> </div> %%[[📜2025-06-25 Claude Codeの作業や回答が終わり人間待ちになったとき通知を表示する]]%% そんなときに良い記事を見たのでやってみようと思った。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://static.zenn.studio/images/logo-transparent.png" /> <span class="link-card-v2-site-name">Zenn</span> </div> <div class="link-card-v2-title"> Claude CodeのHooks機能で完了通知を受け取りましょう </div> <img class="link-card-v2-image" src="https://res.cloudinary.com/zenn/image/upload/s--vszENWYy--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Claude%2520Code%25E3%2581%25AEHooks%25E6%25A9%259F%25E8%2583%25BD%25E3%2581%25A7%25E5%25AE%258C%25E4%25BA%2586%25E9%2580%259A%25E7%259F%25A5%25E3%2582%2592%25E5%258F%2597%25E3%2581%2591%25E5%258F%2596%25E3%2582%258A%25E3%2581%25BE%25E3%2581%2597%25E3%2582%2587%25E3%2581%2586%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:RUI%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2l4VVMwY0t3RHdtTktYOVczRUxHWUVaMk8tVnVDNXFnSWI0QjQwcEE9czk2LWM=%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png" /> <a href="https://zenn.dev/the_exile/articles/claude-code-hooks"></a> </div> ## 環境 | 対象 | バージョン | | --------------- | ------------------- | | [[macOS]] | 15.5 | | [[Ghostty]] | 1.1.4-main+3e79c4b7 | | [[Claude Code]] | 1.0.40 | ## 方針 | タイミング | 通知アプリ | 通知制御 | | ------------ | ---------------------------- | ---------------------------------- | | ユーザー確認 | [[Ghostty]] | [[Claude Code]]の設定 | | タスク完了 | [[AppleScript]] ([[OS]]通知) | [[フック (Claude Code) \| フック]] | 先の[[Zenn]]記事では、どちらも[[フック (Claude Code)|フック]]を利用した[[AppleScript]]による[[OS]]通知を行っていたが、以下の点で『ユーザー確認』は[[Ghostty]]の方が優れていると感じたため。 - 通知をクリックすると[[Ghostty]]の対象タブ(ペイン)が自動で表示・フォーカスされる - 通知がちょうど良いタイミングで消えてくれる - 通知受信時に該当のタブ(ペイン)がアクティブでなかったとき - 該当のタブ(ペイン)をアクティブにすると通知が消える - 通知受信時に該当のタブ(ペイン)がアクティブだったとき - それ以外にフォーカスを表すと通知が消える [[AppleScript]]を使った[[OS]]通知の場合、クリックすると[[スクリプトエディタ (Mac)|スクリプトエディタ]]が開いてしまうし、明示的に `x` ボタンを押さないと消えない。 ## 設定 ### ユーザー確認時 不要。 ### タスク完了時 [[Claude Code]]を立ち上げ、`/hooks` を実行し、 `4.Stop...` を選ぶ。 [[AppleScript]]のコードを指定する。 ``` osascript -e 'display notification "タスクが完了しました" with title "Claude Code" subtitle "処理終了" sound name "Hero"' ``` `3. User settings` を指定する。(すべてのケースで通知してほしいので) `~/.claude/settings.json` に以下が追加されているはず。 ```json "hooks": { "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"タスクが完了しました\" with title \"Claude Code\" subtitle \"処理終了\" sound name \"Hero\"'" } ] } ] }, ``` ## 通知結果 ユーザー確認時はこのメッセージが届く。 ![[2025-07-02-16-18-03.avif]] タスク完了時は以下。 ![[2025-07-02-17-06-53.avif]] ## トラブルシューティング [[macOS]]で通知が上手くいかないパターンはいくつかあるので以下2つが参考になるはず。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📝Claude CodeのNotificationが表示されなかったり表示されてもすぐ消えてしまう </div> <div class="link-card-v2-content">macOSやターミナル(Ghostty)で通知が表示されない、すぐ消える、通知センターに残らない場合の原因や「おやすみモード」「通知設定」など通知トラブルの対処法を解説している。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" /> <a data-href="📝Claude CodeのNotificationが表示されなかったり表示されてもすぐ消えてしまう" class="internal-link"></a> </div> %%[[📝Claude CodeのNotificationが表示されなかったり表示されてもすぐ消えてしまう]]%% <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📝ターミナルからosascriptで通知しようとしても何も起こらない </div> <div class="link-card-v2-content">macOS 15.5やGhosttyでosascript display notificationコマンドを実行しても通知が表示されない場合の対処法である。おやすみモードやスクリプトエディタの通知設定が原因であることが多い。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" /> <a data-href="📝ターミナルからosascriptで通知しようとしても何も起こらない" class="internal-link"></a> </div> %%[[📝ターミナルからosascriptで通知しようとしても何も起こらない]]%%