Use case · LangChain
Human-in-the-loop approvals for LangChain agents
Wrap any high-stakes tool call in your LangChain agent with a single gate.require(). Seal pauses execution until a human approves in Slack, enforces the verdict, and records a tamper-evident audit trail — no custom callback plumbing required.
const result = await gate.require("payments.transfer", { amount, to });
// resolves only after a human approves — or fails closedWhere it fits
- ›Gate a tool that moves money, deletes data, or emails customers
- ›Require approval only above a policy threshold (amount, scope, agent)
- ›Keep a verifiable record of who approved which tool call and why
Frequently asked questions
How do I add human approval to a LangChain agent?+
Wrap the risky tool call in gate.require("action", payload). Seal blocks execution until a human approves in Slack or the reviewer console, then returns so your chain continues — or fails closed on reject, timeout, or malformed input. No custom callback handler needed.
Does this work with LangGraph and LangChain tools?+
Yes. Because Seal is a plain async SDK call, you can place it inside a LangGraph node, a tool function, or a callback — anywhere the agent is about to take an irreversible action.