Key Changes
Nested handoff behavior is now opt-in
The nested handoffs behavior were enabled by default in v0.6.0. Now, they are disabled by default. To enable them, you need to set the nest_handoff_history option to True.
from agents import Agent, MCPServerManager, RunConfig, Runner
agent = Agent(name="My agent", instructions="Be creative")
result = await Runner.run(
agent,
input="Hey, can you tell me something interesting about Japan?",
run_config=RunConfig(nest_handoff_history=True),
)MCPServerManager for multiple MCP server instances
Starting with this version, there is a new, convenient way to manage multiple MCP server instances. See #2350 and examples/mcp/manager_example.
from contextlib import asynccontextmanager
from fastapi import FastAPI
from agents import Agent, Runner
from agents.mcp import MCPServerManager, MCPServerStreamableHttp
@asynccontextmanager
async def lifespan(app: FastAPI):
async with MCPServerManager(
servers=[
MCPServerStreamableHttp({"url": 'http://localhost:8001/mcp'}),
MCPServerStreamableHttp({"url": 'http://localhost:8002/mcp'}),
],
connect_in_parallel=True,
) as manager:
app.state.mcp_manager = manager
yield
app = FastAPI(lifespan=lifespan)
@app.post("/agent")
async def run_agent(req) -> dict[str, object]:
agent = Agent(
name="Test Agent",
instructions="Use the MCP tools when needed.",
mcp_servers= app.state.mcp_manager.active_servers,
)
result = await Runner.run(starting_agent=agent, input=build_query(req))
return {"output": result.final_output}Other key changes
- The default reasoning.effort for gpt-5.1/5.2 is now set to "none"; if you rely on the previous default "low" set by the default model configuration, please explicitly set it to "low" in your agent's model_settings.
- When using a sessions store,
session_input_callbackused to be required to be provided. Now, it is optional and the default behavior is to append the new input to the session history.
What's Changed
- fix: #2211 Move nested handoffs to opt-in feature by @seratch in #2272
- feat: add MCPServerManager for safely managing server lifecycle by @seratch in #2350
- fix: Make session list inputs auto-append by default by @seratch in #2282
- feat: update gpt-5.1/5.2 default model settings by @seratch in #2327
- Add WebSocket custom options to OpenAIRealtimeWebSocketModel by @aligokalppeker in #2264
Documents & Other Changes
- chore(deps): bump openai/codex-action from f5c0ca71642badb34c1e66321d8d85685a0fa3dc to 086169432f1d2ab2f4057540b1754d550f6a1189 by @dependabot[bot] in #2340
- chore(deps): bump actions/setup-python from 5.6.0 to 6.1.0 by @dependabot[bot] in #2341
- chore(deps): bump astral-sh/setup-uv from e58605a9b6da7c637471fab8847a5e5a6b8df081 to d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 by @dependabot[bot] in #2342
- docs: #2343 clarify how to use compaction in practice by @seratch in #2344
- docs: update translated document pages by @github-actions[bot] in #2345
- Update all translated document pages by @github-actions[bot] in #2338
- Release 0.7.0 by @github-actions[bot] in #2339
New Contributors
- @dependabot[bot] made their first contribution in #2340
Full Changelog: v0.6.9...v0.7.0