Both are human-in-the-loop apps: an AI agent or automation pauses, the request reaches a person's phone, and the answer goes back. The difference is what goes back — and whether anything downstream can prove a human actually sent it.
A receipt signed twice — by a key held only on the approver's device, and by the platform.
A webhook callback carrying the response data. source
Yes. The receipt carries a hash of the action and its parameters; change one and verification fails.
No hash or digest field. The request's context is “any valid JSON object”. source
Webhooks are HMAC-SHA256 signed with a timestamp and a 300-second replay window. The receipt itself is verified separately.
Docs advise an optional IP allowlist and checking that required fields exist. No signature header or shared secret is documented. source
Offline, with the open-source @humanauth/verifier. Our uptime is not in your execution path.
Not documented.
Every approval: Face ID or Touch ID on Apple devices, fingerprint or face unlock on Android.
Not mentioned in the docs. Account-security advice is strong passwords and two-factor authentication. source
iPhone and iPad, Android, and a Mac menu-bar app.
iPhone and Android.
Approve, or deny with a reason. Quorum (N of M) and blind ballots for group decisions.
Free text, editable text, single and multi select, rating, number. source
MCP server, TypeScript SDK, n8n community node, HTTP API. No native Make or Zapier module.
Native n8n, Zapier and Make. MCP server and SDKs listed as coming soon. source
Yes — the platform deploys into your own Cloudflare account; the same apps and verifier work against it.
Not mentioned in the docs.
Hands-on: request access and we set you up.
Self-serve sign-up.
1,000 requests free every month, then $0.03 per request. Every feature on every plan.
5 requests free; $9.99 for 300, $29.99 for 1,000, $99.99 for 5,000 per month. source
| HumanAuth | HITL.sh | |
|---|---|---|
| What your system receives | A receipt signed twice — by a key held only on the approver's device, and by the platform. | A webhook callback carrying the response data. source |
| Tied to the exact action | Yes. The receipt carries a hash of the action and its parameters; change one and verification fails. | No hash or digest field. The request's context is “any valid JSON object”. source |
| Callback authenticity | Webhooks are HMAC-SHA256 signed with a timestamp and a 300-second replay window. The receipt itself is verified separately. | Docs advise an optional IP allowlist and checking that required fields exist. No signature header or shared secret is documented. source |
| Verify later, without the vendor | Offline, with the open-source @humanauth/verifier. Our uptime is not in your execution path. | Not documented. |
| Biometric on the decision | Every approval: Face ID or Touch ID on Apple devices, fingerprint or face unlock on Android. | Not mentioned in the docs. Account-security advice is strong passwords and two-factor authentication. source |
| Approver apps | iPhone and iPad, Android, and a Mac menu-bar app. | iPhone and Android. |
| Response types | Approve, or deny with a reason. Quorum (N of M) and blind ballots for group decisions. | Free text, editable text, single and multi select, rating, number. source |
| Agent and workflow integrations | MCP server, TypeScript SDK, n8n community node, HTTP API. No native Make or Zapier module. | Native n8n, Zapier and Make. MCP server and SDKs listed as coming soon. source |
| Self-hosting | Yes — the platform deploys into your own Cloudflare account; the same apps and verifier work against it. | Not mentioned in the docs. |
| Getting started | Hands-on: request access and we set you up. | Self-serve sign-up. |
| Pricing | 1,000 requests free every month, then $0.03 per request. Every feature on every plan. | 5 requests free; $9.99 for 300, $29.99 for 1,000, $99.99 for 5,000 per month. source |
HITL.sh's guidance on validating callbacks begins: “While HITL.sh callback URLs are set per-request and only known to you, you should still validate incoming webhooks” — and the validation it shows is an optional IP check and a test that the expected fields are present. So the protection is that the URL stays secret.
With HumanAuth, the service that executes the action checks a receipt before it runs. The receipt carries two Ed25519 signatures, one from a key that never leaves the approver's phone, and a hash of exactly what they approved. It verifies offline and is burned after one use. A leaked URL, a replayed message or an edited amount produces nothing that verifies.
HumanAuth is a human-in-the-loop app for AI agents with approver apps for iPhone, Android and the Mac. Like HITL.sh, it sends an agent's request to a person's phone. Unlike HITL.sh, each decision comes back as a receipt signed by the approver's device and bound to the exact action, which your backend verifies offline before acting.
A secret URL can leak — in logs, in a proxy, in a screenshot. If whatever arrives at that URL is believed, anyone who has it can approve anything. A receipt can only be produced by the approver's device key, and it only verifies for the action that was approved, so a forged or replayed message has nothing valid to carry.
When you need answers richer than approve or deny — ratings, numbers, edited text, multiple choice — or native Zapier and Make modules, or you want to sign up and start without talking to anyone.
Yes. The n8n-nodes-humanauth community node pauses a workflow until a human approves and passes the signed receipt to the next step.
The apps are free on the App Store and Google Play. Request access and we will wire your first approval with you.