Claude Code は permission prompt を表示する直前に PermissionRequest hook を実行し、その hook 自体が許可・拒否を返せます。そのため、Claude Code の権限リクエストをスマートフォンから承認できます。リクエストをスマートフォンに送り、タップを待ってから allow または deny を返すツールを使えば、どこからでも応答できます。Claude Code Notifier は、Mac・Windows・Linux 向けの小さなコマンドラインツール ccn と、iPhone または Android アプリでこれを実現します。
01permission プロンプトで作業が止まる理由
デフォルトの permission モードでは、Claude Code はほとんどのシェルコマンドの実行、ファイルの編集、Web ページの取得の前に確認を求めます。プロンプトは誰かが答えるまで terminal で待ち続けます。コーヒーを淹れに行っている間、タスク全体がその質問で止まり、戻ってきて初めて気づくことになります。
回避策は3つあります。
- 承認の頻度を減らす。信頼できるコマンドに allow ルールを追加するか、より緩いモードを使います。定型作業に向いており、詳しくはClaude Code の permission モード解説で説明しています。
- 通知を受けてから戻る。通知 hook はプロンプトが待っていることを知らせてくれますが、結局キーボードの前に戻る必要があります。
- リモートで回答する。
PermissionRequesthook が質問をスマートフォンに届け、あなたの回答を Claude Code に返します。
このガイドでは 3 つ目の方法を扱います。
02PermissionRequest hook が代わりに回答する仕組み
Claude Code は、ツール呼び出しに許可の判断が必要になると PermissionRequest を発火します。hook は標準入力から JSON を受け取ります。そこには tool_name と tool_input(Bash コマンドなど)、さらに Claude Code が保存を提案するルールの一覧である permission_suggestions(省略可)が含まれます。
hook は次のような JSON を出力して回答します。
{
"hookSpecificOutput": {
"hookEventName": "PermissionRequest",
"decision": {
"behavior": "allow"
}
}
}
behavior は allow か deny です。拒否の場合は、理由を Claude に伝える message や、Claude を完全に停止させる interrupt: true を追加できます。許可の場合は、updatedPermissions で許可ルールを適用し、同じ確認を繰り返さないようにできます。hook が何も返さなければ、Claude Code は通常のプロンプトを表示します。
つまり、リモート承認 hook の役割は 3 つです。リクエストを目に入る場所に送ること、回答を待つこと、そして hook がタイムアウトする前に正しい JSON を出力することです。全フィールドの一覧と動作するスクリプトは hook から許可リクエストに回答するにあります。
hook の登録
hook は ~/.claude/settings.json(全プロジェクト共通)または .claude/settings.json(プロジェクト単位)に記述します。
{
"hooks": {
"PermissionRequest": [
{
"matcher": "*",
"hooks": [
{ "type": "command", "command": "/path/to/your-approval-script" }
]
}
]
}
}
matcher はツール名でフィルタするので、"Bash" を指定するとシェルコマンドだけがスマートフォンに送られます。コマンド hook のデフォルトのタイムアウトは 600 秒で、これが hook が待てる時間の上限になります。
03自作する場合
自作することも可能です。よくある構成では、リクエストを ntfy などの push サービスに送り、小さな Web エンドポイントを呼び出す 2 つのアクションボタンを付けておき、回答が届くかタイマーが切れるまで hook がそのエンドポイントをポーリングします。送信側については ntfy で Claude Code の push 通知を受け取るを参照してください。
手間がかかるのはエッジケースです。
- キーボードの前にいるとき。hook が常にスマートフォンからの回答を待つと、その間ターミナルで回答できません。良い hook は在席を検知して身を引きます。
- タイムアウト。hook は Claude Code のタイムアウトより前に待機をやめ、きれいにフォールバックする必要があります。
- 信頼性。コールバック用エンドポイントにアクセスできる人なら誰でも、あなたのコンピューター上のコマンドを承認できてしまいます。認証が必須です。
- 複数セッション。各リクエストを正しいセッションに届け、正しいセッションに返す必要があります。
作るのが楽しいなら、週末のプロジェクトにぴったりです。今すぐ使いたいなら、既製のツールを使えば手間が省けます。
04Claude Code Notifier を使う
Claude Code Notifier は TouchTap Ltd が開発する独立したツールで、Anthropic が開発したものでも、提携しているものでもありません。Mac、Windows、Linux 向けの無料コマンドラインツール ccn と、iPhone および Android 向けのスマートフォンアプリの 2 つで構成されています。
1. ccn をインストールする
Mac と Linux の場合:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Windows の場合は PowerShell で実行します(Windows 対応はベータ版です)。
irm https://claudecodenotifier.com/install.ps1 | iex
Homebrew、npm、プラグインでのインストール方法は ccn のページに記載しています。インストールすると、~/.claude/settings.json に ccn hook を実行する hook エントリが 7 つ追加され、ファイルのバックアップも保存されます。そのうちの 1 つが PermissionRequest hook です。ccn は Claude Code から呼ばれると数ミリ秒だけ動作して終了します。バックグラウンドで常駐するものはなく、IDE のターミナルを含むどのターミナルでも動作します。
2. スマートフォンをペアリングする
ccn pair を実行して QR コードをスキャンするか、アプリに表示される 6 桁のコードを入力します。OS ごとの詳しい手順は スマートフォンを Claude Code に接続するを参照してください。
3. 通知から回答する
離席中に Claude が許可を必要とすると、実行しようとしているコマンドなど、何をしたいのかがスマートフォンに表示されます。次の操作ができます。
- 1 回だけ許可:この呼び出しのみ許可します。
- セッション中は許可:そのセッション内では同種のリクエストを再確認しません。
- 拒否:Claude は拒否されたことを把握したうえで作業を続けます。
hook があなたの回答を返し、Claude が処理を続行します。
デスクにいるときの動作
ccn はあなたが在席しているかを確認します。直近 30 秒以内に入力があれば待機は行わず、ターミナルが通常どおり確認し、スマートフォンには通知が届く程度です。離席中であれば、ターミナルは設定した上限時間までスマートフォンからの回答を待ち、キーボードに触れた瞬間に待機をやめます。そのため、いつでも近いほうで回答できます。
上限時間は設定で変更できます。
ccn config set hold_ceiling_seconds 900
30〜3600 秒の範囲で指定でき、デフォルトは 600 秒です。30 秒の判定時間は presence_threshold_seconds で変更できます。ほとんどの設定は、スマートフォンアプリからコンピューターごとに変更することもできます。
動作を確認する
ccn doctor # checks hooks, credentials, server connection and presence detection
ccn test # sends a test notification
スマートフォンアプリは無料でダウンロードできますが、利用にはサブスクリプションまたは買い切りの購入が必要です。料金をご覧ください。スマートフォンがなくても、Claude が許可を必要とした際には ccn が無料でコンピューターにデスクトップ通知を表示します。
05承認の回数そのものも減らす
リモート承認は、適切な allow ルールと組み合わせると最も効果的です。1日に20回も npm test を承認しているなら、Bash(npm test *) のようなルールを permissions.allow に追加し、スマートフォンは確認が必要なリクエストのためにとっておきましょう。小さな画面で承認する前に、必ずコマンドを読んでください。確認すべき点は Claude Code の操作をスマートフォンから承認しても安全かで解説しています。
06よくある質問
追加のツールなしで Claude Code にスマートフォンで許可を求めさせることはできますか?
Anthropic の Remote Control 機能を使うと、対応プランでは Claude アプリや claude.ai/code からローカルセッションを続けられ、プロンプトへの応答もできます。Claude Code Notifier のような hook ベースのツールは仕組みが異なり、Remote Control を有効にする必要がなく、あなたの対応が必要な場面だけを送ります。両者の比較はスマートフォンから Claude Code を使うをご覧ください。
スマートフォンで応答しなかった場合はどうなりますか?
ccn では、hook は hold_ceiling_seconds の設定値まで待機します。その前に戻ってキーボードに触れると待機が止まり、terminal のプロンプトで応答できます。
「セッション中は許可」を選ぶと settings.json は変更されますか?
いいえ。そのセッションにのみ適用されます。恒久的に許可したい場合は、/permissions または設定ファイルに allow ルールを追加してください。
Windows や Linux でも使えますか?
はい。ccn は Mac、Windows、Linux で動作し、スマートフォンアプリはそのすべてに対応しています。Windows 対応はベータ版です。
複数のコンピューターで使えますか?
はい。1台のスマートフォンを複数のコンピューターとペアリングでき、1台のコンピューターに複数のスマートフォンを登録することもできます。ペアリング済みのスマートフォンの一覧表示や解除は ccn devices で行えます。