Claude Code の許可を iPhone で承認する方法と通知の設定

公開日:2026-11-08

Claude Code の許可の確認をスマホで受けるには、Anthropic の Remote Control で Claude アプリから答えるか、PreToolUse フックで外部のアプリに承認を求めます。Notification フックで送る通知は知らせるだけで、そこから許可は返せません。Nodd の nodd hook は PreToolUse フックとして iPhone に承認を求め、Face ID で承認されたときだけ実行を許可し、却下や期限切れ、通信の失敗はすべて拒否にします。

Claude Code が止まる場面

Claude Code は、許可が必要なツールを使う前に確認の画面を出し、答えるまで待ちます。席を離れているあいだにこの画面が出ると、戻るまで作業が進みません。長い作業を任せて別のことをしたいときほど、この待ち時間が目立ちます。

外から知りたい場面は大きく 2 つです。

前者は「通知」と「答えを返す経路」の両方が要ります。後者は通知だけで済みます。どちらを解きたいかで、選ぶ方法が変わります。

Claude Code 自身の仕組み

許可のモードと許可のルール

まず、そもそも確認を出さなくてよい操作を減らします。Claude Code には許可のモードがあり、公式の説明では次のように分かれています。

defaultツールを初めて使うときに確認します。画面では Manual と表示されます
acceptEdits作業ディレクトリ内のファイルの編集と、よく使うファイル操作のコマンドを自動で受け入れます
plan読み取りと調査だけを行い、ソースは編集しません
auto決まった確認を出さず、シェルのコマンドなどの前にバックグラウンドの分類器が依頼の内容に合うかを確かめます
dontAsk確認が必要な操作はすべて自動で拒否します。許可のルールで認めた操作は動きます
bypassPermissions確認を飛ばします。公式の説明は、コンテナや VM のような隔離した環境だけで使うよう求めています

設定ファイルの permissions で、確認なしに通すコマンドと、常に拒否するコマンドを決められます。ルールは deny、ask、allow の順に評価され、先に合ったものが使われます。

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git commit *)"
    ],
    "deny": [
      "Bash(git push *)"
    ]
  }
}

安全な操作を allow に入れ、危ない操作を deny に入れると、確認の回数そのものが減ります。ただし、残った確認には誰かが答える必要があります。

Remote Control とプッシュ通知

Anthropic の Remote Control は、手元の PC で動いている Claude Code のセッションを、iPhone の Claude アプリや claude.ai/code から操作する機能です。claude remote-control で始めるか、開いているセッションで /remote-control を実行します。/config で「Push when actions required」を有効にすると、許可の確認や質問がプッシュ通知で届き、そのままアプリから答えられます。

会話の続きもスマホから送れるので、claude.ai のサブスクリプションで Claude Code を使っているなら、まず試す価値があります。公式の説明では、Pro、Max、Ultra、Team、Enterprise のプランで使え、API キーでは使えません。Team と Enterprise では Owner が管理画面で有効にする必要があります。PC は起動したまま、Claude Code も動かしたままにします。許可の確認は答えるまで開いたままで、期限で自動的に拒否する仕組みではありません。

チャンネルの許可の中継

チャンネルは、Telegram、Discord、iMessage などから動いているセッションへメッセージを送る機能で、研究プレビューです。許可の中継に対応したチャンネルは、確認を転送して離れた場所から承認や拒否を返せます。公式の説明は、チャンネルで返信できる人は誰でもツールの使用を承認できるので、許可リストには信頼できる相手だけを入れるよう注意しています。

フックで通知だけ送る

フックは、Claude Code の決まった時点でコマンドを動かす仕組みです。Notification フックは Claude Code が通知を出すときに動き、permission_prompt(許可の確認が約 6 秒待っている)や idle_prompt(返答を終えて約 60 秒、入力がない)で絞り込めます。Stop フックは Claude が返答を終えるたびに動きます。

標準入力に JSON が渡るので、好きな通知サービスへ転送できます。次は ntfy へ送る例です。ntfy.sh のトピック名は推測されると誰でも読めるので、長く推測しにくい名前にします。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [{"type": "command", "command": "jq -r .message | curl -s -H 'Title: Claude Code' -d @- https://ntfy.sh/YOUR-HARD-TO-GUESS-TOPIC"}]
      }
    ]
  }
}

この方法は手軽で、サービスを選びません。ただし公式の説明のとおり、Notification フックは通知を止めたり変えたりできません。スマホで内容を見ても、許可を返すには PC の前に戻る必要があります。

「終わったら知りたい」だけなら、Stop よりも idle_prompt が向いています。Stop は返答のたびに動くので、席にいるあいだも鳴ります。Nodd でも nodd send を使えば同じことができます。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "idle_prompt",
        "hooks": [{"type": "command", "command": "nodd send 'Claude Code: 入力待ちです' --level low"}]
      }
    ]
  }
}

方法の比較

許可のルールとモード確認そのものを減らします。残った確認には PC の前で答えます
Remote ControlClaude アプリから許可に答え、会話も続けられます。claude.ai のプランが必要で、API キーでは使えません。確認に期限はありません
チャンネルの許可の中継Telegram などから許可を返せます。研究プレビューで、Bun とプラグインの設定が要ります
Notification フックと通知サービスどのサービスにも送れます。知らせるだけで、許可は返せません
PreToolUse フックと NoddFace ID で承認したときだけ実行します。応答期限があり、期限切れと失敗は拒否です。認証の方法を問わず使えます。会話の続きは送れません

nodd hook で iPhone から承認する

PreToolUse フックはツールが動く前に呼ばれ、標準出力の JSON で allow か deny を返せます。deny の理由は Claude に渡ります。Nodd の nodd hook はこの仕組みを使い、実行の前に iPhone へ承認を求めます。

設定

CLI を入れて、ログインします。nodd login の QR は、アプリの「設定 → CLI にログイン」で読み取ります。

brew install blipdrop/tap/nodd
nodd login

Claude Code の設定ファイル(たとえば ~/.claude/settings.json やプロジェクトの .claude/settings.json)に次を追加します。MCP とフックのページと同じ設定です。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{"type": "command", "command": "nodd hook", "timeout": 1260}]
      }
    ]
  }
}

matcher に合うツールは、実行のたびに承認を求めます。通知は approval、level: high で届き、見出しは Claude Code: ツール名、本文は実行するコマンドです。Bash 以外のツールではツールの入力が本文になり、1,000 文字で切ります。

結果の扱い

承認allow。通常は Claude Code の確認の画面を出さずに実行します
却下deny。却下の理由があれば Rejected in Nodd: 理由 としてエージェントへ渡ります
期限切れ、取り下げ、失敗deny
通信の失敗、確認できない状態deny。失敗はすべて拒否の出力にします

却下の理由は 200 文字まで書けます。「本番ではなくステージングで」のように書くと、Claude はその理由を読んで次の手を変えられます。

応答期限とフックの timeout

応答期限の既定は 300 秒です。nodd hook は期限の 15 分後まで結果を待つので、既定では合計 1,200 秒です。Claude Code のフックの timeout はこれより長くします。上の 1,260 秒はその値です。期限を延ばすときは同じだけ増やします。600 秒にするなら次のとおりです。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{"type": "command", "command": "nodd hook --expires-in 600", "timeout": 1560}]
      }
    ]
  }
}

Claude Code は timeout に達したフックを打ち切り、その出力を捨てます。公式の説明では、打ち切られた PreToolUse フックはツールを止めず、通常の許可の流れに戻ります。timeout が短いと、nodd hook が拒否を出す前に打ち切られるので注意します。

承認を求めるコマンドを絞る

Bash をすべて承認にすると、ls のような操作でも通知が届きます。Claude Code のフックには、許可のルールと同じ書き方で対象を絞る if があります。次は git push だけに承認を求める例です。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{"type": "command", "if": "Bash(git push *)", "command": "nodd hook", "timeout": 1260}]
      }
    ]
  }
}

公式の説明では if はできる範囲の絞り込みで、コマンドを判別できないときはフックを動かします。一方で git -C . push のように書き方が違うコマンドは合いません。確実に止めたい操作は、if で絞らずに承認を求めるか、deny のルールで拒否します。

流れの図は応用例にもあります。

注意点

よくある質問

Claude Code の許可の確認をスマホから答えられますか。
答えられます。claude.ai のプランなら Remote Control で Claude アプリから答えられます。PreToolUse フックを使えば、Nodd のような外部のアプリで承認か却下を返せます。
Notification フックで送った通知から許可を返せますか。
返せません。Notification フックは通知を止めたり変えたりできないので、知らせるだけです。答えを返すには Remote Control か PreToolUse フックを使います。
iPhone で応答しなかったらどうなりますか。
nodd hook は応答期限が過ぎると拒否を返し、コマンドは実行されません。既定の応答期限は 300 秒で、--expires-in で変えられます。
API キーや Amazon Bedrock で Claude Code を使っていても使えますか。
nodd hook は Claude Code の設定ファイルのフックとして動くので、Claude Code の認証の方法には左右されません。Remote Control は claude.ai のアカウントが必要で、API キーでは使えません。
無料プランで使えますか。
使えます。無料プランは同時の応答待ちが 3 件までです。複数のエージェントを同時に動かすなら Team が向いています。

Nodd は、スクリプトや CI、AI エージェントからの確認を iPhone に届け、Face ID での承認を送った側のプログラムへ返すアプリです。無料プランがあります。

関連する記事