Skip to main content
The SDK ships dedicated patches for every major Python agent framework in production use. After 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, or semantic_guard verdict 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_guard match 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_guard on the prompt always run before the upstream provider is called.
For the full per-framework matrix — including which tier each one is in and which 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 classic langchain.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

Both Agent.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 global on_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.