Approve Claude Code Permission Prompts From Your Phone

Approve Claude Code permissions from your phone: compare Remote Control, DIY hooks with ntfy, and Coder IDE, and learn which requests to never approve blind.

The Coder IDE team · · 7 min read

A phone glowing on a dark kitchen counter showing an approval card, a thin golden line running from it to a laptop in the next room

You start Claude Code on a refactor, walk away to make lunch, and come back to find it has spent forty minutes waiting on a single "Do you want to proceed?" The model was ready. You were the bottleneck. This guide covers why Claude Code stops, three practical ways to answer it from your phone, and which requests you should never approve from a lock screen.

Why Claude Code stops and waits

Claude Code asks before it does anything with side effects. By default that means most shell commands outside a small built-in read-only set, file edits, and web fetches. It also stops when it has a question for you, or when it wants you to sign off on a plan before it starts.

That pause is the safety model working as designed. The permissions documentation lays out the tiers: reads inside your project are free, while Bash commands and edits need a yes. Permission modes such as acceptEdits loosen this, and allow rules in settings.json let you pre-approve specific commands.

The cost shows up when you leave the desk. A long task can stop on its third step and sit there until you return. Answering from your phone keeps the work moving without turning permissions off.

Option 1: Claude's built-in Remote Control

Anthropic's own Remote Control connects a Claude Code session running on your machine to claude.ai/code or the Claude mobile app. It has grown into a capable tool, and it deserves a fair look:

  • Start it with claude --remote-control, the /remote-control command, or claude remote-control for server mode, then scan the QR code.
  • Turn on "Push when actions required" in /config and permission prompts and questions arrive as push notifications.
  • A connected device shows the conversation and, in a git repository, a diff pane of your changes.

The limits are the ones the docs list. It needs a Pro, Max, Team or Enterprise plan, and API keys aren't supported. On Team and Enterprise an Owner has to switch it on first. Outside server mode, each interactive claude process carries one remote session, and the local process has to keep running.

If you use a Claude subscription and mostly work in one or two sessions at a time, Remote Control is a strong default and costs nothing extra.

Option 2: DIY hooks with ntfy or Telegram

Claude Code exposes a PermissionRequest hook, and developers have built small approvers on top of it. claude-remote-approver is a good example, with a write-up on dev.to. The hook posts the request to an ntfy topic, your phone shows a notification with Approve and Deny buttons, and the hook waits for your answer. If nothing arrives within the timeout, 120 seconds by default, it falls back to the normal prompt in the terminal.

This approach is free, works regardless of how you sign in to Claude, and is easy to read end to end. Plenty of people on Hacker News run a variant with Telegram or Pushover.

What it can't give you is context. A notification has room for a tool name and a truncated command. You can't open the files Claude has changed, scroll back through what it was trying to do, or check the state of the repository before you tap. You also configure each computer separately, and the topic name is effectively your password, so it needs to stay secret.

Option 3: Coder IDE approvals, with your editor one tap away

Coder IDE runs Microsoft's VS Code on your own computer and opens it on your phone, in a browser or in the Android app. On top of the editor, it sees every Claude Code session on your computers, whether it started in a terminal, in VS Code or in the background.

When a session needs approval, is waiting for you, or stops unexpectedly, you get a push notification. Open it and you see the full request, not a shortened preview, then approve or deny from your phone or a browser. On a Wear OS watch, the Android app lists pending requests while it's open and lets you allow short ones; longer ones ask you to review on your phone. Sessions from all your machines sit in one list, grouped by what needs you, so a request from your desktop and one from your laptop don't get lost in separate apps.

Claude keeps working on your computer while your phone sleeps or your connection drops. You can also reply to a session that's waiting on a question, or start a new one in any of your projects, and your computer picks it up while you're away.

See the context before you tap Approve

A permission prompt tells you what Claude wants to do next. It doesn't tell you whether the last ten steps were sensible. That's the part worth checking from your phone when the request matters.

In Coder IDE, a session's changes can be reviewed file by file. You can comment on any line and send all your comments back to Claude in one message, which is often better than a flat Deny because Claude learns what to fix. When reading isn't enough, Open in VS Code takes you to the exact file and line in the full editor, with your terminal right there if you want to run git status or the tests yourself. We go deeper on this in reviewing Claude Code's diffs on your phone.

If you can't see what a command will touch, the right answer is Deny or "later", not Approve.

Safe defaults: what to approve from a phone

Not every request deserves the same attention. A rough split that works for most projects:

Request From your phone? Why
Run tests, linters, type checks Yes Read-mostly and easy to undo
Install a dependency the plan already named Usually Check the package name for typos first
Edit files inside the project Yes, after a quick look at the diff Git makes this reversible
Delete files, rm -rf, reset or force-push Wait for a bigger screen Hard to undo, easy to misread
Database migrations, deploys, anything touching production Wait The blast radius isn't on your machine
Reading .env or credential files Deny unless you expected it Secrets don't belong in a transcript

The best way to make phone approvals meaningful is to stop the boring ones from reaching your phone at all. Pre-approve safe commands and deny the dangerous ones in .claude/settings.json:

{
  "permissions": {
    "allow": ["Bash(npm run test *)", "Bash(npm run lint *)", "Bash(git diff *)"],
    "deny": ["Bash(git push *)", "Read(./.env)"]
  }
}

With the noise gone, the notifications that do arrive are the decisions that actually need you. That makes it far less likely you'll tap Approve out of habit.

Two more habits help. Keep sessions in separate projects so one approval can't collide with another session's work. And when a request is ambiguous, reply with a question instead of a yes or no. Claude will explain, and you lose ten seconds instead of an afternoon.

Which option fits you

All three approaches keep Claude running on your own machine. The difference is how much you can see and how many machines you're keeping track of:

  • Remote Control if you're on a Claude subscription, work in one session at a time, and want zero setup beyond a QR code.
  • A DIY hook if you want something tiny and free, and you're comfortable approving from a one-line preview.
  • Coder IDE if you run Claude Code on more than one computer, want every session in one list, and want the full editor, the diffs and the terminal behind each approval.

If you're still choosing how to reach Claude from your phone in the first place, our comparison of Remote Control, SSH and a full IDE walks through the tradeoffs. For the bigger habit change of starting work and walking away, see an async AI coding workflow. Every new device has to be approved by you before it can reach your machine, and our security page explains how.

Start free. The free plan covers one computer, and Pro adds unlimited devices.

Claude CodeAI agentsSecurityAndroidWorkflow