withHuman is the approval layer for AI agents. It lets teams put their most consequential agent actions behind human approvals, so their agents can do real work while someone accountable stays in the loop. Rather than blocking agents entirely or letting them run unchecked, withHuman intercepts the tool calls an agent wants to make and holds the risky ones until a person has looked at them. It is framework-agnostic, open source, and built on open standards, and it is aimed at teams running agents in production — support, payments, SRE, finance, sales and marketing — where an action such as a refund, a payment, a merge or a data deletion cannot simply be taken back.
Agents are increasingly capable of taking real action: calling Stripe, merging pull requests, rolling back deployments, updating CRM records or paying invoices. The problem is that a tool call is a real-world event. Once a refund is issued, a payment goes out or a table is dropped, there is no undo. Teams therefore face an uncomfortable choice: keep agents on a short leash and lose the value of autonomous work, or let them run and accept that some actions will be wrong. withHuman exists for the actions you can't take back. Its stated approach is to let agents draft everything and ship nothing until someone accountable has looked at it, while still allowing the routine majority of calls to pass without a human ever being bothered.
Everything starts with interception. Each tool call an agent makes is intercepted by AAP, the Agent Approval Protocol, and sent to withHuman for approval. If the agent supports AAP, withHuman just works. Coverage spans coding agents through hooks — Claude Code and Codex among them — and agent frameworks through SDKs for LangGraph, CrewAI, Mastra and others. There is also an MCP gateway, and for teams building their own agents the open Agent Approval Protocol is available directly. In the product's own illustration, a support agent's stripe.refund call is held by withHuman before it reaches Stripe, with the arguments captured as a structured request.
Approval pipelines are how withHuman avoids approval fatigue. Instead of sending every single call to a person, teams write policy rules that approve or deny routine requests automatically, and only the tough stuff goes to humans. Rules can be conditioned on the agent, the tool, the arguments and the agent context. A simple example from the site: refunds under $20 approve automatically, while a $75 refund that exceeds the $20 threshold skips the automatic rule and is escalated. For calls that rules can't describe — such as judging whether a support reply is routine — there is an AI judge. Teams can also use webhooks to their own policy service, so existing policy logic can participate in the pipeline. In the demo, three of four calls are decided without a person touching them.
Escalation paths make sure the request reaches the right human rather than a generic queue. Teams write rules that decide which requests go to which team or person, routing by agent, tool, arguments or team. Teams then set their own escalation order and on-call flows, and requests escalate when nobody answers in time. The example on the site shows a $2,400 refund held because it is over $1,000: it goes to Sam Alvarez, the finance lead, while under-$1,000 refunds go to the support team and out-of-hours requests go to the on-call person. Reviewers are met where they already work — Slack and Discord, iPhone and Android apps with push, plus email, text message and WhatsApp — and each reviewer's own notification rules pick the channels.
Every decision is kept on the record. withHuman maintains an append-only audit log of run history for production, capturing each request, the decision and any notes, with reviewer identity attached to every decision and the full request retained alongside it. Entries such as db.delete_rows approved by d.chen, stripe.refund approved by s.alvarez with a note that it was verified with finance, or k8s.apply denied by m.okafor are all recorded. The point is straightforward: when someone later asks who approved this, the answer is available, with the identity of the person who said yes and the exact request they saw.
withHuman's distinctive approach is that it is a protocol, not a walled garden. Your agents speak to withHuman via AAP, the Agent Approval Protocol, an open spec started by withHuman to let agents wait on human decisions. That means integrations are made with AAP, not with withHuman specifically, so one integration works with any provider. The spec is built in the open, with issues, proposals and changes happening in public, and the aim is stated plainly: to be the best provider, never the only one. The spec, SDKs, adapters and conformance tests are open source, so teams can swap providers without rewriting a single agent. The withHuman core — the queue, the audit trail and the web UI — is also open source and self-hostable, so it can run on your own infrastructure or be run for you.
Following a single consequential action end to end shows how the pieces fit together. A customer asks for a refund; the support agent finds a duplicate charge and decides to refund it; the agent's tool call is intercepted and held by withHuman before it reaches Stripe. The rules check it: the approval pipeline approves or denies the call automatically, or asks a human to take a look. In the example, a $75.00 refund exceeds the automatic $20 threshold, so the request goes to the Payments team, where Chris is on call. Chris is notified on his preferred platform, sees the tool call and the request context — amount, reason, customer — and approves or denies. The approved refund then reaches Stripe and the agent carries on, with the resulting stripe.refund reference recorded.
Getting started is done through a CLI that connects every supported agent on a machine. A single curl-and-sh install command onboards coding agents such as Claude Code, Codex, OpenClaw, Pi, Hermes and DeepSeek, places the hooks in position, and finishes in the browser where the request appears for approval or denial. Supported integrations listed on the site include coding agents, an MCP gateway, LangGraph, Deep Agents, Pydantic AI, OpenAI Agents, Claude Agent SDK, Google ADK, CrewAI, AI SDK, Mastra and an HTTP API. Setup examples use pip installs for the Python frameworks, npm packages for the TypeScript ones, and a simple POST to /api/aap/v1/requests for anything else, with a timeout field so a call does not wait forever.
Use cases are framed around the actions you can't take back. An AI SRE can request approval for kubernetes.rollout_undo before rolling payments-api back after a 5xx rate spike. Coding agents surface Bash commands. Customer support routes stripe.refund. Finance and accounting routes bill.pay. Sales routes docusign.send. Marketing routes campaign.send. Personal assistants can route calendar.create_event. In every case the agent can draft the work — the refund, the rollback, the payment, the contract send — and nothing ships until someone accountable has approved it.
withHuman is aimed at companies running AI agents, not hobby projects — the kind that want one set of rules for every agent the company runs. The reviewer experience is built for team members who are on call for a particular domain, whether that is the Payments team, a finance lead or an SRE. On availability, the project is open source with a hosted version; teams can self-host the core or let withHuman run it for them. The Product Hunt launch notes an offer of three months of Scale free using the code PRODUCTHUNT.
In short, withHuman gives agents the freedom to do real work while keeping humans accountable for the decisions that matter. By intercepting tool calls, deciding routine requests automatically, routing risky ones to the right person, and recording every decision, it turns human approval from a blocker into a workable layer that sits underneath every agent a company runs.