A single unchecked tool call can cascade across your entire crew. One agent's output triggers another's action, and before you know it, multiple production systems are affected. Multi-agent risk is compounded.
Wrap CrewAI tool calls with Runplane. Every agent action passes through the policy engine before execution, preventing cascading failures and unauthorized operations.
from runplane import Shield
from crewai import Agent, Task, Crew
import os
runplane = Shield(api_key=os.environ["RUNPLANE_API_KEY"])
# Wrap CrewAI tool execution
async def guarded_tool_execute(tool_name, args, execute_fn):
return await runplane.guard(
tool_name,
"crewai-agent",
args,
execute_fn
)
# Use in your CrewAI tool
class ProtectedDatabaseTool:
def _run(self, query: str):
return guarded_tool_execute(
"execute_query",
{"query": query},
lambda: self.db.execute(query)
)
# Agent actions are now controlled
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task]
)In a CrewAI workflow, one agent's output becomes another's input. A single uncontrolled action can trigger a chain reaction across your entire crew. Runplane adds a control boundary at every tool execution, breaking the cascade before it starts.
Control multi-agent workflows
Prevent cascading tool failures
Per-agent and per-tool policies
guard() intercepts the action before execution
Policy engine evaluates and returns a decision
Action runs, blocks, or waits for approval
Researcher Agent
Writer Agent
Analyst Agent
Executor Agent