EvalLayerTry the demo

EvalLayer vs HumanLayer: policy brain, approval rail

Published 2026-07-27 · EvalLayer

HumanLayer is an approval rail: it pauses an AI agent's risky actions and routes them to humans over Slack or email for sign-off. EvalLayer is a policy brain: it checks each consequential action against commercial rules and decides allow, rewrite, require approval, or block automatically, with humans reserved for the cases that earn escalation. The two answer the same question at different altitudes, and the honest comparison is less either/or than order-of-operations.

What HumanLayer is

HumanLayer is an API and SDK at the tool-calling layer. When an agent is about to do something the developer marked as risky, HumanLayer holds the action and sends an approval request to a person or a team, through Slack, email, or other channels, with escalations, timeouts, and webhooks around the loop. It is model-agnostic and framework-agnostic, and it has a genuinely good developer experience for wiring a human into an agent workflow.

Its core design assumption: the way to make a risky action safe is to ask a human first.

What EvalLayer is

EvalLayer's authorization layer takes the agent's intended action plus a commercial policy (discount authority, spend limits, forbidden commitments, approved claims, required disclaimers, blocked topics) and returns one of four decisions: allow, rewrite with a compliant version attached, require_approval, or block. Deterministic checks handle everything countable; one model pass handles semantics; every decision is stored as an audit record.

Its core design assumption: most actions can be decided by policy in about a second, and human attention should be spent on the residue.

The comparison

DimensionHumanLayerEvalLayer
Primary jobRoute risky actions to humans for approvalDecide actions against commercial policy automatically
Decision makerA person, every timePolicy engine; people only on require_approval
Policy modelDeveloper marks which tools/actions need approvalStructured commercial policy evaluated per action content
Decisions returnedApproved / rejected (by the human)allow / rewrite / require_approval / block
Rewrite pathNo; a human edits or rejectsYes; compliant rewrite generated and re-checked
Latency profileHuman response time (minutes to hours)Milliseconds deterministic, one to two seconds semantic
Scales toActions worth human minutesEvery consequential action, with humans on the residue
Audit recordApproval trail of who signed offPolicy applied, violations found, decision, content hash

Where each one wins

If your agents take a handful of genuinely high-stakes actions a day (production deployments, large payments, contract sends), approval-for-everything is correct and HumanLayer's ergonomics are excellent for it.

If your agents produce hundreds or thousands of outbound messages, quotes, replies, and refunds, approval-for-everything quietly turns into one of two failure modes: reviewers rubber-stamp (the control becomes theater) or the queue backs up (the automation becomes pointless). That volume regime is what a policy engine is for. The math is covered in routing the 2% that matters.

Using both

The architectures compose cleanly. EvalLayer sits first and decides everything it can: clean actions ship, hard violations block, fixable violations come back rewritten. The require_approval slice, arriving with named violations and excerpts, flows to whatever approval rail your team already answers, whether that is HumanLayer, a Slack workflow, or a queue in your own admin. A reviewer who sees "over_discount: 25% exceeds this agent's 15% authority" makes a faster, better decision than one staring at a raw transcript.

Policy first, people second. Not because people matter less, but because their attention is the scarcest resource in the loop, and policy is how you spend it where it counts.

Frequently asked questions

Are EvalLayer and HumanLayer competitors?

They overlap at one decision: what happens to a risky action. HumanLayer answers it by asking a person. EvalLayer answers most of it automatically against policy and only escalates the residue. Many teams would reasonably run EvalLayer as the first gate and a human-approval rail behind it.

Can I use EvalLayer's require_approval decision with HumanLayer?

Yes, architecturally. EvalLayer returns require_approval with the violations spelled out; that payload is exactly what an approval-routing tool wants to show a reviewer. EvalLayer does not care which approval rail handles the escalation.

When is human approval alone enough?

When action volume is low and every action genuinely deserves eyes. The math breaks as volume grows: at thousands of actions a day, approval-for-everything either becomes rubber-stamping or a queue that defeats the point of deploying agents.

Does EvalLayer remove humans from the loop?

No. It concentrates them. Clean actions ship, hard violations block, and humans see the small set of actions where judgment is actually required, with the specific violations attached.

See the authorization layer live

Paste a message, set a policy, get allow / rewrite / require approval / block in seconds.

Try the demo