承認

Claude Code(と Codex)の権限の確認をスマホから承認する

エージェントの作業が止まるいちばんの原因は、誰も見ていない権限の確認です。ポケットの中から答える方法は 3 つあります。Claude Code 自身のプッシュ通知、自作の ntfy フック、そして受信箱のあるアプリです。Claude Code での仕組み、Codex やほかのエージェントでの違い、そしてそれぞれのセキュリティ面での代償を紹介します。

Claude Code(と Codex)の権限の確認をスマホから承認する

簡単な答え

Pro、Max、Team、Enterprise のプランなら、Remote Control を起動し、/config で Push when actions required を有効にします。すると Claude アプリに通知が届き、アプリで確認に答えられます。無料でセルフホストできる代替としては、claude-remote-approver などのオープンソースのフックが、PermissionRequest を承認/拒否ボタン付きで ntfy に送ります。Codex にも同じ PermissionRequest フックがあります。Maude のようなアプリは、複数のエージェントからの確認を 1 つの受信箱に表示し、許可/拒否付きのプッシュ通知を送ります。

Claude Code は、事前に承認していないコマンドの実行やファイルの編集をしようとすると、止まって確認を求めます。ターミナルの前にいれば 1 秒で済みます。いなければセッションは待ち続け、キーを 1 回押すために 1 時間待つことにもなりかねません。リモート承認の仕組みはどれも、確認をスマホに届け、あなたの答えをエージェントに返します。違うのは、確認をどう捕まえるか、どこを経由するか、誰が答えられるかです。

リモート承認の仕組み

仕組みは 2 つあり、どのツールもそのどちらかを使っています。

  • エージェント自身のリモートプロトコル。Claude Code の Remote Control は、本物の権限ダイアログを Claude アプリに転送します。Antigravity の Remote Control や Codex の app-server も同じ仕組みです。間に入って何かを判断するものはなく、あなたはエージェント自身の確認に答えています。
  • フック。Claude Code は、決まったタイミングで設定したプログラムを実行します。PermissionRequest フックは権限ダイアログが表示される直前に発火し、{"behavior": "allow"} や "deny" といった判断を出力すれば、あなたの代わりに答えられます。PreToolUse フックはすべてのツール呼び出しの前に発火し、allow、deny、ask、defer を返せます。プッシュ通知を送ってあなたのタップを待つフック、それが自作のスマホ承認ツールすべての仕組みです。詳細はフックのリファレンスにあります。

Claude Code のネイティブのプッシュ通知

Anthropic 公式の方法は Remote Control を経由します。

  1. claude remote-control(サーバーモード)か claude --remote-control でセッションを始めるか、実行中のセッションで /remote-control と入力します。
  2. スマホの Claude アプリに同じアカウントでサインインし、通知を許可します。
  3. ターミナルで /config を実行し、Push when actions required を有効にします。これで権限の確認と質問が対象になります。Push when Claude decides は「テストが終わった」のような能動的な更新が対象です。

ドキュメントには、実際に出くわすいくつかの点が書かれています。

  • プランと認証。Remote Control は Pro、Max、Team、Enterprise で使え、API キーには対応していません。Team と Enterprise では、オーナーが有効にする必要があります。
  • 確認はタイムアウトしない。権限の確認と質問は、答えるまで開いたままです。
  • ターミナルの前にいる間はプッシュ通知が止まる。接続されたターミナルで入力中やフォーカスしている間、Claude Code はプッシュ通知を送りません。CLAUDE_CLIENT_PRESENCE_FILE を使えば、それをマシンの前にいる間全体に広げられます。
  • プロセスを動かし続ける必要がある。claude プロセスは動き続けていなければならないので、サーバーでは tmux の中で起動します。
  • アプリから選べないモードがある。モバイルのドキュメントによると、アプリからはバイパス権限を選べず、Remote Control のセッションでは自動モードも選べません。

Claude のプランを契約していて Claude Code しか使わないなら、ここから始めましょう。プランに無料で含まれ、Anthropic がメンテナンスしています。

ntfy フックで自作する

ntfy はオープンソースのプッシュ通知サービスです。普通の HTTP リクエストでトピックに投稿すると、スマホの ntfy アプリに表示されます。いくつかのオープンソースプロジェクトが、これを PermissionRequest フックと組み合わせています。フックは保留中のツール呼び出しをアクションボタン付きでトピックに投稿し、2 つ目のトピックであなたのタップを待ち、判断を Claude Code に返します。作者の功績として紹介します。

プロジェクトフック答えなかった場合備考
claude-remote-approver(yuuichieguchi)PermissionRequest120 秒後(プランのレビューは 300 秒後)にターミナルの確認に戻るnpm install -g claude-remote-approver。128 ビットのランダムなトピックを生成。承認 / 常に承認 / 拒否
claude-push(coa00)PermissionRequest90 秒後(変更可能)にターミナルに戻るシェルのインストールスクリプト。許可 / 拒否
claude-code-phone-notifications(ssarnecki)PermissionRequest、PreToolUse、Stop約 9 分待ってからターミナルに戻る机の前にいる場合に備えて 30 秒待ってから通知。AskUserQuestion の確認も通知(ボタンなし)
hookline(tsyche)Claude は PreToolUse、Codex は PermissionRequestデフォルトは 15 分。遅れた返答にはより長い猶予ありCodex、Grok、OpenCode にも対応。認証情報付きのセルフホスト ntfy に対応

4 つとも MIT ライセンスです。タイムアウトはそれぞれのドキュメントに記載されたデフォルト値です。リモートから答える必要はなく通知だけでいいなら、Claude Code の Notification フックで十分です。permission_prompt マッチャーはダイアログが表示されたときに発火します。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [
          { "type": "command",
            "command": "curl -s -d 'Claude Code is waiting for approval' https://ntfy.sh/your-long-random-topic" }
        ]
      }
    ]
  }
}

これを Claude Code が動くマシンの ~/.claude/settings.json に入れます。答えるにはやはりターミナルの前に行く必要があります。上で紹介したプロジェクトは、答える経路を追加するものです。

Maude の受信箱

Maude は 1 つ目の方式を取っています。サーバー上のデーモンが各エージェント自身のプロトコルとやり取りするので、権限のリクエストはフックによる推測ではなく、本物のリクエストとしてアプリに届きます。すべてのサーバーのすべてのセッションからのリクエストが、エラーや完了した作業と並んで 1 つの受信箱に届きます。そこでその場で答えることも、許可と拒否が付いたプッシュ通知から直接答えることもできます。リクエストはあなたが答えるまで待ち、セッションがタイムアウトして勝手に先へ進むことはありません。Claude Code、Codex、OpenCode、Grok Build で使えます。例外は Antigravity で、ヘッドレスの agy はツールの実行前に一時停止できないため、Maude は拒否された操作をあとから表示し、許可すれば再試行します。Maude は有料アプリで、各エージェントには別途アカウントが必要です。受信箱とプッシュ通知を備えたアプリは Maude だけではなく、Happier などにも両方あります。

Codex とほかのエージェント

  • Codex にもフックがあり、デフォルトで有効です。PermissionRequest フックは "behavior": "allow" または "deny" で答えられ、PreToolUse は拒否できます。設定場所は ~/.codex/hooks.json か config.toml の [hooks] です。hookline が Codex で使っているのがこれです。Codex の古い notify 設定は、ターンの完了時にプログラムを実行します。サードパーティの記事によると承認リクエストでは発火しないので、承認にはフックを使ってください。Codex 公式のスマホアプリの方法と Linux での制限については、VPS で Codex CLI を動かすをご覧ください。
  • Antigravity は、対話的に動かすかデーモンとして動かしていれば、Remote Control のダッシュボードから確認に答えられます。ヘッドレスの agy は確認せずに拒否します。サーバーで Antigravity CLI を動かすをご覧ください。
  • OpenCode と Grok Build は、hookline のプラグインとフックの対応、またはマルチエージェントアプリでカバーできます。

リモート承認のセキュリティ

スマホからの承認の強さは、確認からあなたのタップまでの間でいちばん弱い部分で決まります。

  • ntfy.sh ではトピックがパスワード。ntfy のドキュメントにもはっきり書かれていますが、登録なしの場合、トピック名を知っている人は誰でもそれを読み、投稿できます。公開サーバーでトピックを推測されると、他人があなたのエージェントのコマンドを承認できてしまいます。長いランダムなトピックを使うか、認証付きで ntfy をセルフホストしてください。
  • タイトルではなくコマンドを読む。ロック画面の通知に表示されるのは要約です。長い Bash の行に紛れた rm -rf は、6 インチの画面では見落としがちです。「常に許可」は読み取り専用のツールに使い、Bash(*) には使わないでください。
  • フォールバックを把握する。上で紹介した自作のフックは、タイムアウトするとターミナルの確認に戻るので、答えのないリクエストは自動承認されずにブロックされます。自分でフックを書くときも同じルールにしてください。Claude Code のドキュメントは、タイムアウトした PreToolUse フックはツール呼び出しをブロックせず、通常の権限フローに進むと警告しているので、止まったフックをゲートとして当てにしないでください。
  • 経路を固める。承認の通信からは、エージェントが何をしているかがわかります。Anthropic の Remote Control は Anthropic のサーバーを経由し、Maude のリレーが目にするのはエンドツーエンド暗号化された通信だけです。フックなら行き先を自分で選べます。Anthropic の Require trusted devices 設定を使えば、Remote Control を使えるデバイスを制限できます。
  • 承認はセーフティネットであって、サンドボックスではない。どんな承認 UI よりも、作り直せるマシンでエージェントを root 以外のユーザーとして動かすことのほうが重要です。エージェントをフル権限で安全に動かすをご覧ください。

Maude から答える

エージェントをサーバーで動かしていて、すべてに 1 か所から答えたいなら、Claude Code や Codex で Maude を試してみてください。アプリからサーバーを追加して自分のプランでサインインすれば、権限のリクエストが許可と拒否付きのプッシュ通知で届きます。受信箱には、あなたを待っているものがすべて集まります。

よくある質問

Claude Code はプッシュ通知を送れますか?
はい、Remote Control を通じて送れます。セッションを Claude アプリにつなぎ、/config で Push when actions required(必要なら Push when Claude decides も)を有効にします。Pro、Max、Team、Enterprise のプランが必要で、API キーでのログインには対応していません。
ロック画面から許可や拒否ができますか?
ntfy ベースのフックならできます。通知に承認/拒否のアクションボタンが付きます。Anthropic のドキュメントは権限の確認のプッシュ通知について説明していますが、通知自体に答えるボタンがあるとは書いていないので、Claude アプリで答えることになると考えてください。Maude の権限の通知には許可と拒否のアクションが付きます。
答えなかったらどうなりますか?
Claude Code 自体では、権限の確認は答えるまで開いたままなので、セッションはただ待ちます。自作の ntfy フックは設定した時間でタイムアウトし、通常のターミナルの確認に戻ります。自分で書くフックは、失敗時に必ずブロックするようにしてください。タイムアウトした PreToolUse フックはツール呼び出しをブロックしません。
Codex でも使えますか?
はい。Codex は許可や拒否ができる PermissionRequest フックに対応しており、hookline などのプロジェクトはそれを使って Codex の承認を ntfy に送っています。サードパーティの報告によると Codex の notify 設定は完了したターンしか対象にしないので、承認にはフックを使ってください。
スマホからコマンドを承認しても安全ですか?
安全性は経路とあなたの注意力次第です。推測できないか認証付きの ntfy トピックを使い、承認する前にコマンド全体を読み、シェルコマンドへの包括的な「常に許可」ルールを避け、作り直せるマシンでエージェントを root 以外のユーザーとして動かしてください。

変更点

  • — 初版を公開。Remote Control とフックの挙動は Anthropic と OpenAI のドキュメントで確認しました。リポジトリの詳細とデフォルト値は、この日の各プロジェクトの README に基づきます。

権限の確認をもう見逃さない

すべてのサーバーのすべてのエージェントについて、通知から許可や拒否を。iOS と Android に対応。

Download Maude on the App Store Get Maude on Google Play