show-me + teach-me · GPT-5.6 Responses · SDK issue #4085

Multi-agent — the “subagents” we already have, differently

This is the “GPT-5.6 likes subagents” bit: multi_agent.enabled lets the model spawn a tree of subagents that OpenAI orchestrates server-side. But the SDK already ships a portable client-side subagent system — so the real question is who orchestrates.

1What the feature is

Multi-agent (beta, GPT-5.6) lets the model spin up and coordinate subagents in parallel inside a single Responses request — the mechanism behind GPT-5.6's ultra mode. Enable it with multi_agent.enabled: true and the beta header OpenAI-Beta: responses_multi_agent=v1. A root agent (/root) spawns a tree (/root/researcher, …); OpenAI hosts the orchestration via six actions (spawn_agent, followup_task, send_message, wait_agent, interrupt_agent, list_agents) surfaced as multi_agent_call items. The root synthesizes the final answer.

ⓘ Your app does not execute multi_agent_call items — OpenAI runs them and returns multi_agent_call_output. Ordinary client-owned function_calls still work exactly as before: any agent can emit one, you run it, you return function_call_output.

2The rival we already ship

Unlike the other three GPT-5.6 features, this isn't a missing capability — the SDK already has a subagent story, but client-side:

  • subagent/ — markdown agent definitions + registry
  • delegate/ — a spawn/delegate tool
  • task/TaskTool / TaskToolSet backed by a TaskManager

Our system spawns and drives full sub-conversations. Same goal as OpenAI's multi-agent; opposite philosophy on who holds the reins.

3Hosted vs client-side

AxisOpenAI hosted multi-agentSDK client-side subagents
OrchestratorOpenAI servers (opaque)Our code — full sub-conversations
PortabilityGPT-5.6 only, betaAny model
ObservabilityEncrypted agent_messagesFull event stream, ours
Code to maintainLittle (offloaded)More (we own it)
★ The real question isn't “can we parse the new items” — it's “who orchestrates.” That's a design decision, not a bug to fix.

4If we wanted hosted mode

Supporting it would need modest plumbing plus new parsing:

NeededSDK today
multi_agent param + beta headernone (responses_options.py, llm.py:916)
parse multi_agent_call/_output/agent_message with agent/phasenone (message.py:541)
⚠ Beta, GPT-5.6-only, schemas may change; encrypted inter-agent messages limit observability vs our client-side delegation. Also incompatible with /responses/compact, reasoning.summary, and max_tool_calls. Recommendation in #4085: keep the portable client-side system as default; treat hosted multi-agent as an optional, model-specific accelerator only if a maintainer decides it's worth the beta surface.

4Quiz

Five questions to check you actually understood it — not trivia. Click an answer to see whether it's right and why.

Companion pages: Programmatic Tool Calling · Tool search · WebSocket mode  |  SDK issue #4085  |  ← Home