egisai.init() runs, supported frameworks are
patched in place: their entry point is wrapped to attribute identity,
and policy enforcement cascades to the inner provider call (OpenAI,
Anthropic, Google, Bedrock, …) — so a single set of policies covers
your direct LLM calls and your framework-orchestrated agent runs.
This page is an index of how to enable each framework. The dedicated
pages for special tiers — Claude Agent SDK
and AWS Bedrock — cover their unique
enforcement seams.
What “enforced” means here
For every framework on this page:- Tool / MCP dispatch is enforced. A
deny_tool_call,deny_mcp_call, orsemantic_guardverdict on a tool call physically prevents the tool from running. - Tool result PII is enforced on the next call’s input phase.
Tool results round-trip Python and the next call’s prompt-side
evaluator scans them. A
pii_scan/deny_output_regex/semantic_guardmatch on a tool’s response either masks the result (sanitize) or refuses it (block) before the model is shown it. - Input-side policies always fire pre-LLM. PII detection,
regex denylists, model allow-lists, prompt-size caps, and
semantic_guardon the prompt always run before the upstream provider is called.
enforcement_status flag it stamps — see the
Enforcement matrix in the SDK README.
OpenAI Agents
openai-agents Runner.run is wrapped for identity attribution. Tool
gating cascades to the OpenAI patch.
LangChain (classic + 1.x)
Both classiclangchain.agents.AgentExecutor and the 1.x
langchain_classic.agents.AgentExecutor are patched. The modern
langchain.agents.create_agent path is covered transparently via the
LangGraph patch on the returned CompiledStateGraph.
LangGraph
Pregel.invoke and Pregel.stream are wrapped for identity attribution.
CrewAI
Agent.execute_task is wrapped per-agent so each Crew member is
attributed independently on the dashboard.
AutoGen
AssistantAgent.run is wrapped for identity attribution.
Agno
BothAgent.run and Agent.arun are wrapped.
Strands Agents
Agent.__call__ is wrapped.
smolagents
The agent entry point is wrapped for identity attribution.LlamaIndex
FunctionAgent, ReActAgent, CodeActAgent, and AgentWorkflow.run
are wrapped. The patch detects LlamaIndex’s WorkflowHandler pattern
(run() returns a handle whose internal _result_task does the actual
LLM work) and keeps the run context open until the workflow’s
asyncio task finishes — so inner LLM calls attribute to the correct
Agent row.
Pydantic AI
Agent.run is wrapped.
Google ADK
The ADK entry point is wrapped.When a call is blocked
Every framework above honors the globalon_block mode. By default a
blocked call raises PermissionError from inside the framework’s
agent loop; with on_block="stub", the inner provider call returns
a refusal-shaped response so the loop can keep running.
What’s next
OpenAI
Direct OpenAI integration — what every cascade above flows through.
Anthropic
Direct Anthropic integration.
Claude Agent SDK
Subprocess-loop framework with PreToolUse + PostToolUse enforcement.
AWS Bedrock
Bedrock Converse + managed Bedrock Agents.