The approval layer
for AI agents.

Agents can finally do real work. The bottleneck is what we let them do. withHuman lets you put your most consequential agent actions behind human approvals, so your agents can do real work.

Framework-agnostic · Open source · Built on open standards

Demo

See the flow.

Watch an agent hit a consequential call, then be the human who decides whether it happens.

Northwind Supportsupport-agent · online
intercepted
stripe.refundHeld
routed
#support-approvals
rule: refunds over $25
paged
SASam Alvarez · on call
Notified via Slack and push

withHuman holds the call while the on-call reviewer is paged.

support-agentwants to callstripe.refund
just now · run #4821
Needs review

Refund the duplicate $49.00 charge for jane@northwind.com from Tuesday's outage.

charge
ch_3QK9rN2eZvKYlo2C
amount
$49.00
reason
duplicate_charge
  1. 01 Agent chat
  2. 02 Intercept and route
  3. 03 Human decision
  4. 04 Outcome
Features

Everything between the ask and the decision.

AAP handles the wire. withHuman handles the people: getting each request to the right reviewer, wherever they are, and keeping the receipts.

routing

The right reviewer, every time

Route requests by agent, tool, or payload. Escalate when nobody answers, reassign when someone is away, and chain approvals for the big stuff.

  • Route by agent, tool, or payload
  • Escalation and away reassignment built in
  • Chained approvals for the serious actions
audit log

Every decision on the record

An immutable log of every request, decision, note, and reviewer identity. When someone asks who approved this, you know.

  • Append-only, immutable history
  • Reviewer identity on every decision
  • Notes and full payloads kept with the request
destinations

Meet reviewers where they are

Requests reach reviewers on the surfaces they already watch. Decisions take seconds when the request finds you.

  • Slack, right in your approvals channel
  • iPhone and Android apps with push
  • Email and webhooks for everything else
Use cases

For the actions you can't take back.

Let agents draft everything and ship nothing until someone accountable has looked.

Integration

One tool call. Any framework.

If your agent can call a tool, it can wait for a human. No SDK lock-in and no workflow rewrite. Native integrations for Claude Code, Codex, OpenAI Agents SDK, Claude Agent SDK, LangChain and raw MCP calls.

.mcp.json
Claude Code
$claude mcp add withhuman -- npx @withhuman/mcp
{
  "mcpServers": {
    "withhuman": {
      "command": "npx",
      "args": ["@withhuman/mcp"]
    }
  }
}
Open standard

No lock-in. It's a protocol.

Your agents speak to withHuman via AAP, the Agent Approval Protocol. AAP is an open spec designed by withHuman for pausing an agent and returning a human decision. The protocol and the withHuman core are open source. Your integration belongs to the protocol, not to us.

RFC

Built in the open

The spec evolves in public: issues, proposals, and breaking changes all happen where you can see them and argue back.

aap/request

One integration, any provider

Agents and frameworks integrate against AAP, not against withHuman. We aim to be the best provider, never the only one.

open source

Leave whenever

The spec, SDKs, adapters, and conformance tests are open source. Swap providers without rewriting a single agent.

withhuman/core

Self-hostable

The withHuman core is open source: the queue, the audit trail, and the web UI. Run it on your own infrastructure, or let the hosted tier run it for you.

The approval layer for AI Agents.

We're onboarding teams now. Get early access and put your agents to work, accountably.