Approve Claude Code actions from your phone (cron agents included)
Updated July 2026 · by the UseFrame team
Claude Code's built-in permission prompts are good — when you're sitting at the terminal. The moment an agent runs unattended (a cron routine, a CI job, a long background task), those prompts either block forever or get pre-approved away with permissive settings, which quietly removes the safety layer exactly when you can't watch.
The pattern: gate in the tool layer, decide on your phone
What you want is a tool the agent must call before irreversible actions, that blocks until you decide — from wherever you are. The minimal wiring with UseFrame's HTTP API, pasted into CLAUDE.md or the agent's instructions:
Before any irreversible action (external sends, deletes, deploys, purchases):
1. POST https://api.useframe.app/v1/requests
Authorization: Bearer <your key>
{"action": "one line", "context": "why + what it affects"}
2. Poll GET /v1/requests/<id> every ~10s until status != "pending".
3. Proceed only on "approved".
The notification arrives as a push via ntfy (free app, no account) or sits in a web inbox you can bookmark on your phone's home screen. Approve/deny is one tap; every decision is logged and single-use.
Two honest caveats
- A prompt is advice, not enforcement. A model can forget instructions. For hard enforcement, wire the check into a pre-action hook in your harness so the tool call is mechanically required — the same API works from a hook script.
- Set timeouts deliberately. If you sleep through a request, it expires (default 60 minutes) and the agent should treat that as a "no". Design your agent's fallback for expiry, not just denial.
When you don't need any of this
Purely interactive sessions (harness prompts are fine), read-only agents (nothing irreversible to gate), or teams with review workflows (look at gotoHuman/HumanLayer at $99+/mo). The one-person fleet running unattended is who this page is for.