Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
agent-framework-claude wraps the Claude Agent SDK as ClaudeAgent. It uses Claude's managed agent runtime, sessions, permission model, built-in tools, and MCP support while exposing the Agent Framework run and streaming interfaces.
This integration is distinct from the Anthropic model provider, which uses Claude as the model behind an application-owned Agent Framework agent.
Prerequisites
- Install and configure the Claude Code CLI.
- Choose a Claude model and permission mode.
- Run the agent in a constrained working directory when enabling file or shell tools.
Install the package
pip install agent-framework-claude --pre
Configuration
| Variable | Purpose |
|---|---|
CLAUDE_AGENT_MODEL |
Claude model used by the managed runtime. |
CLAUDE_AGENT_PERMISSION_MODE |
Default permission mode for built-in and MCP tools. |
CLAUDE_AGENT_CLI_PATH |
Optional explicit path to the Claude Code CLI. |
CLAUDE_AGENT_CWD |
Working directory exposed to the runtime. |
CLAUDE_AGENT_MAX_TURNS |
Optional maximum number of agent turns. |
CLAUDE_AGENT_MAX_BUDGET_USD |
Optional cost budget for a run. |
Create a ClaudeAgent
ClaudeAgent supports regular and streaming runs and can expose Agent Framework function tools.
async def non_streaming_example() -> None:
"""Example of non-streaming response."""
print("=== Non-streaming Example ===")
agent = ClaudeAgent(
name="BasicAgent",
instructions="You are a helpful assistant. Keep responses concise.",
tools=[get_weather],
)
async with agent:
query = "What's the weather in Seattle?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Agent: {result.text}\n")
async def streaming_example() -> None:
"""Example of streaming response."""
print("=== Streaming Example ===")
agent = ClaudeAgent(
name="StreamingAgent",
instructions="You are a helpful assistant.",
tools=[get_weather],
)
async with agent:
query = "What's the weather in Paris?"
print(f"User: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run(query, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print("\n")
Additional samples demonstrate:
- Claude built-in file and shell tools.
- Interactive permission handling.
- Local and remote MCP servers.
- Session persistence and resumption.
- URL fetching and multiple permission rules.
Permission considerations
- Start with the least-permissive Claude Agent SDK permission mode that supports the task.
- Require explicit approval for shell, file, network, or other side-effecting operations.
- Don't expose credentials through environment variables or readable files in the agent working directory.