<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt" -->

---
title: Approve your agents from your phone | daily.dev
description: A tutorial from AgentField shows how to let an AI agent pause on a risky action and have the human approve or reject it from a phone notification, with one...
canonical: https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Approve your agents from your phone | daily.dev
og:description: A tutorial from AgentField shows how to let an AI agent pause on a risky action and have the human approve or reject it from a phone notification, with one...
og:url: https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt
og:image: https://api.daily.dev/og/posts/TdMkJtxmT.png
og:image:alt: Approve your agents from your phone
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve your agents from your phone

**[AgentField.ai](https://daily.dev/sources/agentfield)** · 10 min read · 0 upvotes · 0 comments

## Summary

A tutorial from AgentField shows how to let an AI agent pause on a risky action and have the human approve or reject it from a phone notification, with one tap. The pattern is notify-pause-resolve: the reasoner pushes a push notification (via ntfy.sh) before calling app.pause(), which blocks the execution until a signed HMAC webhook POST resolves it. A twenty-line FastAPI handler signs the resolution request on the user's behalf since AgentField's control plane has no built-in approval UI. Full code for the reasoner, the signing handler, and manual curl-based testing is provided, along with notes on HMAC signature correctness and durability of the pause across restarts.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://agentfield.ai/blog/approve-from-your-phone>

## Questions this post answers

### How do I let a human approve an AI agent's paused action from their phone?

Send a push notification containing an approval link right before the agent pauses, since the pause itself sends nothing outbound. Use a plain-HTTP push service like ntfy.sh to post the notification, then call a blocking pause function such as app.pause() that holds the execution as a 'waiting' row until a signed HTTP POST resolves it.

_Developers wiring phone-based approvals into agent pipelines track implementation patterns like this on daily.dev._

### How do I secure the webhook endpoint that resolves a paused AI agent approval?

Require an HMAC-SHA256 signature over the raw request body, keyed by a shared secret, sent in a header such as X-Webhook-Signature with the format sha256=<hex digest>. The endpoint should reject unsigned or incorrectly signed requests with 401, and return 503 if no secret has been configured, ensuring only a holder of the secret can resolve the wait.

_Teams securing agent approval webhooks can follow ongoing HMAC and API security practices via daily.dev._

### Why would an HMAC signature mismatch when resolving a webhook approval request?

The signature will not match if the body is re-serialized between signing and sending, because JSON re-serialization can change whitespace or key order and thus change the exact bytes being hashed. The fix is to build the body string once and sign and send that identical byte sequence, without re-encoding it in between.

_Developers debugging webhook signature mismatches often check real-world gotchas like this on daily.dev._

## Similar posts on daily.dev

- [Building Secure AI Agents with Microsoft Agent Framework and Auth0: Human-in-the-Loop Approval](https://daily.dev/posts/building-secure-ai-agents-with-microsoft-agent-framework-and-auth0-human-in-the-loop-approval-ajzmal9kz) · Auth0 · 2 upvotes · 0 comments
- [Building a ‘Human-in-the-Loop’ Approval Gate for Autonomous Agents](https://daily.dev/posts/building-a-human-in-the-loop-approval-gate-for-autonomous-agents-krdljp98i) · Machine Learning Mastery · 1 upvotes · 0 comments
- [One Agent Workflow That Keeps Human Review in the Loop](https://daily.dev/posts/one-agent-workflow-that-keeps-human-review-in-the-loop-idljoj6z9) · Medium · 0 upvotes · 0 comments
- [Speed is no longer a selling point for AI agents, caution is](https://daily.dev/posts/speed-is-no-longer-a-selling-point-for-ai-agents-caution-is-ykpuc2bbl) · The Next Web · 1 upvotes · 1 comments

---

Tags: [#python](https://daily.dev/tags/python), [#ai-agents](https://daily.dev/tags/ai-agents)

[View this post on daily.dev](https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Approve your agents from your phone","url":"https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt"},"datePublished":"2026-10-02T17:45:21.137Z","dateModified":"2026-10-03T17:36:49.604Z","description":"A tutorial from AgentField shows how to let an AI agent pause on a risky action and have the human approve or reject it from a phone notification, with one...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d69f04047c95b6aaf77cc199166175f5?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d69f04047c95b6aaf77cc199166175f5?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"AgentField.ai","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"AgentField.ai","logo":"https://media.daily.dev/image/upload/s--VLFHaedl--/f_auto/v1791063152/squads/33beeb91-1f14-4d9b-9cf8-db7d9f69160a?_a=BAMAMicg0","url":"https://daily.dev/squads/agentfield"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,ai-agents","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"AgentField.ai","item":"https://daily.dev/squads/agentfield"},{"@type":"ListItem","position":3,"name":"Approve your agents from your phone"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/approve-your-agents-from-your-phone-tdmkjtxmt#faq","mainEntity":[{"@type":"Question","name":"How do I let a human approve an AI agent's paused action from their phone?","acceptedAnswer":{"@type":"Answer","text":"Send a push notification containing an approval link right before the agent pauses, since the pause itself sends nothing outbound. Use a plain-HTTP push service like ntfy.sh to post the notification, then call a blocking pause function such as app.pause() that holds the execution as a 'waiting' row until a signed HTTP POST resolves it. Developers wiring phone-based approvals into agent pipelines track implementation patterns like this on daily.dev."}},{"@type":"Question","name":"How do I secure the webhook endpoint that resolves a paused AI agent approval?","acceptedAnswer":{"@type":"Answer","text":"Require an HMAC-SHA256 signature over the raw request body, keyed by a shared secret, sent in a header such as X-Webhook-Signature with the format sha256=<hex digest>. The endpoint should reject unsigned or incorrectly signed requests with 401, and return 503 if no secret has been configured, ensuring only a holder of the secret can resolve the wait. Teams securing agent approval webhooks can follow ongoing HMAC and API security practices via daily.dev."}},{"@type":"Question","name":"Why would an HMAC signature mismatch when resolving a webhook approval request?","acceptedAnswer":{"@type":"Answer","text":"The signature will not match if the body is re-serialized between signing and sending, because JSON re-serialization can change whitespace or key order and thus change the exact bytes being hashed. The fix is to build the body string once and sign and send that identical byte sequence, without re-encoding it in between. Developers debugging webhook signature mismatches often check real-world gotchas like this on daily.dev."}}]}
```

