Skip to content

Stop Babysitting Claude Code: Approve Tool Calls From Your Phone

Claude Code's permission system keeps you safe but keeps you stuck at your desk. Here's how to approve tool calls from your phone without disabling permissions entirely.

MobileCLI Team 6 min read
claude codetool callspermissionsproductivityapprovals

You give Claude Code a meaty task. Refactor this module. Write tests for this API. Debug why CI is failing. It gets to work — reading files, reasoning through the problem, drafting changes. Then it stops.

Claude wants to run: npm test
Allow? (1=Yes, 2=Yes always, 3=No)

And it waits. It will wait forever. If you’re at your desk, you glance at the terminal, press 1, and it continues. If you’re in a meeting, getting coffee, eating lunch, or doing literally anything else — it just sits there. Your AI agent is blocked on a single keystroke that you’re not around to provide.

This is the babysitting problem.

Why Permissions Exist

Claude Code’s permission system isn’t bureaucratic overhead. It’s a safety mechanism. The agent can run arbitrary shell commands, edit any file in your project, make network requests, and install packages. Without guardrails, a misunderstood instruction could delete files, push broken code, or run destructive commands.

The permission prompts give you a checkpoint: here’s what I want to do, do you approve? That’s valuable. The problem isn’t the permission system — it’s that it requires you to be physically present at your terminal.

The Temptation: Skip Permissions Entirely

Claude Code offers a --dangerously-skip-permissions flag. The name is not subtle. It tells the agent to execute everything without asking — file edits, shell commands, network access, all of it.

# Don't do this with code you care about
claude --dangerously-skip-permissions

For throwaway experiments or sandboxed environments, this can be fine. For production code, your real project, or anything you’d be upset about losing — it’s a gamble. One misinterpreted instruction and Claude Code could overwrite files, run the wrong migration, or push to the wrong branch without ever asking “are you sure?”

You can also configure allowlists in Claude Code’s settings to auto-approve specific tools or commands. This helps, but it’s coarse-grained. You end up either auto-approving too much or still getting interrupted for routine actions.

The Middle Ground

The real question is: can you keep the permission system active but not be chained to your desk?

What if, when Claude Code hits a permission prompt, you got a notification on your phone? And what if you could see exactly what it wants to do — the command, the file, the diff — and approve or reject it with a single tap?

That’s what MobileCLI does.

How It Works

MobileCLI is a self-hosted daemon that wraps your Claude Code session. It captures the terminal output, streams it to your phone over WebSocket, and sends push notifications when the agent needs your input.

The Approval Flow

  1. Claude Code reaches a permission prompt — it wants to run a command, edit a file, or access the network.
  2. MobileCLI detects the prompt and sends a push notification to your phone. This works even if the app is closed or your phone is locked.
  3. You open the notification and see the full terminal context. Not just “Claude wants to run a command” — you see the actual command, the surrounding output, and what Claude Code is trying to accomplish.
  4. You tap a numbered button to respond:
    • 1 = Yes — approve this specific action
    • 2 = Yes, always — approve this and similar future actions (maps to Claude Code’s “always allow” option)
    • 3 = No — reject the action
    • Esc = Interrupt — stop the agent entirely

These buttons correspond directly to Claude Code’s native prompt options. MobileCLI isn’t inventing its own permission layer — it’s giving you a mobile interface to the one that already exists.

What You See

The app isn’t just showing you a notification with a yes/no button. It renders the live terminal stream — the same output you’d see sitting at your desk. You can scroll back through Claude Code’s recent work, see which files it’s modified, read its reasoning, and make an informed decision about the approval.

This is the difference between “blindly approve” and “approve with context.”

A Real Workflow

Here’s what this looks like in practice:

9:00 AM — You start a Claude Code session to implement a new API endpoint. You launch it through MobileCLI:

mobilecli claude

9:02 AM — Claude Code starts reading your codebase, understanding the existing patterns, and drafting the implementation. You head to a standup meeting.

9:15 AM — Your phone buzzes. Push notification: Claude Code wants to create a new file src/routes/users.ts. You pull up the notification, see the file contents in the terminal stream, and tap 1 to approve.

9:18 AM — Another notification. Claude Code wants to run npm test. You tap 1. Tests pass.

9:23 AM — Claude Code wants to modify src/routes/index.ts to add the new route. You see the diff in the terminal output. Looks correct. Tap 1.

9:25 AM — You’re back at your desk. Claude Code has finished. The feature is implemented, tested, and ready for review. You were in a meeting for most of it.

Without MobileCLI, Claude Code would have stopped at 9:15 AM and waited until you got back to your desk. Twenty minutes of agent compute time, wasted.

Getting Started

Three commands:

# Install MobileCLI
curl -fsSL https://mobilecli.app/install.sh | bash

# Start Claude Code through MobileCLI
mobilecli claude

Then open the MobileCLI iOS app, pair with your workstation, and you’re set. The daemon connects over your local network — no cloud, no account, no data leaving your machine.

For remote access (outside your LAN), set up Tailscale on both devices. MobileCLI works over any network path that can reach your workstation.

The free tier includes terminal streaming, push notifications, tool call approvals, and session management. That covers this entire workflow.

Keep the Guardrails, Lose the Leash

Claude Code’s permission system is good. It prevents real mistakes. The problem was never the prompts themselves — it was the requirement to be physically present for every one of them.

MobileCLI keeps the safety model intact. Every approval still requires a conscious decision from you. You still see what the agent wants to do. You still choose yes or no. You just don’t have to be sitting at your desk to do it.

Stop babysitting. Start approving from your phone.