Claude Codeの権限確認・応答完了をポップアップで通知する (macOS)

Claude Codeの権限確認・応答完了をポップアップで通知する (macOS)

Claude Codeで権限確認や入力待ちに気づかず放置してしまう問題を、`settings.json`のhooks機能を使ったmacOS標準コマンドだけで解決する方法を試してみました。
2026.08.26

はじめに

Claude Codeで長めのタスクを流している間に別の作業をしていると、権限確認や入力待ちの状態にまったく気づかず何分も放置してしまうことがあります。

Claude Codeのデスクトップ通知に標準で対応しているターミナルもあるようですが、私はVS Codeの統合ターミナルを使っているので、標準では通知に対応していないようでした。

通知用のVS Code拡張機能もあるようでしたが、拡張機能をインストールする前に、Claude Codeの設定(settings.jsonのhooks機能)だけで解決できるか試してみました。

試した環境

  • OS:macOS
  • ターミナル:VS Codeの統合ターミナル(※本記事の設定自体は特定のターミナルに依存しません)

設定内容

~/.claude/settings.json(ホームディレクトリ配下)に、以下の内容を記載しました。特定のプロジェクトだけでなく、Claude Codeを使うすべての作業に対して有効になります。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"権限確認が必要です\" with title \"Claude Code\"'"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"確認してください\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

osascriptはmacOS標準搭載のコマンドで、ターミナルから通知センターを呼び出せるので、追加でインストールする必要はありません。

導入手順

設定ファイルに追記する

ファイルがまだない場合はディレクトリごと作成します。

mkdir -p ~/.claude
code ~/.claude/settings.json

開いたファイルに、先ほどのJSONを追記して保存します。すでに他のhooks設定がある場合は、上書きせず既存の設定と同じ階層に追記します。

実際に動かしてみる

Claude Codeに、権限確認が発生しそうな操作(例:「このディレクトリ配下のファイル構成を教えて」のような、コマンド実行を伴う依頼)をお願いしてみます。

スクリーンショット 2026-08-26 16.35.15
権限確認が出た瞬間にポップアップが届きました。
スクリーンショット 2026-08-26 16.35.24
応答が完了した際にも「確認してください」という通知が来ることを確認できました。
ただし、 Stopは「タスク全体が完了した時」ではなく「Claudeが1回分の応答を生成し終えるたび」に発火するため、まだClaudeがファイルを生成している途中で発火することもありました。

ちなみに、 StopNotificationmatcherは別物

設定を作る過程で混乱したポイントなので、補足しておきます。

  • Stop:フックの「イベント」そのもの(Notificationと同じ階層にある、独立した種類の1つ)
  • permission_promptidle_promptNotificationというイベントの中で、通知の種類をさらに絞り込むためのmatcher(フィルター)

階層で表すとこんなイメージです。

hooks
├─ Notification(イベント)
│   ├─ matcher: permission_prompt(権限確認)
│   └─ matcher: idle_prompt(入力待ち)
└─ Stop(イベント。matcherによる絞り込みは非対応)

Stopmatcherを指定できず、Claudeが1回応答を生成するたびに無条件で発火する仕様です。今回の設定は、「Notificationmatcherで絞り込んだもの」と「絞り込みができないStop」を組み合わせて使っている、という状態になります。

他の場面でも通知したい時は

今回は「権限確認」と「応答完了」の2つだけを対象にしましたが、Notificationイベントには他にもmatcherの種類があり、追加するだけで対応できます。

通知したい場面 追加するmatcher
MCPサーバーが入力フォームを開いた時 elicitation_dialog
MCPサーバーがブラウザでURLを開くよう求めた時 elicitation_url_dialog
認証が完了した時 auth_success

matcherの全一覧は、公式ドキュメントのGet notified when Claude needs inputの項目にまとまっています。

例えばMCPサーバーからの入力待ちにも気づきたい場合は、以下を追記します。

"Notification": [
  {
    "matcher": "elicitation_dialog",
    "hooks": [
      {
        "type": "command",
        "command": "osascript -e 'display notification \"MCPからの入力が必要です\" with title \"Claude Code\"'"
      }
    ]
  }
]

さいごに

osascriptはmacOS標準コマンドなので、追加インストールなしですぐに試せます。ターミナルの種類を問わず動く方法なので、環境を選ばず使えるのも利点です。

なお、VS CodeであればClaude Code通知の拡張機能があるので、それをインストールするとsettings.json への設定なしに通知を実現できます。
いくつか拡張機能があるので、気に入ったものを使ってみると良いと思います。
私は、settings.json の設定を試してみましたが結局 Claude Notificationsという拡張機能を使うことにしました 笑

この拡張機能は、通知の出し方を自動調整したり、通知をクリックして該当のターミナルタブへ直接ジャンプできたりと、settings.jsonだけでは実現できない機能を備えています。

VS Codeユーザーは、拡張機能も検討してみてください。

同じように権限確認や入力待ちの見逃しに困っている方の参考になれば幸いです。

参考リンク


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

この記事をシェアする

AI白書

関連記事