Mac で Claude Code の完了通知や、対応が必要なときの通知を受け取る。

Mac のどのターミナルでも、Claude Code の完了通知や、承認待ちで停止したときの通知を受け取れます。必要な設定は、お使いのターミナルによって異なります。

デフォルトでは、Claude Code がデスクトップ通知を送るのは Ghostty、Kitty、iTerm2 のみです。処理が完了したときや許可を待っているときに、あなたがターミナルから離れていると判断すると通知します。Terminal.app、Warp、VS Code のターミナルにはバナーが表示されません。これらでは、/config の Local notifications をターミナルのベルに設定するか、フックを追加します。完了時には Stop、対応が必要なときには Notification を使います。

最終更新:

Cowork Island

macOS 14 以降。
Appleシリコンと Intel に対応。
無料プランはアカウント不要。

無料でダウンロード

ターミナルの標準の動作を確認する。

Claude Code の標準の通知は、Claude がタスクを終えたときや許可を求めて一時停止したときに、あなたがターミナルから離れていると判断すると送られます。その通知がバナーとして表示されるかどうかは、ターミナルアプリによって異なります。

Mac での Claude Code の標準通知:ターミナル別の動作
ターミナル設定しない場合必要な操作
Ghosttyデスクトップ通知macOS で、そのターミナルからの通知を許可してください。
Kittyデスクトップ通知macOS で、そのターミナルからの通知を許可してください。
iTerm2iTerm2 の設定を1か所変更すると、デスクトップ通知iTerm2 でエスケープシーケンスによる通知をオンにしてください(次のセクションを参照)。
Terminal.appバナーは表示されません。デフォルトでは、Terminal の Audible bell がオフの場合にのみベルが鳴ります。ターミナルのベルを使う設定にするか、フックを使ってください。
Warpバナーは表示されませんターミナルのベルを使う設定にするか、フックを使ってください。
VS Code のターミナルバナーは表示されませんターミナルのベルを使う設定にするか、フックを使ってください。
tmux(すべてのターミナル)通知が通過しません~/.tmux.conf に set -g allow-passthrough on を追加し、tmux source-file ~/.tmux.conf を実行してください。

標準の通知機能をオンにする。

Claude Code には、このための設定項目が1つあります。preferredNotifChannel です。Claude Code で /config と入力し、Local notifications を開いてください。デフォルトは auto です。ほかに terminal_bell、iterm2、iterm2_with_bell、kitty、ghostty、notifications_disabled を選べます。

ターミナルのベルは、プログラムが注意を促すときに鳴る短い通知音や、画面の点滅です。Terminal.app、Warp、VS Code で使うには、~/.claude/settings.json などの Claude Code の設定ファイルに、次の行を追加する方法もあります。ファイル全体を囲む波括弧の内側に追加してください。

"preferredNotifChannel": "terminal_bell"

  • iTerm2:Settings > Profiles > Terminal を開き、Notification Center Alerts にチェックを入れます。Filter Alerts をクリックし、Send escape sequence-generated alerts をオンにしてください。
  • Terminal.app:ベルに気づきやすくするには、Settings > Profiles > Advanced を開きます。Bell で、Terminal がバックグラウンドにあるときに Dock アイコンにバッジを表示するか、アイコンをバウンドさせるように設定してください。Claude Code の初回起動時にターミナルの設定を受け入れた場合、Terminal の Audible bell はオフになっています。音を鳴らしたい場合は、ここで Audible bell にチェックを入れてください。
  • すべてのターミナル:ターミナルアプリ自体に、「システム設定」>「通知」で通知の許可が必要です。

古い記事では claude config set の実行を勧めていますが、このコマンドは現在は存在しません。/config を使うか、設定ファイルを編集してください。

完了時には Stop、対応が必要なときには Notification を使う。

フックとは、決められたタイミングで Claude Code が実行するシェルコマンドです。設定ファイルに登録して使います。実行にターミナルは関わらないため、どのターミナルでも動作します。

Anthropic の公式の通知設定例では、Notification イベントを使っています。このイベントで Claude の完了を通知できるのは、idle_prompt を通じてのみです。通知されるのは完了から約60秒後で、その間に何も入力していない場合に限られます。Claude が停止した瞬間に通知するには、Stop を使ってください。

通知に使う Claude Code のフックイベント
イベントとマッチャー発生するタイミング用途
Stop各ターンの最後に、Claude が応答を終えたとき。ただし、自分で応答を中断した場合は発生しません。Claude の完了通知
Notification + permission_prompt許可を求める確認が表示されてから約6秒間、応答を待ったとき。ターミナルで入力すると遅れます。Claude が承認を必要としているときの通知
Notification + elicitation_dialogMCP サーバー(Claude Code に接続したツール)がフォームを開き、約6秒間、何も入力していないとき。Claude が入力を必要としているときの通知
Notification + elicitation_url_dialogMCP サーバーがウェブページを開くように求め、約6秒間、何も入力していないとき。Claude が入力を必要としているときの通知
Notification + idle_promptClaude の完了から約60秒後。何も入力しておらず、バックグラウンドで実行中のサブエージェントもない場合に限ります。少し時間を置いてからのリマインダー

レート制限などの API エラーでターンが終了すると、Stop の代わりに StopFailure が発生します。Notification フックには処理を阻止する機能はなく、指定したコマンドを実行するだけです。

用意されたフックをコピーする。

以下の各コード例は、すべてのプロジェクトに適用される ~/.claude/settings.json に追加します。いずれも JSON とシェルの構文が正しいことを確認済みで、追加のソフトウェアは不要です。

上書きせず、既存の設定に追加してください。ファイルにすでに "hooks" オブジェクトがある場合は、その内側に、既存の項目と並べて "Stop" または "Notification" キーを追加してください。そのキーもすでにある場合は、重複して追加しないでください。たとえば Cowork Island は両方を追加します。コード例のエントリ、つまり角括弧の内側にある波括弧で囲まれた部分をコピーし、そのキーのリストに新しい項目として追加します。項目の間はカンマで区切ってください。"hooks" ブロックをもう1つ貼り付けると、ほかのフックが失われることがあります。また、ファイル全体を置き換えると、ほかの設定が削除されます。このファイルは厳密な JSON 形式なので、コメントや末尾のカンマは使えません。

Claude が完了したら、Mac にバナーを表示する。

~/.claude/settings.json に追加

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title \"Claude Code\" sound name \"Glass\"' -e 'end run' \"Finished in ${PWD##*/}\""
          }
        ]
      }
    ]
  }
}

Claude が承認を必要としたら、Mac にバナーを表示する。

~/.claude/settings.json に追加

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|elicitation_dialog|elicitation_url_dialog",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title \"Claude Code needs you\" sound name \"Ping\"' -e 'end run' \"Waiting for your OK in ${PWD##*/}\""
          }
        ]
      }
    ]
  }
}

どちらのバナーにも、セッションを実行しているフォルダの名前が表示されます。

スクリプトエディタにバナーの表示を許可する。

Mac では、osascript のバナーは標準搭載のスクリプトエディタから送られます。スクリプトエディタに通知を許可するまでは、コマンドはエラーを表示せずに失敗し、macOS から許可を求められることもありません。

  1. Terminal で、次のコマンドを1回実行してください。

osascript -e 'display notification "test"'

  1. 「システム設定」>「通知」を開き、スクリプトエディタを探して「通知を許可」をオンにしてください。

バナーの代わりに通知音を鳴らす。

~/.claude/settings.json に追加

{
  "hooks": {
    "Stop": [
      { "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" } ] }
    ],
    "Notification": [
      { "matcher": "permission_prompt", "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Ping.aiff" } ] }
    ]
  }
}

音声で知らせる。

~/.claude/settings.json に追加

{
  "hooks": {
    "Stop": [
      { "hooks": [ { "type": "command", "command": "say \"Claude has finished\"", "async": true } ] }
    ],
    "Notification": [
      { "matcher": "permission_prompt", "hooks": [ { "type": "command", "command": "say \"Claude needs your permission\"", "async": true } ] }
    ]
  }
}

"async": true を指定すると、Mac が読み上げている間も Claude Code が処理を続けられます。

一方のイベントではバナー、もう一方では通知音を使いたい場合は、通知フック生成ツールを2回使ってください。毎回、イベントと通知方法を1つずつ選び、ツールの統合用ボックスを使って両方の結果を設定ファイルに追加します。各コード例をどのファイルに追加するかも表示されます。処理はすべてブラウザ内で行われます。

通知されない場合は、ここを確認する。

  • フォルダを信頼する。そのフォルダのワークスペースを信頼するか確認するダイアログで承認するまで、Claude Code はすべてのフックの実行を保留します。~/.claude/settings.json のフックも例外ではありません。
  • 読み込まれている設定を確認する。Claude Code で /hooks と入力してください。フックの一覧と、それぞれの読み込み元のファイルが表示されます。ただし、ここからフックを追加することはできません。通常、Claude Code は編集内容を自動で読み込みます。反映されない場合は、セッションを再起動してください。
  • 職場の Mac。組織が管理するフックのみを許可する設定になっている場合があります。その場合、/hooks に「Only hooks from managed settings run here」と表示され、個人のフックは実行されません。
  • 通知が2つ同時に届く。すべての設定階層のフックが組み合わされて実行されます。プロジェクトの設定ファイルとユーザーの設定ファイルに異なる通知フックがあれば、両方が実行されます。複数のファイルにまったく同じフックがある場合は、1回だけ実行されます。また、フックは標準の通知機能と並行して動作します。両方から通知が届く場合は、Local notifications を notifications_disabled に設定し、フックはそのまま残してください。
  • 通知が多すぎる。Stop はタスク全体が終わったときだけでなく、各ターンの終了後に発生します。
  • Cowork Island も使っている場合。上のコード例のように、自分のフックはそれぞれ独立したエントリにし、~/.perch/ の外に置いてください。アプリは /.perch/ を含むコマンドだけを自身のものとして扱い、エントリ全体を置き換えます。そのため、アプリのエントリ内に置いたコマンドは、そのエントリと一緒に削除されてしまいます。

設定不要の方法を使う。

Cowork Island は、このガイドの制作者が開発した Mac アプリです。AI エージェントのセッションをノッチ下のパネルに集め、それぞれの状態を表示します。どのセッションに対応が必要か、ひと目でわかります。ノッチの有無にかかわらず動作します。

  • Claude Code は自動的に接続されます。アプリが自身のフックのエントリを追加し、これらは既存のフックと共存します。
  • 各セッションは「実行中」「保留中」、または「要対応」として表示されます。デフォルトでは、セッションが要対応になるとアイランドが自動で開きます。ただし、そのセッションのターミナルがすでに前面にある場合は開きません。
  • セッションが完了すると、デフォルトではアイランドが5秒間開きます。代わりにアイランドにドットを表示するか、何もしない設定に変更できます。
  • Claude Code では、アイランドで操作を許可または拒否したり、選択式の質問に回答したりできます。アイランドでの回答は無料です。
  • サウンドは、自分でオンにするまでオフのままです。「承認が必要」のサウンドは無料で使えます。「セッション完了」のチャイムは Pro の機能です。
  • アプリ自体は macOS のバナーを送りません。アイランドが開くことで知らせ、サウンドをオンにしていれば音も鳴ります。

無料プランでは、一度に1枚のセッションカードが表示されます。Pro ではすべてのセッションが表示され、そのウインドウ、タブ、ペインへジャンプして戻れます。ジャンプは Pro の機能です。Pro の7日間試用が自動で始まり(Mac 1 台につき1回)、支払い情報は不要です。プランとインストールガイドをご覧ください。

無料でダウンロード

情報源。

ダウンロードリンクを自分宛てに送って、あとで開けます。