withHuman is the approval layer for AI agents. It lets you put your most consequential agent actions behind human approvals so that your agents can do real work. Its core behaviour is interception: every tool call an agent makes is held before it runs, checked against your rules, and either approved or denied automatically or routed to the right person on your team. withHuman is framework-agnostic, open source and built on open standards, and it works across Claude Code, Codex and agents built with LangGraph, Pydantic AI and more through an open protocol called AAP. Crucially, it gives you one set of rules for every agent your company runs.
Agents are increasingly trusted with actions that carry real consequences: refunding a customer, paying an invoice, merging a pull request, rolling back a production deployment or sending a marketing campaign. Once such a call is made, it is often impossible to take back. The site describes the purpose of withHuman as covering "the actions you can't take back" by letting agents draft everything while shipping nothing until someone accountable has looked. Without a control layer, teams must choose between blocking agents from useful work entirely or letting them act unsupervised. withHuman exists to remove that trade-off, so agents can be put to work accountably rather than being held back.
Every tool call, whatever the agent. Each tool call is intercepted by AAP, the Agent Approval Protocol, and sent to withHuman for approval. If the agent supports AAP, withHuman just works. Concretely, the product ships SDKs for LangGraph, CrewAI, Mastra and other agent frameworks, hooks for Claude Code, Codex and other coding agents, and the open Agent Approval Protocol for your own agents. In the worked example, a support agent's stripe.refund call is held by withHuman before it reaches Stripe, so nothing leaves the agent runtime until a decision has been made. This interception layer is what makes everything else in the product possible: because the call is paused rather than executed, withHuman can inspect it, apply policy, notify a person and only then let it run.
No approval fatigue. The site is explicit that approval fatigue is the enemy, and the way to avoid it is to write policy rules that approve or deny routine requests automatically, sending only the tough stuff to humans. An approval pipeline can express conditions on the agent, the tool, the arguments and the agent context; an AI judge handles calls that rules can't describe; and webhooks hand decisions to your own policy service. In a live example pipeline, kubernetes.pods_list is approved by a rule for read-only tools, an email reply is approved by an AI judge as a routine support reply, db.drop_table is denied by a rule against schema changes, and a vendor.pay call over the team budget is sent to a person through a webhook, meaning three of four calls were decided without a person. The refund example shows the same idea in miniature: refunds under $20 are automatically approved, and anything more asks a human.
Escalation paths decide which requests go to which team or person. You write rules that route by agent, tool, arguments or team; teams set their own escalation order and on-call flows; and requests escalate when nobody answers in time. In the illustrated example an under-$1,000 refund goes to the support team, a $2,400 refund goes to finance lead Sam Alvarez, and an out-of-hours request goes to Priya Nair, who is on call. Reviewers are then met where they already work: requests arrive in Slack and Discord, in iPhone and Android apps with push, and by email, text message and WhatsApp, so each reviewer's notification rules pick the channels.
Every decision is kept on the record. withHuman maintains an append-only audit log run history: each entry records the request, the decision and the reviewer, such as db.delete_rows approved by d.chen, stripe.refund approved by s.alvarez with a note verifying with finance, k8s.apply denied by m.okafor, and crm.update_contact approved by d.chen. The log keeps reviewer identity on every row and the full request with each decision, so when someone asks who approved a given action, the answer is available.
Overall, withHuman acts as a pipeline between the agent and the tool it wants to call. In the site's step-by-step example, a customer asks for a refund and the support agent decides to issue it; the agent's tool call is intercepted and held by withHuman before it reaches Stripe; the rules check the call and either approve or deny it automatically or ask a human to look; the request is sent to the Payments team, where Chris is on call; the human is notified on their preferred platform; the human sees the tool call and request context and decides; and the approved refund finally reaches Stripe while the agent carries on. The distinctive architectural choice is that integrations are made with AAP rather than with withHuman, so agents and frameworks wait on human decisions through an open spec, and you can swap providers without rewriting a single agent.
The benefit is straightforward: withHuman lets teams put agents to work without giving up accountability. Because routine calls are decided automatically by rules or an AI judge, reviewers are not buried in approvals. Because risky calls are routed to the right person together with the full request context, decision-makers see exactly what is being proposed before it happens. Because every request, decision and note is kept in an append-only history with reviewer identity, the question of who approved something always has an answer. And because the protocol and the core are open source, teams avoid lock-in and can leave whenever they choose, running the queue, audit trail and web UI on their own infrastructure or letting withHuman host it.
Use cases centre on consequential actions: an AI SRE agent requesting a kubernetes.rollout_undo to roll payments-api back to v2.41.0 after the 5xx rate crossed 2%; coding agents running Bash commands; customer support agents issuing stripe.refund calls; finance and accounting agents running bill.pay; sales agents using docusign.send; marketing agents sending campaign.send; and personal assistants creating calendar events with calendar.create_event. In each case the pattern holds: the agent prepares the action, withHuman pauses it, a rule or a person decides, and only then does the action execute.
withHuman is aimed at teams running agents in production across engineering, support, finance, sales, marketing and SRE functions; the example reviewers include a Payments team member who is on call, a finance lead and an SRE. Integration is broad. Installing the CLI connects every supported agent on your machine, covering Claude Code, Codex, OpenClaw, Pi, Hermes and DeepSeek, and the supported list also includes the MCP gateway, LangGraph, Deep Agents, Pydantic AI, OpenAI Agents, Claude Agent SDK, Google ADK, CrewAI, AI SDK, Mastra and an HTTP API with POST /api/aap/v1/requests. withHuman is open source with a hosted version, and the Product Hunt listing notes a promotion giving three months of the Scale plan free with the code PRODUCTHUNT.
In summary, withHuman is the approval layer for AI agents: it intercepts tool calls, applies automatic policy for routine actions, escalates the consequential ones to the right accountable human, records every decision, and does so through an open, self-hostable protocol that avoids lock-in. Its value proposition is simple and stated plainly on the site: put your agents to work, accountably.