OpenAI Agents SDK

持续追踪核心框架、最新模型规格与重要系统接口的更新迭代轨迹。

v0.17.4

v0.17.4

What's Changed feat: support Realtime custom voice objects by @lionel-oai in #3473 fix: #3459 add opt-in recovery for missing function tools by @seratch in #3461 fix: apply hardened http client default to MCP SSE transport by @ioleksiuk in #3466 fix: use non-None value for output in FunctionSpanData by @rmotgi1227 in #3475 fix: add missing entries to span slots by @rmotgi1227 in #3483 fix: redact invalid JSON payload in ModelBehaviorError data by @LeSingh1 in #3485 fix: export more tracing related functions &amp; types from agents by @rmotgi1227 in <a class="issue-link js-issue-link" data-erro...

v0.17.3

v0.17.3

a## What's Changed fix: keep mountpoint credentials out of sandbox commands by @seratch in #3429 fix: unify memory optional dependency import errors by @seratch in #3389 fix: guard None text in text_message_output and add output guardrail count to RunErrorDetails by @zhoufengen in #3375 fix: avoid mutating FunctionTool params_json_schema by @ioleksiuk in #3382 fix: avoid mutating codex output schema input by @ioleksiuk in #3385 fix: #3357 output schema names for Literal types by @Aphroq in #3358 fix: skip wait_for_status when Vercel sandbox is in a terminal state by @cty-ut in <a class="issue-...

v0.17.2

v0.17.2

What's Changed fix: #3268 fix OpenAI Conversations reasoning persistence by @seratch in #3352 fix: avoid auto response for unknown realtime tools (ref: #3287 ) by @seratch in #3366 fix: #3354 interrupt tracing retry backoff on shutdown by @Aphroq in #3355 fix: #3359 preserve local approval rejection reasons by @Aphroq in #3360 fix: #3361 honor session settings in AsyncSQLiteSession by @Aphroq in <a class="issue-link js-issue-link"

v0.17.1

v0.17.1

What's Changed Sandboxes fix: include sandbox provider error details by @seratch in #3326 fix: #3274 limit sandbox archive extraction by @Aphroq in #3278 fix: #3273 validate git repo subpaths by @Aphroq in #3276 fix: allow empty GitRepo subpaths as repository root by @seratch in #3299 fix: preserve GitRepo root subpath aliases by @seratch in #3303 Tracing fix: make tracing shutdown best-effort on process exit by @seratch in #3343 fix: keep BatchTraceProcessor worker alive on exporter errors by <a class="user-mention

v0.17.0

v0.17.0

Key Changes RealtimeAgent's default is now gpt-realtime-2 Since this version, the default model for RealtimeAgents is gpt-realtime-2: https://developers.openai.com/api/docs/models/gpt-realtime-2 Sandbox local source materialization change In this version, sandbox local source materialization keeps LocalFile.src and LocalDir.src within the materialization base_dir unless the source path is covered by Manifest.extra_path_grants . The base_dir is the SDK process current working directory when the manifest is applied; relative local sources are resolved from that directory, while absolute local so...

v0.16.1

v0.16.1

What's Changed fix: #3109 stabilize chat completions stream output indexes by @seratch in #3176 fix: #3168 validate MCP require_approval policies by @seratch in #3179 fix: #3116 restore session history after compaction replacement failures by @Aphroq in #3117 fix: #3171 reject corrupt Dapr session state updates by @Aphroq in #3173 fix: #3170 clean up git repo temp clones on failure by @Aphroq in <a class="issue-link js-issue-link" d

v0.16.0

v0.16.0

Key Changes Default model change In this version, the SDK default model is now gpt-5.4-mini instead of gpt-4.1 . This could affect agents and runs that do not explicitly set a model. Because the new default is a GPT-5 model, implicit default model settings now include GPT-5 defaults such as reasoning.effort="none" and verbosity="low" . The new default model should work better for most use cases (see the report at #3147 ), but if you need to keep the previous default model behavior for some reasons, set a model explicitly on the agent or run config like Agent(name="Assistant", model="gpt-4.1") ...

v0.15.3

v0.15.3

What's Changed fix(mcp): avoid mutating tool input schemas by @adityasingh2400 in #3134 fix(mcp): reject non-object tool input JSON by @adityasingh2400 in #3135 fix(mcp): make duplicate tool errors deterministic by @adityasingh2400 in #3136 fix: tolerate audio deltas before audio format negotiation in ModelAu… by @Quratulain-bilal in #3141 Documentation &amp; Other Changes docs: updates for #3128 by @seratch in #3129 docs: update translated document pages by @github-actions[bot] in #3131 test: cover overlapping tool response creates by @adityasingh2400 in <a class="issue-link js-issue-link" da...

v0.15.2

v0.15.2

What's Changed feat: add context management model setting by @seratch in #3128 fix: #3123 avoid replaying assistant conversation item IDs for OpenAIConversationsSession by @seratch in #3127 fix: redact function tool trace span errors by @Aphroq in #3111 fix: redact MCP invalid JSON errors when tool logging is disabled by @Aphroq in #3088 fix: reject failed responses stream terminals by @Aphroq in #3107 fix: only rewind matching session suffixes by @Aphroq in #3090 fix: reject string-like shell commands by @Aphroq in <a class="issue-link js-issue-link" data-error-text="Failed to load title" dat...

v0.15.1

v0.15.1

What's Changed feat: expose Responses WebSocket keepalive options by @seratch in #3080 fix: restore UnixLocal PTY terminal signal defaults by @seratch in #3082 fix: #3074 restore SIGINT defaults for UnixLocal PTY children by @Aphroq in #3075 Documentation &amp; Other Changes docs: add 0.15 changelog by @seratch in #3058 docs: update translated document pages by @github-actions[bot] in #3064 docs: improve quickstart documentation for Windows OS users by @seratch in #3071 docs: update translated document pages by @github-actions[bot] in #3072 test: cover guardrail name fallback to function name ...

v0.15.0

v0.15.0

Key Changes Better model refusal handling In this version, model refusals are now surfaced explicitly as ModelRefusalError instead of being treated as empty text output or, for structured outputs, causing the run loop to retry until MaxTurnsExceeded . This affects code that previously expected a refusal-only model response to complete with final_output == "" . To handle refusals without raising, provide a model_refusal run error handler: result = Runner . run_sync ( agent , input , error_handlers = { "model_refusal" : lambda data : data . error . refusal }, ) For structured-output agents, the ...

v0.14.8

v0.14.8

What's Changed fix: #3046 preserve MCP re-export import errors by @seratch in #3048 fix: #3043 delimit sandbox prompt instruction sections by @seratch in #3047 Documentation &amp; Other Changes docs: fix typo in comment for WS event handler by @ateamofantsintheirprime in #3050 Release 0.14.8 by @github-actions[bot] in #3049 New Contributors @ateamofantsintheirprime made their first contribution in #3050 Full Changelog : v0.14.7...v0.14.8

v0.14.7

v0.14.7

What's Changed feat: #2886 add convenience properties (tool_name, call_id) to tool items by @jawwad-ali in #3027 fix: raise Phase 2 memory consolidation turn limit by @andi-oai in #3038 fix: add GPT-5.5 aliases to sandbox compaction by @alfozan in #3039 fix: tighten tar and zip member validation by @matthewflint in #3028 fix: reject symlinked LocalFile sources by @matthewflint in #2972 fix: remove unset fields from calls to Responses API by @s0rc3r3r01 in #3026 Documentation &amp; Other Changes Release 0.14.7 by @github-actions[bot] in <a class="issue-link js-issue-link" data-error-text="Faile...

v0.14.6

v0.14.6

What's Changed fix: update examples and defaults to GPT-5.5 by @alfozan in #3016 chore: relax websockets upper bound from &lt;16 to &lt;17 by @mathisobadia in #3013 Documentation &amp; Other Changes chore: harden uv dependency resolution by @mcgrew-oai in #3014 docs: update translated document pages by @github-actions[bot] in #3021 docs: add MongoDB session documentation by @alexbevi in #3015 docs: update translated document pages by @github-actions[bot] in #3023 Release 0.14.6 by @github-actions[bot] in #3022 New Contributors @mcgrew-oai made their first contribution in #3014 <a class="user-m...

v0.14.5

v0.14.5

What's Changed feat: #3001 add Modal sandbox idle timeout option by @seratch in #3005 fix: #3004 serve HITL resume tool outputs by @seratch in #3006 fix: backfill streamed terminal output by @ankitphogat in #3000 Documentation &amp; Other Changes docs: clarify lazy skill source host paths by @alfozan in #2998 docs: update translated document pages by @github-actions[bot] in #2999 Release 0.14.5 by @github-actions[bot] in #3007 New Contributors @ankitphogat made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4309176339" data-permi...

v0.14.4

v0.14.4

What's Changed feat: add BoxMount support by @alfozan in #2988 fix: ignore relative snapshot base overrides by @matthewflint in #2976 refactor: share sandbox ephemeral mount lifecycle by @seratch in #2986 refactor: share sandbox tar exclude arg generation by @seratch in #2987 refactor: extract sandbox session helper operations by @seratch in #2985 Documentation &amp; Other Changes docs: remove duplicate word in voice interruptions section by @abhicris in #2981 docs: update translated document pages by @github-actions[bot] in #2982 docs: update translated document pages by @github-actions[bot] ...

v0.14.3

v0.14.3

What's Changed fix: #2962 normalize sandbox paths and add Windows CI by @seratch in #2963 fix: #2938 make sandboxes importable on Windows by @seratch in #2948 fix: prepare Daytona workspace root before start by @seratch in #2956 fix: windows errors with #2956 by @seratch in #2979 fix: #2951 warn for tool name character replacement by @seratch in #2953 fix: tighten LocalSnapshot restorable checks by <a class="use

v0.14.2

v0.14.2

What's Changed feat: support sandbox extra path grants by @qiyaoq-oai in #2920 feat: #2228 persist tool origin metadata in run items by @seratch in #2654 feat(extensions): add MongoDB session backend by @alexbevi in #2902 fix: loosen sandbox compaction model parsing by @sdcoffey in #2930 fix: remove_all_tools missing hosted tool types by @javierdejesusda in #2885 fix: tolerate None text in ResponseOutputText content items by @beveradb in #2883 fix: #1876 LiteLLM extra_body forwarding by <a class="user-mention notranslate" da

v0.14.1

v0.14.1

What's Changed fix: sanitize OpenAI tracing export payloads by @alfozan in #2896 fix: #2873 preserve computer driver compatibility for modifier keys by @seratch in #2877 fix #2151 shield server-managed handoffs from unsupported history rewrites by @seratch in #2747 fix: stop streamed tool execution after known input guardrail tripwire by @seratch in #2688 Documentation &amp; Other Changes docs: update translated document pages by @github-actions[bot] in #2891 docs: align translated sandbox nav and refresh generated refs by @seratch in #2892 docs: clarify ToolContext availability in function-to...

v0.14.0

v0.14.0

v0.14.0 What's Changed Sandbox Agents This release adds Sandbox Agents , a beta SDK surface for running agents with a persistent, isolated workspace. Sandbox agents keep the normal Agent and Runner flow, but add workspace manifests, sandbox-native capabilities, sandbox clients, snapshots, and resume support so agents can work over real files, run commands, edit repositories, generate artifacts, and continue work across runs. Key pieces: SandboxAgent : an Agent with sandbox defaults such as default_manifest , sandbox instructions, capabilities, and run_as . Manifest : a fresh-workspace contract...

v0.13.6

v0.13.6

What's Changed fix: #2863 lazy-load SQLiteSession exports by @seratch in #2864 fix: #2856 stop recursive trace preview truncation by @seratch in #2860 fix: harden SQLAlchemySession against transient SQLite locks by @seratch in #2854 Documentation &amp; Other Changes docs: updates for #2844 changes by @seratch in #2845 docs: update translated document pages by @github-actions[bot] in #2847 docs(tracing): add HoneyHive to tracing integrations list by @m1lestones in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4215521018" data-permission-text="Title is priva...

v0.13.5

v0.13.5

What's Changed feat: #2807 support callable approval policies for local MCP servers by @seratch in #2818 feat: #2135 add public flush_traces API by @seratch in #2844 fix: #2823 AnyLLM reasoning extraction for iterable vLLM/any-llm Reasoning objects by @ziqi-cn in #2822 fix: serialize SQLite session writes with shared file locks by @seratch in #2843 Documentation &amp; Other Changes chore(deps): bump openai/codex-action from 1.4 to 1.6 by @dependabot [bot] in #2819 chore(deps): bump astral-sh/setup-uv from 7.3.1 to 8.0.0 by

v0.13.4

v0.13.4

What's Changed fix: #2806 sanitize AnyLLM responses replay input before validation by @seratch in #2813 Documentation &amp; Other Changes fix: map extensions changes to the feature:extensions label by @seratch in #2814 Release 0.13.4 by @github-actions[bot] in #2815 Full Changelog : v0.13.3...v0.13.4

v0.13.3

v0.13.3

What's Changed fix: #2798 avoid stale hydrated input ids in server conversation tracker by @seratch in #2800 fix: #2797 accept raw image_url content parts on chat completions input by @seratch in #2799 Documentation &amp; Other Changes docs: add non-OpenAI provider code example by @Muttaqi110 in #2792 docs: update translated document pages by @github-actions[bot] in #2793 chore: add Codex Stop hook for targeted Ruff tidy by @seratch in #2795 Release 0.13.3 by @github-actions[bot] in #2801 New Contributors @Muttaqi110 made their first contribution in <a class="issue-link js-issue-link" data-err...

v0.13.2

v0.13.2

What's Changed fix: #2783 depend on griffelib directly for docstring parsing by @seratch in #2791 fix: #2776 keep private tool metadata out of persisted session items by @seratch in #2781 fix: #2778 keep LiteLLM reasoning_effort portable across providers by @seratch in #2782 fix: update default reasoning effort for newer models by @seratch in #2773 feat: add external_web_access to WebSearchTool by @ymuichiro in #2786 fix: pin LiteLLM upper bound to 1.82.6 to mitigate supply chain attack by @gn00295120 in <a class="issue-link js-issue-link" data-error-tex

v0.13.1

v0.13.1

Key Changes Any-LLM extension Since this version, the extension module includes a new any-llm adapter as well. Please refer to the updated documentation and examples at https://github.com/openai/openai-agents-python/tree/main/examples/model_providers What's Changed feat: add any-llm model support with responses-compatible routing by @seratch in #2706 fix: preserve static MCP meta in converted function tools by @seratch in #2769 fix: #2760 wait for realtime response.done before follow-up response.create by @seratch in #2763 fix: handle cancelled single function tools as tool failures by @elaine...

v0.13.0

v0.13.0

Key Changes This minor release does not introduce a breaking change, but it includes a notable Realtime default update plus new MCP capabilities and runtime stability fixes. Highlights are: The default websocket Realtime model is now gpt-realtime-1.5 , so new Realtime agent setups use the newer model without extra configuration. MCPServer now exposes list_resources() , list_resource_templates() , and read_resource() , and MCPServerStreamableHttp now exposes session_id so streamable HTTP sessions can be resumed across reconnects or stateless workers. Chat Completions integrations can now opt in...

v0.12.5

v0.12.5

What's Changed feat(mcp): expose auth and httpx_client_factory in SSE/StreamableHttp params by @adityasingh2400 in #2713 fix: recover streamed nested agent output before cancellation fallback by @elainegan-openai in #2714 fix(mcp): retry ClosedResourceError on isolated session by @elainegan-openai in #2711 fix(mcp): retry MCP 408s on isolated session by @elainegan-openai in #2709 Documentation &amp; Other Changes Release 0.12.5 by @github-actions[bot] in #2716 Full Changelog : v0.12.4...v0.12.5

v0.12.4

v0.12.4

What's Changed fix: normalize cancelled MCP invocations into tool errors by @elainegan-openai in #2704 fix: retry transient streamable-http MCP tool failures on isolated session by @elainegan-openai in #2703 fix(memory): honor custom table names in AdvancedSQLiteSession by @seratch in #2694 fix(retry): cap jittered delay to max_delay by @Dhakshin2007 in #2676 Documentation &amp; Other Changes ci: harden PR auto-labeling against diff and output drift by @seratch in #2691 docs: streamline models page and UI tweak by @seratch in #2696 docs: update translated document pages by @github-actions[bot]...

v0.12.3

v0.12.3

What's Changed fix: handle inner MCP tool cancellations as tool errors by @elainegan-openai in #2681 fix: serialize streamable-http MCP requests per session by @elainegan-openai in #2682 Documentation &amp; Other Changes docs: update translated document pages by @github-actions[bot] in #2668 docs: fix minor typos in provider comments and test name by @luojiyin1987 in #2674 Release 0.12.3 by @github-actions[bot] in #2684 New Contributors @luojiyin1987 made their first contribution in #2674 @elainegan-openai made their first contribution in #2681 Full Changelog : v0.12.2...v0.12.3