There's no native layer to block or require approval before a tool runs. Once the agent decides to call a tool, it executes immediately. A single unchecked tool call can delete records, send emails, or modify production data.
One line of code gives you full control. Intercept tool calls, evaluate against your policies, and decide whether to allow, block, or require human approval.
from runplane import Shield
import os
runplane = Shield(api_key=os.environ["RUNPLANE_API_KEY"])
# Wrap any LangChain tool call
result = await runplane.guard(
"delete_record",
"users-database",
{"recordId": user_id},
lambda: langchain_tool.run(input)
)
# Result contains the decision and execution outcome
if result.decision == "BLOCKED":
print("Action was blocked by policy")
elif result.decision == "APPROVED":
print("Action executed:", result.output)Block destructive tools before they execute
Require human approval for high-risk actions
Full audit trail of every decision
guard() intercepts the action before execution
Policy engine evaluates and returns a decision
Action runs, blocks, or waits for approval
SQL Tools
File Tools
API Tools
Custom Tools