Rejected and timed-out actions never reach the wrapped tool body.
ApproveKit
A premium control layer for agent actions that should pause before they touch production. Wrap Python tools, route risky calls to a human, redact sensitive payloads, and keep the audit trail intact.
{
"to": "ceo@example.com",
"subject": "Quarterly report",
"body": "[REDACTED]"
}
Give agents power with a checkpoint in the middle.
ApproveKit turns risky tool calls into reviewable events. The design goal is simple: every dangerous action becomes visible, explainable, and blockable before execution.
Policy timeouts keep agent runs from waiting forever.
Local-first history for approvals, rejects, timeouts, and auto-approvals.
One small guard changes the entire failure mode.
Safe tools can still move fast. Risky tools pause, surface context, and resume only after a reviewer makes a decision.
`@kit.guard` captures tool name and arguments before execution.
Rules decide whether the call can auto-approve or must wait.
The browser inbox shows redacted payload, risk level, and notes.
Approved calls execute. Rejected and timed-out calls are blocked.
From agent call to decision — in one view.
The parts that matter when an agent is one click from production.
Small primitives, deliberately boring where it counts, polished where humans need clarity.
Tool-body isolation
Approval happens before execution, so denied requests are not best-effort blocked after the fact.
Policy-visible risk
Risk labels, timeouts, redaction rules, and approval modes move with the request.
Redacted payloads
Configured fields are masked recursively before request storage and audit persistence.
Two terminals. One visible decision loop.
The guided demo creates a shared SQLite database. The agent waits while the reviewer makes decisions in the browser.
pip install approvekit python3 demo/agent.py --db /tmp/approvekit_demo.db --reset
approvekit-web --db /tmp/approvekit_demo.db --port 8765