Mono
ウェイトリスト

コーディングエージェントの完了や承認待ちを通知で受け取る方法

コーディングエージェントが作業を終えたとき、失敗したとき、承認を待っているときに、パソコンやスマートフォンへ通知を送る設定と、席を離れる前のテスト方法を紹介します。

コーディングエージェントの完了や承認待ちを通知で知るには、エージェントに組み込まれた通知をオンにするか、そのイベントで動くフックを追加します。パソコンから離れるなら、通知をスマートフォンに送りましょう。承認を待っているエージェントはあなたが答えるまで何もしないので、離れる前にテストしておいてください。

この記事の例ではClaude Codeを使います。パソコンをスリープさせない方法は別のガイドで説明しています。ReunifiedのMonoは、Monoから動かすエージェントについてこうした通知を送りますが、この方法自体はどんな環境でも使えます。

1. 通知が必要なエージェントのイベントを決める

重要なイベントは3つです。

イベント 次にすること
許可待ち リクエストを読み、許可するか拒否する
完了 結果を確認し、変更内容をレビューする
エラーで停止 エラーを読み、やり直すかどうかを決める

通知を1つだけ設定するなら、許可待ちの通知にしてください。

2. Claude Codeで通知をオンにする

Claude Codeは、あなたが離席しているように見えるときに、作業を終えたり許可を求めて止まったりすると通知を送ります。デスクトップ通知が標準で表示されるのは、Ghostty、Kitty、iTerm2だけです(ターミナルの設定)。それ以外のターミナルでは、~/.claude/settings.jsonでpreferredNotifChannelを"terminal_bell"に設定すると、ベルが鳴ります。tmuxでは、~/.tmux.confにset -g allow-passthrough onを追加し、設定を再読み込みします。

自分で選んだ音やコマンドを使うには、同じファイルにフックを追加します。Notificationイベントでは、permission_prompt(承認待ちのまま約6秒たった)やidle_prompt(Claudeが約1分前に作業を終え、その後あなたが何も入力していない)などのマッチャーを使えます。Macでは、次の設定でそれぞれ別の音が鳴ります。

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

フックのガイドには、macOS、Linux、Windows向けのデスクトップ通知のコマンドも載っています。ほかのエージェントでは仕組みが異なるため、それぞれのドキュメントを確認してください。

3. 通知をスマートフォンに送る

スマートフォンに届ける方法は3つあります。

  • エージェント自身のアプリ。 Claude CodeのRemote Controlを有効にした状態で/configを実行し、「Push when Claude decides」(Claudeが判断したときにプッシュ通知)と「Push when actions required」(操作が必要なときにプッシュ通知)のどちらか、または両方をオンにします。対象のプランと、同じアカウントでサインインして通知を許可したClaudeアプリが必要です。
  • プッシュメッセージを送るフック。 たとえばcurlを使い、スマートフォンにアプリを入れてあるプッシュ通知サービスへ送ります。
  • 補助アプリ。 パソコンからセッションのイベントを中継します。

どの方法でも、パソコンの電源が入っていてスリープしておらず、オンラインで、エージェントが動き続けている必要があります。フックで使うトークンは~/.claude/settings.jsonに置き、プロジェクトの.claude/settings.jsonには書かないでください。後者はリポジトリにコミットされることがあります。

4. ロック画面で通知の内容を見せない

ロックされたスマートフォンのプレビューは、近くにいる人なら誰でも読めます。フックのメッセージには、秘密情報、ファイルの内容、ログの行を入れないでください。送るのはイベントとプロジェクト名だけにします。「invoice-export」という架空のプロジェクトなら、「invoice-export: 承認が必要」で十分です。iPhoneでは「設定」>「通知」を開き、「プレビューを表示」を「ロックされていない時」にします。Androidでもロック画面で機密性の高い内容を隠せますが、項目の名前は機種によって異なります。

Monoでは、完了の通知にエージェントの最後のメッセージが表示され、長い場合は短く切り詰められます。許可の通知には、エージェントが説明したとおりのリクエストが表示されます。多くの場合はコマンドそのものです。

5. 離れる前に無害なタスクでテストする

自宅のパソコンで「invoice-export check」という名前のセッションを始め、ファイルを変更せずにテストを実行し、失敗があれば報告するようエージェントに頼みます。このエージェントはコマンドを実行する前に確認するので、npm testの許可を求めてきます。パソコンでは別の画面かアプリを開き、スマートフォンをロックして別の部屋へ移動します。

Monoでは、次の順に届くはずです。

  1. テストコマンドが書かれた「エージェントからの許可リクエスト」の通知。
  2. 通知を押すとそのセッションが開くので、「許可」を選びます。その後のリクエストでは、それぞれ別の通知が届きます。
  3. 「invoice-export check」でエージェントが完了しました、という通知。エージェントの最後のメッセージも表示されます。たとえば「dates.test.tsのテストが1件、タイムゾーンの扱いで失敗します。ファイルは変更していません。」です。

次に、スマートフォンでセッションを開いたまま2つ目のタスクを実行します。画面で見ている間は通知が届きません。出かける前に、どのデバイスにもそのセッションが表示されていないことを確認してください。

6. 通知が届かないときの対処

症状 確認すること
まったく届かない システムの通知許可、集中モードやおやすみモード、アプリ自体のスイッチ
パソコンにしか届かない 他のデバイスへの送信がオンか、スマートフォンでサインインして通知を許可しているか
遅れて届く、まとめて届く iPhoneの「時刻指定要約」、Androidのバッテリー最適化、パソコンのスリープ
見ている間は届かない 想定どおりの動作です。表示中のセッションやターミナルには通知が出ません
許可の通知がなく、エージェントが作業を続けた MonoのYOLOモードのような自動承認モード

Monoでは「設定」>「通知」を開き、「すべての通知」「Code」(完了・停止したセッション)「許可の要求」「他のデバイスにも送信」を確認します。どれも初期設定でオンです。通知はエージェントを動かしているパソコンから送られるので、そのパソコンでMonoを起動したままにしてください。

スマートフォンから承認する前に、許可リクエストで確認することを読んでください。そのほかの設定はスマートフォンからコーディングエージェントを使う方法で説明しています。Monoはまだ公開前ですが、ウェイトリストに登録できます。

執筆

Reunifiedは、ばらばらになったものをもう一度ひとつにまとめるアプリを作っています。

あわせて読みたい

すべての記事

近日公開

ウェイトリストに登録

メールアドレスを登録すると、Mono をダウンロードできるようになったときにお知らせします。

Mono をどこで使いますか?