OpenAI Agents SDK
Changelog
OpenAIs Agent SDK, hier mit Python-Releases
Diese Seite zeigt höchstens die 60 neuesten Releases aus offiziellen Quellen. Sie beansprucht keine vollständige Versionshistorie.
Die Versionshinweise werden im englischen Original angezeigt.
Neueste Releases (60)
v0.22.3
18. September 2026
## What's Changed fix(core): align conditional approvals with validated tool arguments by @seratch in https://github.com/openai/openai-agents-python/pull/5066 fix(core): deliver tool-not-found output on server-managed resume by @hyeonsang010716 in https://github.com/openai/openai-agents-python/pull/4947 fix(sandbox): keep command paths POSIX on a Windows host by @hyeonsang010716 in https://github.com/openai/openai-agents-python/pull/4958 fix(sessions): handle concurrent async SQLite startup by @00200200 in https://github.com/openai/openai-agents-python/pull/4987 fix(sessions): do not forward session limit as Conversations page size by @tiagovilasboas in https://github.com/openai/openai-agents-python/pull/4961 fix(tracing): do not cache a missing OPENAI_API_KEY by @hyeonsang010716 in https://github.com/openai/openai-agents-python/pull/5017 fix(extensions): include shell and apply_patch calls in AdvancedSQLiteSession's tool usage by @rioyu123 in https://github.com/openai/openai-agents-python/pull/4982 fix(extensions): reap subprocesses on early stream close by @Hughhhhcoder in https://github.com/openai/openai-agents-python/pull/4804 fix(extensions): preserve exact IDs in AdvancedSQLiteSession.delete_branch by @JiangLLM in https://github.com/openai/openai-agents-python/pull/4980 ### Documentation & Other Changes docs: align repository security and contributor guidance by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/4962 docs: clarify Unix-local execution boundaries by @seratch in https://github.com/openai/openai-agents-python/pull/5064 docs: update translated pages by @seratch in https://github.com/openai/openai-agents-python/pull/5065 docs(examples): drop the duplicated word in the Temporal trace name by @simpleqt in https://github.com/openai/openai-agents-python/pull/5079 chore: enable Python Dependabot coverage with release-age cooldowns by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/4964 chore: add code ownership and required release review guidance by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/4965 fix(deps): update vulnerable dependencies without changing SDK APIs by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/4963 chore(deps): update fastapi requirement from >=0.120.0 to >=0.141.1 in /examples/realtime/twilio_sip by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4966 chore(deps): update uvicorn requirement from >=0.38.0 to >=0.52.4 in /examples/realtime/twilio_sip by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4968 chore(deps): update openai requirement from <4,>=3.0.0 to >=3.8.0,<4 in /examples/realtime/twilio_sip by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4969 chore(deps): bump typing-extensions from 4.14.1 to 4.16.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4970 chore(deps-dev): bump grpcio from 1.76.0 to 1.83.1 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4971 chore(deps): bump sqlalchemy from 2.0.43 to 2.0.52 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4973 chore(deps-dev): bump cryptography from 45.0.7 to 50.0.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4975 ci: add Python and Actions CodeQL security scanning by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/4974 fix(ci): deploy docs after dependency and workflow updates by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4976 fix(deps): update python-multipart requirement from >=0.0.31 to >=0.0.32 in /examples/realtime/twilio by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5030 fix(deps): update python-dotenv requirement from >=1.2.2 to >=1.2.3 in /examples/realtime/twilio by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5031 fix(deps): update starlette requirement from >=1.3.1 to >=1.6.0 in /examples/realtime/twilio_sip by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5033 fix(deps): update python-dotenv requirement from >=1.2.2 to >=1.2.3 in /examples/realtime/twilio_sip by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5034 fix(deps-dev): bump pymdown-extensions from 11.0.1 to 11.0.2 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5036 fix(deps): bump runloop-api-client from 1.16.0 to 1.31.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5037 fix(deps): bump starlette from 1.3.1 to 1.6.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5038 fix(deps): update starlette requirement from >=1.3.1 to >=1.6.0 in /examples/realtime/twilio by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/5032 Add SDKs team as repository code owner by @jbeckwith-oai in https://github.com/openai/openai-agents-python/pull/5058 release: 0.22.3 by @seratch in https://github.com/openai/openai-agents-python/pull/5077 ## New Contributors @hyeonsang010716 made their first contribution in https://github.com/openai/openai-agents-python/pull/4947 @jbeckwith-oai made their first contribution in https://github.com/openai/openai-agents-python/pull/4962 @00200200 made their first contribution in https://github.com/openai/openai-agents-python/pull/4987 @JiangLLM made their first contribution in https://github.com/openai/openai-agents-python/pull/4980 @tiagovilasboas made their first contribution in https://github.com/openai/openai-agents-python/pull/4961 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.22.2...v0.22.3
OpenAI Agents SDK 0.22.2
9. September 2026
## What's Changed feat: support current image generation tool options by @seratch in https://github.com/openai/openai-agents-python/pull/4932 fix(sandbox): prevent UnixLocal file API symlink races by @seratch in https://github.com/openai/openai-agents-python/pull/4931 fix(sessions): reset compaction response chain after pop by @rksharma-owg in https://github.com/openai/openai-agents-python/pull/4934 ### Documentation & Other Changes docs: document v0.22.1 behavior updates by @seratch in https://github.com/openai/openai-agents-python/pull/4577 * release: 0.22.2 by @seratch in https://github.com/openai/openai-agents-python/pull/4935 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.22.1...v0.22.2
v0.22.1
8. September 2026
## What's Changed feat(core): support image results in web search tools by @seratch in https://github.com/openai/openai-agents-python/pull/4898 feat(core): customize output guardrail blocked messages by @seratch in https://github.com/openai/openai-agents-python/pull/4594 feat(mcp): add server-wide guardrails to MCP tools by @seratch in https://github.com/openai/openai-agents-python/pull/4632 feat(sandbox): add configurable Unix-local environment isolation by @seratch in https://github.com/openai/openai-agents-python/pull/4640 feat(sandbox): allow labels on Docker sandbox containers by @seanxuu in https://github.com/openai/openai-agents-python/pull/4564 feat(voice): expose streamed transcription options by @seratch in https://github.com/openai/openai-agents-python/pull/4645 fix(core): detach aggregated request usage entries by @green3sf in https://github.com/openai/openai-agents-python/pull/4519 fix(core): fail closed on empty tool arguments by @hsusul in https://github.com/openai/openai-agents-python/pull/4545 fix(core): strip created_by when replaying RunItems as input by @hsusul in https://github.com/openai/openai-agents-python/pull/4568 fix(core): strict_schema error message, REPL whitespace input, debug docstrings by @simpleqt in https://github.com/openai/openai-agents-python/pull/4600 fix(core): max_turns no longer clobbers a tripped input guardrail exception in streaming by @shoemoney in https://github.com/openai/openai-agents-python/pull/4606 fix(core): preserve serialized approval resume ownership by @seratch in https://github.com/openai/openai-agents-python/pull/4613 fix(core): read tool args without Pydantic property shadowing by @hsusul in https://github.com/openai/openai-agents-python/pull/4627 fix(core): accept JSON Schema type arrays of object for tool outputs by @hsusul in https://github.com/openai/openai-agents-python/pull/4647 fix(core): honor End of File hunks when the file ends in a newline by @lllakshit in https://github.com/openai/openai-agents-python/pull/4661 fix(core): preserve tuple annotations for variadic tool arguments by @Excelius-Wang in https://github.com/openai/openai-agents-python/pull/4655 fix(core): fix streamed response span losing response/input when consumer stops at completed event by @XuQuanxin04 in https://github.com/openai/openai-agents-python/pull/4692 fix(core): apply **kwargs value annotation to each keyword value by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4714 * fix(core): reject **kwargs keys that collide with named tool parameters by @rajarshidattapy in https://github.com/openai/openai-agents-python/pull/4674 fix(core): reject fixed-length tuple annotations for variadic tool arguments by @subhashpolisetti in https://github.com/openai/openai-agents-python/pull/4735 fix(core): preserve Field constraints on variadic tool parameters by @rioyu123 in https://github.com/openai/openai-agents-python/pull/4739 fix(core): close model providers created by Runner by @Excelius-Wang in https://github.com/openai/openai-agents-python/pull/4785 fix(core/voice): honor OpenAI provider options over default clients by @green3sf in https://github.com/openai/openai-agents-python/pull/4530 fix(chat-completions): merge a streamed turn's message into its pending tool-call message by @mmjerge in https://github.com/openai/openai-agents-python/pull/4728 fix(chat-completions): raise ModelBehaviorError on truncated empty completions by @weike-zhang in https://github.com/openai/openai-agents-python/pull/4513 fix(chat-completions) reject unpaired function outputs in Chat Completions by @apcha-oai in https://github.com/openai/openai-agents-python/pull/4699 fix(extensions): skip AdvancedSQLiteSession usage store when the branch has no turn by @rioyu123 in https://github.com/openai/openai-agents-python/pull/4822 fix(extensions): nest extra_body on the any-llm chat path by @hsusul in https://github.com/openai/openai-agents-python/pull/4544 fix(mcp): deep-copy cached tools before returning them by @hsusul in https://github.com/openai/openai-agents-python/pull/4525 fix(mcp): clear active MCP servers after cleanup by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4586 fix(mcp): deduplicate managed servers by @hsusul in https://github.com/openai/openai-agents-python/pull/4591 fix(realtime): advance crossed guardrail thresholds by @hsusul in https://github.com/openai/openai-agents-python/pull/4590 fix(realtime): preserve item status on retrieved conversation items by @shoutoutuoadi325 in https://github.com/openai/openai-agents-python/pull/4598 fix(sandbox): finish dependency cleanup on cancellation by @hsusul in https://github.com/openai/openai-agents-python/pull/4607 fix(sandbox): keep unbounded UnixLocal workspace I/O off the event loop by @ayaangazali in https://github.com/openai/openai-agents-python/pull/4700 fix(sandbox): preserve UTF-8 boundaries in Cloudflare SSE by @Hughhhhcoder in https://github.com/openai/openai-agents-python/pull/4707 fix(sandbox): clean up PTY startup cancellation by @Hughhhhcoder in https://github.com/openai/openai-agents-python/pull/4750 fix(sandbox): settle PTY output before cleanup by @seratch in https://github.com/openai/openai-agents-python/pull/4738 fix(sandbox): preserve workdir for shell command lists by @hsusul in https://github.com/openai/openai-agents-python/pull/4915 fix(sessions): recover failed resumed Session writes before model calls by @seratch in https://github.com/openai/openai-agents-python/pull/4630 fix(sessions): recover failed resumed Session writes on a renewed interruption by @ayaangazali in https://github.com/openai/openai-agents-python/pull/4650 fix(sessions): persist resumed tool guardrail results by @FU-max-boop in https://github.com/openai/openai-agents-python/pull/4654 fix(sessions): recover resumed handoffs after session append failures by @seratch in https://github.com/openai/openai-agents-python/pull/4725 fix(sessions): settle conversation deletion before propagating cancellation by @Excelius-Wang in https://github.com/openai/openai-agents-python/pull/4790 fix(sessions): preserve concurrent writes during compaction by @seratch in https://github.com/openai/openai-agents-python/pull/4736 fix(sessions): reject resuming a run whose accepted terminal output was not persisted by @Ayushraj06-bit in https://github.com/openai/openai-agents-python/pull/4698 fix(sessions): preserve Session transformations during generation tracking by @seratch in https://github.com/openai/openai-agents-python/pull/4917 fix(tracing): flush buffered data after tracing is disabled by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4528 fix(tracing): preserve response IDs in redacted traces by @seratch in https://github.com/openai/openai-agents-python/pull/4641 fix(tracing): record the tool output on approval-gated function spans by @dfedoryshchev in https://github.com/openai/openai-agents-python/pull/4866 fix(voice): support custom OpenAI TTS voice IDs by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4541 fix(voice): forward streamed STT language and prompt by @seratch in https://github.com/openai/openai-agents-python/pull/4574 fix(voice): honor client config for streamed STT by @seratch in https://github.com/openai/openai-agents-python/pull/4575 fix(voice) reject ignored explicit-client options by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4527 fix(voice): include current OpenAI TTS voices by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4535 fix(voice): use monotonic STT event deadlines by @seratch in https://github.com/openai/openai-agents-python/pull/4593 fix(voice): support context in single-agent workflow by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4636 fix(voice): enforce public Voice class state coverage by @seratch in https://github.com/openai/openai-agents-python/pull/4644 fix(voice): redact STT prompts from traces by @hsusul in https://github.com/openai/openai-agents-python/pull/4663 fix(voice): redact TTS instructions from speech spans by @ayaangazali in https://github.com/openai/openai-agents-python/pull/4676 fix(voice): accept every NumPy spelling of a supported TTS dtype by @Nikhils-G in https://github.com/openai/openai-agents-python/pull/4778 fix(voice): wake stream when producer is cancelled by @Hughhhhcoder in https://github.com/openai/openai-agents-python/pull/4825 fix(visualization): preserve nodes with duplicate names by @tandede in https://github.com/openai/openai-agents-python/pull/4512 refactor: extract RunState agent graph identity by @seratch in https://github.com/openai/openai-agents-python/pull/4876 refactor: share provider generation-span population by @seratch in https://github.com/openai/openai-agents-python/pull/4877 ### Documentation & Other Changes docs: document v0.22.0 behavior changes by @seratch in https://github.com/openai/openai-agents-python/pull/4522 docs: fix wording in handoff example prompts by @Chair403 in https://github.com/openai/openai-agents-python/pull/4520 docs: preserve English heading anchors in translated pages by @saime428 in https://github.com/openai/openai-agents-python/pull/4580 docs: refresh tracing integration links by @seratch in https://github.com/openai/openai-agents-python/pull/4634 docs: clarify capability visibility and authorization by @seratch in https://github.com/openai/openai-agents-python/pull/4642 docs: clarify database driver installation for SQLAlchemy sessions by @rioyu123 in https://github.com/openai/openai-agents-python/pull/4743 docs: skip reference pages on Windows by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4761 docs: clarify requested state consistency guarantees by @rksharma-owg in https://github.com/openai/openai-agents-python/pull/4903 docs: make the encrypted session quick start self-contained by @rioyu123 in https://github.com/openai/openai-agents-python/pull/4909 fix: freeze the public voice API contract by @seratch in https://github.com/openai/openai-agents-python/pull/4578 fix: enforce public type alias contract coverage by @seratch in https://github.com/openai/openai-agents-python/pull/4595 fix: route verification changes and require confirmed docs-only pushes by @seratch in https://github.com/openai/openai-agents-python/pull/4880 fix: propagate the serial test runner's exit code on Windows by @MohammedAlkindi in https://github.com/openai/openai-agents-python/pull/4771 fix: harden PyPI publishing and require manual release tags by @seratch in https://github.com/openai/openai-agents-python/pull/4726 fix: require complete policy for new public TypedDicts by @seratch in https://github.com/openai/openai-agents-python/pull/4900 fix: simplify verification and stabilize sandbox tests by @seratch in https://github.com/openai/openai-agents-python/pull/4916 fix: consolidate Docker-backed integration tests by @seratch in https://github.com/openai/openai-agents-python/pull/4667 chore(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4802 chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4803 chore: run repository skill tests in dedicated CI by @seratch in https://github.com/openai/openai-agents-python/pull/4881 refactor: separate release contract verification responsibilities by @seratch in https://github.com/openai/openai-agents-python/pull/4878 perf: reduce async stability command startup overhead by @seratch in https://github.com/openai/openai-agents-python/pull/4874 test: make async progress and trace-worker tests deterministic by @seratch in https://github.com/openai/openai-agents-python/pull/4875 test: organize Realtime session tests by responsibility by @seratch in https://github.com/openai/openai-agents-python/pull/4879 test(sandbox): skip unavailable Windows symlinks by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4853 release: 0.22.1 by @seratch in https://github.com/openai/openai-agents-python/pull/4576 ## New Contributors @Chair403 made their first contribution in https://github.com/openai/openai-agents-python/pull/4520 @green3sf made their first contribution in https://github.com/openai/openai-agents-python/pull/4519 @tandede made their first contribution in https://github.com/openai/openai-agents-python/pull/4512 @seanxuu made their first contribution in https://github.com/openai/openai-agents-python/pull/4564 @simpleqt made their first contribution in https://github.com/openai/openai-agents-python/pull/4600 @shoemoney made their first contribution in https://github.com/openai/openai-agents-python/pull/4606 @shoutoutuoadi325 made their first contribution in https://github.com/openai/openai-agents-python/pull/4598 @ayaangazali made their first contribution in https://github.com/openai/openai-agents-python/pull/4650 @lllakshit made their first contribution in https://github.com/openai/openai-agents-python/pull/4661 @Excelius-Wang made their first contribution in https://github.com/openai/openai-agents-python/pull/4655 @XuQuanxin04 made their first contribution in https://github.com/openai/openai-agents-python/pull/4692 @Hughhhhcoder made their first contribution in https://github.com/openai/openai-agents-python/pull/4707 @rajarshidattapy made their first contribution in https://github.com/openai/openai-agents-python/pull/4674 @mmjerge made their first contribution in https://github.com/openai/openai-agents-python/pull/4728 @subhashpolisetti made their first contribution in https://github.com/openai/openai-agents-python/pull/4735 @rioyu123 made their first contribution in https://github.com/openai/openai-agents-python/pull/4822 @Nikhils-G made their first contribution in https://github.com/openai/openai-agents-python/pull/4778 @MohammedAlkindi made their first contribution in https://github.com/openai/openai-agents-python/pull/4771 @Ayushraj06-bit made their first contribution in https://github.com/openai/openai-agents-python/pull/4698 @rksharma-owg made their first contribution in https://github.com/openai/openai-agents-python/pull/4903 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.22.0...v0.22.1
v0.22.0
19. August 2026
## Key Changes
Version 0.22.0 is a minor release because it adds substantial runtime hardening and tightens an existing provider configuration contract. Applications that combine an explicit openai_client with organization or project must move those values to the AsyncOpenAI client.
### Highlights:
- Redacts terminal function-tool output rejected by agent output guardrails from replayable and persisted SDK state.
- Raises ModelBehaviorError for non-streaming Responses with terminal status failed or incomplete.
- Rejects conflicting provider options when OpenAIProvider receives an explicit client.
- Isolates usage accounting between independent RunState checkpoints while preserving nested-agent aggregation.
- Expands agents registered through handoff(agent) in generated graphs.
- Clarifies the existing shallow-copy behavior of Agent.clone() and RealtimeAgent.clone().
## What's Changed
fix(core): redact blocked tool outputs from replay state by @seratch in https://github.com/openai/openai-agents-python/pull/4507
fix(core): reject ignored explicit-client options for OpenAIProvider by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4497
fix(core): preserve Griffe logger inheritance by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4494
fix(core): reject terminal failed/incomplete responses in non-streaming get_response by @weike-zhang in https://github. fix(core): isolate usage between RunState checkpoints by @chiruu12 in https://github.com/openai/openai-agents-python/pull/4479
fix(sandbox): require apply_patch update hunks by @li2631026381-alt in https://github.com/openai/openai-agents-python/pull/4470
fix(sandbox): enforce Windows mypy compatibility by @seratch in https://github.com/openai/openai-agents-python/pull/4499
fix(tracing): respect model-data logging redaction for record_model_error_on_span by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4496
fix(tracing): clean up processors after tracing is disabled by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4502
fix(visualization): expand handoff() targets in agent graphs by @hsusul in https://github.com/openai/openai-agents-python/pull/4517
### Documentation & Other Changes
docs: document v0.21.1 runtime behavior by @seratch in https://github.com/openai/openai-agents-python/pull/4460
docs: correct Agent.clone list attribute semantics by @thegoodengineer in https://github.com/openai/openai-agents-python/pull/4474
docs: add testing resources to llms indexes by @teachershuang in https://github.com/openai/openai-agents-python/pull/4509
ci: align Python version coverage by @seratch in https://github.com/openai/openai-agents-python/pull/4475
test: use sys.executable instead of tee for the stdio placeholder command by @ErenAta16 in https://github.com/openai/openai-agents-python/pull/4478
fix: keep Codex verification for development sandboxed by @seratch in https://github.com/openai/openai-agents-python/pull/4508
com/openai/openai-agents-python/pull/4516
release: 0.22.0 by @seratch in https://github.com/openai/openai-agents-python/pull/4523
## New Contributors
@li2631026381-alt made their first contribution in https://github.com/openai/openai-agents-python/pull/4470
@thegoodengineer made their first contribution in https://github.com/openai/openai-agents-python/pull/4474
@teachershuang made their first contribution in https://github.com/openai/openai-agents-python/pull/4509
@weike-zhang made their first contribution in https://github.com/openai/openai-agents-python/pull/4516
@chiruu12 made their first contribution in https://github.com/openai/openai-agents-python/pull/4479
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.21.1...v0.22.0
v0.21.1
17. August 2026
## What's Changed feat(core): add model call timeouts by @seratch in https://github.com/openai/openai-agents-python/pull/4428 feat(sandbox): add run-scoped sandbox working directories by @seratch in https://github.com/openai/openai-agents-python/pull/4427 feat(sandbox): allow Docker sandboxes to disable networking by @koadegno in https://github.com/openai/openai-agents-python/pull/4452 feat(sandbox): add Modal sandbox resource options by @Filimoa in https://github.com/openai/openai-agents-python/pull/4455 fix(core): honor exact call approval decisions by @seratch in https://github.com/openai/openai-agents-python/pull/4447 fix(core): count Responses requests without usage by @seratch in https://github.com/openai/openai-agents-python/pull/4453 fix(core): close all MultiProvider children after failures by @fszcd in https://github.com/openai/openai-agents-python/pull/4438 fix(core): reject partially matched stacked anchors by @Coiggahou2002 in https://github.com/openai/openai-agents-python/pull/4431 fix(chat-completions): Chat Completions reasoning replay by @seratch in https://github.com/openai/openai-agents-python/pull/4432 fix(realtime): truncate audio at zero elapsed time by @Chirag6722 in https://github.com/openai/openai-agents-python/pull/4457 fix(realtime): end iteration after clean server close by @seratch in https://github.com/openai/openai-agents-python/pull/4461 fix(sessions): prevent advanced SQLite structure table conflicts by @seratch in https://github.com/openai/openai-agents-python/pull/4454 fix(sessions): include compaction usage in run totals by @seratch in https://github.com/openai/openai-agents-python/pull/4446 fix(sandbox): validate view_image raster content by @seratch in https://github.com/openai/openai-agents-python/pull/4462 fix(sandbox): keep model paths POSIX-normalized by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4416 fix(sandbox): normalize apply_patch paths as POSIX by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4437 ### Documentation & Other Changes docs: updates for v0.21.0 release by @seratch in https://github.com/openai/openai-agents-python/pull/4381 docs: list Tuning Engines tracing integration by @cerebrixos in https://github.com/openai/openai-agents-python/pull/4440 fix: update cffi lock for Python 3.14 by @seratch in https://github.com/openai/openai-agents-python/pull/4448 release: 0.21.1 by @seratch in https://github.com/openai/openai-agents-python/pull/4467 ## New Contributors @Coiggahou2002 made their first contribution in https://github.com/openai/openai-agents-python/pull/4431 @fszcd made their first contribution in https://github.com/openai/openai-agents-python/pull/4438 @cerebrixos made their first contribution in https://github.com/openai/openai-agents-python/pull/4440 @Filimoa made their first contribution in https://github.com/openai/openai-agents-python/pull/4455 @koadegno made their first contribution in https://github.com/openai/openai-agents-python/pull/4452 @Chirag6722 made their first contribution in https://github.com/openai/openai-agents-python/pull/4457 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.21.0...v0.21.1
v0.21.0
15. August 2026
## Key Changes
This minor release does not introduce a known breaking SDK behavior change. The minor version bump is for the new provider-neutral testing APIs and the OpenAI Python v3 compatibility update.
### Highlights:
- Added agents.testing, agents.realtime.testing, and agents.voice.testing utilities for deterministic Agent, Sandbox, Realtime, and Voice workflow tests without provider requests.
- Updated OpenAI provider compatibility to openai>=3.0.0,<4, including HTTPX2-aware request, response, transport, and exception handling.
- Hardened RunState interruption snapshots, recursive agent-tool approvals, max-turn finalization, streaming cleanup, and sensitive-error redaction.
- Improved MCP lifecycle snapshot isolation and added configurable retry backoff ceilings.
- Added Sandbox Runloop existing-secret support and tightened view-image path grants.
- Added stricter Voice validation for invalid channels, frame rates, incomplete multichannel frames, and non-finite audio rates.
## What's Changed
feat: support OpenAI Python 3 and HTTPX2 by @seratch in https://github.com/openai/openai-agents-python/pull/4380
feat: add scripted model test utilities by @seratch in https://github.com/openai/openai-agents-python/pull/4362
fix: freeze public testing module contracts by @seratch in https://github.com/openai/openai-agents-python/pull/4386
fix: freeze public testing API state contracts by @seratch in https://github.com/openai/openai-agents-python/pull/4404
fix(core): preserve scripted annotation streaming across Python SDK releases by @apcha-oai in https://github.com/openai/openai-agents-python/pull/4422
fix(core): isolate interruption results by @hsusul in https://github.com/openai/openai-agents-python/pull/4384
fix(core): close the model stream when a streamed turn ends in a terminal failure by @Luccacvb in https://github.com/openai/openai-agents-python/pull/4366
fix(core): redact tool output value from output-type validation errors by @hsusul in https://github.com/openai/openai-agents-python/pull/4396
fix(core): align Responses parallel tool calls with converted tools by @seratch in https://github.com/openai/openai-agents-python/pull/4405
fix(core): max-turn handler session semantics by @seratch in https://github.com/openai/openai-agents-python/pull/4412
fix(core): detach RunState interruption snapshots by @seratch in https://github.com/openai/openai-agents-python/pull/4409
fix(core): isolate RunState checkpoint tool decisions by @seratch in https://github.com/openai/openai-agents-python/pull/4413
fix(core): resume recursive agent tool approvals by @seratch in https://github.com/openai/openai-agents-python/pull/4414
fix(mcp): stop handing the tools cache to callers by @chinmayv095 in https://github.com/openai/openai-agents-python/pull/4424
fix(mcp): protect manager lifecycle state snapshots by @seratch in https://github.com/openai/openai-agents-python/pull/4407
fix(mcp): isolate manager lifecycle results by @hsusul in https://github.com/openai/openai-agents-python/pull/4368
fix(mcp): add configurable retry backoff ceiling by @seratch in https://github.com/openai/openai-agents-python/pull/4379
fix(realtime): handle non-finite audio rates by @hsusul in https://github.com/openai/openai-agents-python/pull/4419
fix(sandbox): expose the scripted sandbox session type by @seratch in https://github.com/openai/openai-agents-python/pull/4406
fix(sandbox): apply stacked anchors sequentially by @seratch in https://github.com/openai/openai-agents-python/pull/4369
fix(sandbox): snapshot HTTP proxy headers by @hsusul in https://github.com/openai/openai-agents-python/pull/4397
fix(sandbox): snapshot per-op audit policies by @hsusul in https://github.com/openai/openai-agents-python/pull/4398
fix(sandbox): honor view_image extra path grants by @sylvesterkaczmarek in https://github.com/openai/openai-agents-python/pull/4417
fix(sessions): handle zero conversation history limits by @hsusul in https://github.com/openai/openai-agents-python/pull/4365
fix(voice): honor WAV sample width by @FU-max-boop in https://github.com/openai/openai-agents-python/pull/4361
fix(voice): reject incomplete multichannel audio frames by @seratch in https://github.com/openai/openai-agents-python/pull/4370
fix(voice): reject non-positive audio channels by @hansu650 in https://github.com/openai/openai-agents-python/pull/4372
fix(voice): reject non-positive audio frame rates by @hsusul in https://github.com/openai/openai-agents-python/pull/4382
fix(voice): stop buffering audio when audio tracing is disabled by @rxits in https://github.com/openai/openai-agents-python/pull/4411
fix(extensions): gate AnyLLM parallel tool calls on converted tools by @weivwang in https://github.com/openai/openai-agents-python/pull/4363
fix(extensions): preserve resume argument ordering by @viyatb-oai in https://github.com/openai/openai-agents-python/pull/4400
fix(extensions): let managed_secrets reference existing Runloop secrets by @xumaple in https://github.com/openai/openai-agents-python/pull/4378
### Documentation & Other Changes
docs: synchronize v0.20.0 features by @seratch in https://github.com/openai/openai-agents-python/pull/4280
docs: clarify PGP key location by @jaideeppyne in https://github.com/openai/openai-agents-python/pull/4371
test: order test spans by start sequence, not by started_at alone by @ErenAta16 in https://github.com/openai/openai-agents-python/pull/4392
release: 0.21.0 by @seratch in https://github.com/openai/openai-agents-python/pull/4387
## New Contributors
@FU-max-boop made their first contribution in https://github.com/openai/openai-agents-python/pull/4361
@weivwang made their first contribution in https://github.com/openai/openai-agents-python/pull/4363
@jaideeppyne made their first contribution in https://github.com/openai/openai-agents-python/pull/4371
@hansu650 made their first contribution in https://github.com/openai/openai-agents-python/pull/4372
@xumaple made their first contribution in https://github.com/openai/openai-agents-python/pull/4378
@viyatb-oai made their first contribution in https://github.com/openai/openai-agents-python/pull/4400
@ErenAta16 made their first contribution in https://github.com/openai/openai-agents-python/pull/4392
@apcha-oai made their first contribution in https://github.com/openai/openai-agents-python/pull/4422
* @sylvesterkaczmarek made their first contribution in https://github.com/openai/openai-agents-python/pull/4417
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.20.0...v0.21.0
v0.20.0
11. August 2026
## Key Changes
Version 0.20.0 is a minor release because it changes the implicit default model and includes a potentially breaking MCP dependency migration for applications with customized local HTTP transports. MCP v1 remains supported, and affected applications can migrate to httpx2 or pin mcp<2.
### Highlights:
- The default model is now gpt-5.6-luna; explicit models, run-level overrides, and OPENAI_DEFAULT_MODEL continue to take precedence.
- Local MCP connections support MCP Python SDK v1 and v2 across stdio, SSE, and Streamable HTTP transports.
- Applications using custom MCP HTTP authentication or client factories must use the HTTP types owned by the installed MCP major version, or pin mcp<2.
- RunState.add_input() can stage durable user input before a resumed model call, with guardrail, persistence, and serialization support.
- Sandbox mount validation adds explicit credential-exposure acknowledgements and preserves redacted error contracts without serializing credential authority.
- Realtime input transcription supports the GA transcription settings for gpt-live-transcribe, gpt-transcribe, and gpt-realtime-whisper.
## What's Changed
feat: use GPT-5.6 Luna as the default model by @seratch in https://github.com/openai/openai-agents-python/pull/4282
feat: add durable pending input to RunState by @seratch in https://github.com/openai/openai-agents-python/pull/4325
feat(mcp): support MCP Python SDK v1 and v2 by @seratch in https://github.com/openai/openai-agents-python/pull/4106
feat(sessions): pass run context to custom sessions by @seratch in https://github.com/openai/openai-agents-python/pull/4209
feat(realtime): support GA transcription options by @seratch in https://github.com/openai/openai-agents-python/pull/4351
feat: preserve raw usage payloads by @seratch in https://github.com/openai/openai-agents-python/pull/4279
feat: allow applications to approve unsafe replays by @seratch in https://github.com/openai/openai-agents-python/pull/4319
fix: falsy optional reference handling by @seratch in https://github.com/openai/openai-agents-python/pull/4305
fix: prevent queue consumer deadlocks by @seratch in https://github.com/openai/openai-agents-python/pull/4201
fix: publish completed streamed guardrail results on failure paths by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4223
fix: annotate the bare tool guardrail decorator overloads by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4238
fix: tool approval is not honored on resume when Runner.run is given a context by @ojassharma7 in https://github.com/openai/openai-agents-python/pull/4245
fix: redact JSON validation errors by @seratch in https://github.com/openai/openai-agents-python/pull/4211
fix: copy raw_responses when building a RunState by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4237
fix: keep empty turns in the nested conversation history by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4230
fix: keep tool guardrail results when a resumed run interrupts again by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4239
fix: work on copies of the lists a resumed run adopts from RunState by @hsusul in https://github.com/openai/openai-agents-python/pull/4251
fix: strip placeholder item IDs without provider_data on the Responses path by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4266
fix: bind tool approvals to concrete invocations by @seratch in https://github.com/openai/openai-agents-python/pull/4257
fix: normalize optional fields in tool invocation identity by @seratch in https://github.com/openai/openai-agents-python/pull/4289
fix: count requests when providers omit usage by @seratch in https://github.com/openai/openai-agents-python/pull/4290
fix: suppress pydantic serializer warnings by @seratch in https://github.com/openai/openai-agents-python/pull/4291
fix: keep FunctionTool subclasses copyable by @seratch in https://github.com/openai/openai-agents-python/pull/4311
fix: preserve streamed guardrail session state by @seratch in https://github.com/openai/openai-agents-python/pull/4312
fix: keep acknowledged safety checks serializable after restore by @ribhavjain in https://github.com/openai/openai-agents-python/pull/4316
fix: preserve default-valued fields in serialized tool output by @hsusul in https://github.com/openai/openai-agents-python/pull/4307
fix: strip output-only created_by when replaying model output as input by @hsusul in https://github.com/openai/openai-agents-python/pull/4308
fix: preserve local shell outputs across RunState resume by @seratch in https://github.com/openai/openai-agents-python/pull/4320
fix: serialize containers of models and dataclasses as structured data by @ribhavjain in https://github.com/openai/openai-agents-python/pull/4339
fix: reject schemas that exceed safe recursion depth by @seratch in https://github.com/openai/openai-agents-python/pull/4358
fix: reject unsafe strict-schema ref siblings by @seratch in https://github.com/openai/openai-agents-python/pull/4356
fix(sandbox): reject unsafe mount credential configurations by @seratch in https://github.com/openai/openai-agents-python/pull/4255
fix(extensions): settle snapshot directory mount transitions for Modal by @seratch in https://github.com/openai/openai-agents-python/pull/4315
fix(sandbox): preserve sandbox error contracts during mount redaction by @seratch in https://github.com/openai/openai-agents-python/pull/4344
feat(sandbox): add explicit mount credential exposure acknowledgements by @seratch in https://github.com/openai/openai-agents-python/pull/4321
fix(sandbox): cancel sibling env resolvers when one fails by @PranavMishra28 in https://github.com/openai/openai-agents-python/pull/4195
fix(sandbox): encode Blaxel terminal WebSocket URL query values by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4217
fix(sandbox): stop splitting Cloudflare SSE events at chunk boundaries by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4215
fix(sandbox): keep move_to when coercing apply_patch operation mappings by @hsusul in https://github.com/openai/openai-agents-python/pull/4242
fix(sandbox): retain program items in memory rollouts by @seratch in https://github.com/openai/openai-agents-python/pull/4276
fix(sandbox): restore archived file modes when extracting a workspace tar by @hsusul in https://github.com/openai/openai-agents-python/pull/4287
fix(sandbox): keep source entry metadata when lazily loading a skill by @hsusul in https://github.com/openai/openai-agents-python/pull/4294
fix(mcp): hosted MCP approval identity by @seratch in https://github.com/openai/openai-agents-python/pull/4256
fix(mcp): keep MCP error content when structured output is enabled by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4224
fix(mcp): build the active server list without re-consuming the iterable by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4235
fix(mcp): preserve free-form MCP object schemas by @seratch in https://github.com/openai/openai-agents-python/pull/4310
fix(mcp): serialize non-text content blocks as JSON instead of Python repr by @ribhavjain in https://github.com/openai/openai-agents-python/pull/4338
fix(mcp): serialize manager lifecycle operations by @seratch in https://github.com/openai/openai-agents-python/pull/4340
fix(mcp): bound lifecycle and CI waits by @seratch in https://github.com/openai/openai-agents-python/pull/4342
fix(chat-completions): keep url citations when converting chat completions output by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4222
fix(chat-completions): assemble chat completions content parts in content index order by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4236
fix(chat-completions): propagate the OpenAI request ID on the Chat Completions path by @hsusul in https://github.com/openai/openai-agents-python/pull/4243
fix(chat-completions): keep url citations on the streamed chat completions path by @Luccacvb in https://github.com/openai/openai-agents-python/pull/4252
fix(chat-completions): announce the chat completions assistant message once by @hsusul in https://github.com/openai/openai-agents-python/pull/4275
fix(chat-completions): convert input_file items that reference a file_id on the Chat Completions path by @hsusul in https://github.com/openai/openai-agents-python/pull/4295
fix(chat-completions): raise on audio output in the streamed chat completions path by @Luccacvb in https://github.com/openai/openai-agents-python/pull/4309
fix(chat-completions): omit parallel_tool_calls without tools on the Chat Completions path by @Luccacvb in https://github.com/openai/openai-agents-python/pull/4359
fix(sessions): release SQLite engine config entries when engines are collected by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4210
fix(sessions): enforce closed state on SQLite session empty add_items by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4231
fix(sessions): make session mutations atomic by @seratch in https://github.com/openai/openai-agents-python/pull/4212
fix(sessions): preserve required program item ids for OpenAI conversations by @hsusul in https://github.com/openai/openai-agents-python/pull/4253
fix(sessions): apply the reasoning item id policy to stored session history by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4278
fix(sessions): preserve DaprSession created_at across writes by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4213
fix(sessions): strip placeholder item IDs before Conversations persistence by @hsusul in https://github.com/openai/openai-agents-python/pull/4288
fix(sessions): preserve falsey compaction decision hooks by @hsusul in https://github.com/openai/openai-agents-python/pull/4299
fix(sessions): restore session history when compaction replacement is cancelled by @nothariharan in https://github.com/openai/openai-agents-python/pull/4298
fix(sessions): prune orphaned tool outputs from limited sessions by @seratch in https://github.com/openai/openai-agents-python/pull/4324
fix(realtime): apply tool call item updates to session history by @hsusul in https://github.com/openai/openai-agents-python/pull/4284
fix(realtime): preserve falsey custom models by @hsusul in https://github.com/openai/openai-agents-python/pull/4286
fix(realtime): compute G.711 audio length for typed and mapping format spellings by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4292
fix(voice): forward TTSModelSettings.speed to the OpenAI speech API by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4220
fix(voice): keep the word separator when flushing streamed sentences by @abhay-codes07 in https://github.com/openai/openai-agents-python/pull/4227
fix(voice): start the dispatcher when a session ends with no turns by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4259
fix(voice): report transcription session close failures to the consumer by @Luccacvb in https://github.com/openai/openai-agents-python/pull/4343
fix(tracing): release the trace scope when a generator is closed by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4221
fix(tracing): release the span scope when a generator is closed by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4233
fix(tracing): catch only the context reset on generator close by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4232
fix(extensions): harden tool output trimming contracts by @seratch in https://github.com/openai/openai-agents-python/pull/4204
fix(extensions): forward prompt_cache_retention on the any-llm Responses path by @hsusul in https://github.com/openai/openai-agents-python/pull/4248
fix(extensions): resolve the any-llm default model at call time by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4219
fix(extensions): surface content filter refusals on the any_llm chat path by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/4234
fix(extensions): omit litellm's parallel_tool_calls without tools by @seratch in https://github.com/openai/openai-agents-python/pull/4330
### Documentation & Other Changes
docs: correct nonexistent guardrail type names by @dfedoryshchev in https://github.com/openai/openai-agents-python/pull/4218
docs(tracing): fix custom span output example by @XSAM in https://github.com/openai/openai-agents-python/pull/4196
docs: voice quickstart also needs sounddevice by @ColebyPearson in https://github.com/openai/openai-agents-python/pull/4250
docs: improve translation source clarity by @seratch in https://github.com/openai/openai-agents-python/pull/4306
perf: run serial tests alongside xdist by @seratch in https://github.com/openai/openai-agents-python/pull/4197
perf: add source-only typecheck target by @seratch in https://github.com/openai/openai-agents-python/pull/4200
perf: accelerate developer checks by @seratch in https://github.com/openai/openai-agents-python/pull/4258
test: harden release compatibility contracts by @seratch in https://github.com/openai/openai-agents-python/pull/4297
ci: check prospective release contracts before merge by @seratch in https://github.com/openai/openai-agents-python/pull/4347
fix: make release API contract promotion policy-driven by @seratch in https://github.com/openai/openai-agents-python/pull/4349
fix: freeze Runloop platform properties by @seratch in https://github.com/openai/openai-agents-python/pull/4355
test: isolate released API source validation by @seratch in https://github.com/openai/openai-agents-python/pull/4350
release: 0.20.0 by @seratch in https://github.com/openai/openai-agents-python/pull/4348
## New Contributors
@XSAM made their first contribution in https://github.com/openai/openai-agents-python/pull/4196
@abhay-codes07 made their first contribution in https://github.com/openai/openai-agents-python/pull/4217
@ColebyPearson made their first contribution in https://github.com/openai/openai-agents-python/pull/4250
@Luccacvb made their first contribution in https://github.com/openai/openai-agents-python/pull/4252
@ojassharma7 made their first contribution in https://github.com/openai/openai-agents-python/pull/4245
@nothariharan made their first contribution in https://github.com/openai/openai-agents-python/pull/4298
@ribhavjain made their first contribution in https://github.com/openai/openai-agents-python/pull/4316
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.19.4...v0.20.0
v0.19.4
5. August 2026
## What's Changed fix: preserve completed tool guardrail results by @seratch in https://github.com/openai/openai-agents-python/pull/4180 fix: redact invalid tool argument errors by @seratch in https://github.com/openai/openai-agents-python/pull/4182 fix: defer non-stream session saves until output guardrails by @seratch in https://github.com/openai/openai-agents-python/pull/4184 fix: honor resolved status before policy checks by @seratch in https://github.com/openai/openai-agents-python/pull/4183 fix: cancel sibling work after concurrent failures by @seratch in https://github.com/openai/openai-agents-python/pull/4185 fix: surface non-streaming content-filter refusals by @seratch in https://github.com/openai/openai-agents-python/pull/4188 fix(mcp): derive streamable HTTP retry backoff from backoffs taken by @rxits in https://github.com/openai/openai-agents-python/pull/4174 fix(realtime): clean up failed connection attempts by @seratch in https://github.com/openai/openai-agents-python/pull/4189 fix(tracing): mark non-streaming agent span failures by @seratch in https://github.com/openai/openai-agents-python/pull/4191 fix(sandbox): enforce token output budgets by @cosin2077 in https://github.com/openai/openai-agents-python/pull/3934 fix(sandbox): single-flight cached dependency factories by @seratch in https://github.com/openai/openai-agents-python/pull/4178 fix(sessions): enforce closed state in MongoDBSession by @seratch in https://github.com/openai/openai-agents-python/pull/4176 fix(sessions): preserve repeated history provenance by @seratch in https://github.com/openai/openai-agents-python/pull/4181 fix(sessions): skip conversation creation on empty add_items by @seratch in https://github.com/openai/openai-agents-python/pull/4190 fix(sessions): reject reused branch IDs when creating a branch by @seratch in https://github.com/openai/openai-agents-python/pull/4186 fix(extensions): preserve streamed provider thinking blocks by @seratch in https://github.com/openai/openai-agents-python/pull/4177 ### Documentation & Other Changes perf: speed up the test suite by @seratch in https://github.com/openai/openai-agents-python/pull/4171 test: make parallel guardrail overlap deterministic by @seratch in https://github.com/openai/openai-agents-python/pull/4187 test: make async tool and guardrail tests deterministic by @seratch in https://github.com/openai/openai-agents-python/pull/4192 test: make parent cancellation tests deterministic by @seratch in https://github.com/openai/openai-agents-python/pull/4193 Release 0.19.4 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/4194 ## New Contributors @rxits made their first contribution in https://github.com/openai/openai-agents-python/pull/4174 * @cosin2077 made their first contribution in https://github.com/openai/openai-agents-python/pull/3934 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.19.3...v0.19.4
v0.19.3
4. August 2026
## What's Changed fix: resolve agent tool name collisions consistently by @seratch in https://github.com/openai/openai-agents-python/pull/4137 fix: reconcile resumed tool name collisions by @seratch in https://github.com/openai/openai-agents-python/pull/4145 fix: persist the max-turns handler output to the session by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4160 fix: report output guardrail results when a tripwire aborts the run by @Kaif10 in https://github.com/openai/openai-agents-python/pull/4090 fix: replace closed default loop in run_sync by @hsusul in https://github.com/openai/openai-agents-python/pull/4102 fix: honor falsey custom output extractors for agents as tools by @n33levo in https://github.com/openai/openai-agents-python/pull/4088 fix: report tool guardrail results for streamed runs by @hsusul in https://github.com/openai/openai-agents-python/pull/4097 fix: preserve approved tool output on streamed resume by @seratch in https://github.com/openai/openai-agents-python/pull/4126 fix: normalize typeless strict object schemas by @seratch in https://github.com/openai/openai-agents-python/pull/4139 fix: synchronize after-turn cancellation with event consumption by @seratch in https://github.com/openai/openai-agents-python/pull/4130 fix: keep input item order when collapsing duplicates by @hsusul in https://github.com/openai/openai-agents-python/pull/4140 fix: stop emitting handoff calls as streamed tool_called events by @hsusul in https://github.com/openai/openai-agents-python/pull/4146 fix: preserve tool call and output order when deduplicating inputs by @seratch in https://github.com/openai/openai-agents-python/pull/4147 fix: honor falsey handoff input filters by @omidsaffari in https://github.com/openai/openai-agents-python/pull/4153 fix: define explicit zero-value contracts by @seratch in https://github.com/openai/openai-agents-python/pull/4101 fix: keep committed tool session records when a streamed output guardrail trips by @LHMQ878 in https://github.com/openai/openai-agents-python/pull/4148 fix(mcp): auto-paginate tool and prompt listings by @seratch in https://github.com/openai/openai-agents-python/pull/4094 fix(chatcmpl): clear pending thinking blocks when flushing an assistant message by @Kaif10 in https://github.com/openai/openai-agents-python/pull/4089 fix(sandbox): remove apply_patch move source as the bound user by @hsusul in https://github.com/openai/openai-agents-python/pull/4100 fix(sandbox): harden default snapshot path resolution by @seratch in https://github.com/openai/openai-agents-python/pull/4141 fix(sessions): enforce closed state in AsyncSQLiteSession by @chinmayv095 in https://github.com/openai/openai-agents-python/pull/4109 fix(sessions): avoid creating remote conversation on uninitialized clear_session by @hsusul in https://github.com/openai/openai-agents-python/pull/4111 fix(sessions): roll back a failed SQLiteSession insert by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4163 fix(realtime): apply output guardrails to text deltas by @seratch in https://github.com/openai/openai-agents-python/pull/4124 fix(realtime): clamp interrupt truncation to received audio by @hsusul in https://github.com/openai/openai-agents-python/pull/4122 fix(realtime): scope delayed audio guardrail interruption by @seratch in https://github.com/openai/openai-agents-python/pull/4135 fix(voice): clean up tasks when streams close early by @seratch in https://github.com/openai/openai-agents-python/pull/4131 fix(voice): finish STT event handling after listener errors by @seratch in https://github.com/openai/openai-agents-python/pull/4170 fix(tracing): name streamed task spans after the run's own workflow by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4167 fix(extensions): keep trimmer's definition names and instance data in trimmed schemas by @LHMQ878 in https://github.com/openai/openai-agents-python/pull/4110 fix(extensions): release AnyLLM provider streams and preserve completed runs by @hsusul in https://github.com/openai/openai-agents-python/pull/4133 fix(extensions): send AnyLLM Responses reasoning as a mapping by @hsusul in https://github.com/openai/openai-agents-python/pull/4138 fix(extensions): record model-call failures on the provider's own span by @PranavMishra28 in https://github.com/openai/openai-agents-python/pull/4143 fix(extensions): let an in-flight provider stream close finish after cancellation by @LHMQ878 in https://github.com/openai/openai-agents-python/pull/4156 fix(extensions): preserve thinking blocks for replay by @seratch in https://github.com/openai/openai-agents-python/pull/4157 ### Documentation & Other Changes docs: fix spelling in GPT-5 example by @wesleyzhangwq in https://github.com/openai/openai-agents-python/pull/4168 chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4080 chore(deps): bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.2 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4081 chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4083 chore(deps): bump actions/stale from 10.3.0 to 11.0.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/4084 chore(ci): preserve cache pruning with setup-uv v9 by @seratch in https://github.com/openai/openai-agents-python/pull/4103 test: stabilize tracing atexit timeout coverage by @seratch in https://github.com/openai/openai-agents-python/pull/4104 Release 0.19.3 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/4169 ## New Contributors @n33levo made their first contribution in https://github.com/openai/openai-agents-python/pull/4088 @omidsaffari made their first contribution in https://github.com/openai/openai-agents-python/pull/4153 @PranavMishra28 made their first contribution in https://github.com/openai/openai-agents-python/pull/4143 * @wesleyzhangwq made their first contribution in https://github.com/openai/openai-agents-python/pull/4168 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.19.2...v0.19.3
v0.19.2
1. August 2026
## What's Changed feat: expose original callable through wrapped by @seratch in https://github.com/openai/openai-agents-python/pull/4038 fix: report input guardrail results when a tripwire aborts the run by @hsusul in https://github.com/openai/openai-agents-python/pull/4071 fix: consolidate same-exception re-raises into bare raise across all modules by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/4023 fix(sandbox): preserve tagged EnvValue subclasses by @seratch in https://github.com/openai/openai-agents-python/pull/4039 fix(modal): reject ephemeral paths during tar hydration by @LHMQ878 in https://github.com/openai/openai-agents-python/pull/4045 fix(mcp): redact MCP prompt and resource transport errors by @seratch in https://github.com/openai/openai-agents-python/pull/4067 fix(mcp): redact URL credentials from SDK errors by @seratch in https://github.com/openai/openai-agents-python/pull/4015 fix(mcp): redact URL credentials from tracing and tool metadata by @seratch in https://github.com/openai/openai-agents-python/pull/4020 fix(mcp): redact direct MCP cleanup transport errors by @seratch in https://github.com/openai/openai-agents-python/pull/4078 fix(mcp): clean failed servers before reconnecting by @jstar0 in https://github.com/openai/openai-agents-python/pull/3939 fix(mcp): nested MCP cleanup error redaction by @seratch in https://github.com/openai/openai-agents-python/pull/4049 fix(realtime): preserve raw server event payloads by @GautamSharma99 in https://github.com/openai/openai-agents-python/pull/4062 fix(memory): count valid SQLAlchemy and MongoDB session items for positive limits by @chinmayv095 in https://github.com/openai/openai-agents-python/pull/4032 fix(memory): count valid AdvancedSQLiteSession items for positive limits by @chinmayv095 in https://github.com/openai/openai-agents-python/pull/4031 fix(memory): count valid Redis and Dapr session items for positive limits by @chinmayv095 in https://github.com/openai/openai-agents-python/pull/4033 fix(memory): enforce closed state in Redis and Dapr sessions by @SawhneySatvik in https://github.com/openai/openai-agents-python/pull/4035 fix(extensions): keep tool parameters named like schema keywords by @Kaif10 in https://github.com/openai/openai-agents-python/pull/4036 fix(extensions): close the LiteLLM provider stream on exit by @SawhneySatvik in https://github.com/openai/openai-agents-python/pull/4066 fix(extensions): preserve completed LiteLLM streams on cleanup failure by @seratch in https://github.com/openai/openai-agents-python/pull/4077 fix(voice): propagate iterator cancellation by @hsusul in https://github.com/openai/openai-agents-python/pull/4040 fix(voice): break out of audio dispatch loop when a stream task signals session_ended by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/4044 fix(voice): block audio dispatcher while idle by @GautamSharma99 in https://github.com/openai/openai-agents-python/pull/4061 fix(tracing): use monotonic export deadlines by @GautamSharma99 in https://github.com/openai/openai-agents-python/pull/4063 ### Documentation & Other Changes docs: correct the documented Chat Completions store default by @dfedoryshchev in https://github.com/openai/openai-agents-python/pull/4074 Release 0.19.2 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/4046 ## New Contributors @chinmayv095 made their first contribution in https://github.com/openai/openai-agents-python/pull/4032 @jstar0 made their first contribution in https://github.com/openai/openai-agents-python/pull/3939 @Kaif10 made their first contribution in https://github.com/openai/openai-agents-python/pull/4036 @SawhneySatvik made their first contribution in https://github.com/openai/openai-agents-python/pull/4035 @GautamSharma99 made their first contribution in https://github.com/openai/openai-agents-python/pull/4061 @LHMQ878 made their first contribution in https://github.com/openai/openai-agents-python/pull/4045 @dfedoryshchev made their first contribution in https://github.com/openai/openai-agents-python/pull/4074 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.19.1...v0.19.2
v0.19.1
29. Juli 2026
## What's Changed feat(sandbox): support native host paths in path grants by @seratch in https://github.com/openai/openai-agents-python/pull/4009 fix: redact Realtime audio format diagnostics by @seratch in https://github.com/openai/openai-agents-python/pull/3992 fix: redact Blaxel unmount paths in logging by @seratch in https://github.com/openai/openai-agents-python/pull/3993 fix: retry pre-response WebSocket server errors by @dk3yyyy in https://github.com/openai/openai-agents-python/pull/3991 fix(run): cancel the parallel input-guardrail task when the model turn fails by @gunjanjaswal in https://github.com/openai/openai-agents-python/pull/3982 fix(run): allow empty streamed model input by @hsusul in https://github.com/openai/openai-agents-python/pull/3995 fix(models): route falsey mapped providers by @hsusul in https://github.com/openai/openai-agents-python/pull/3996 fix(memory): count valid SQLite session items for positive limits by @hsusul in https://github.com/openai/openai-agents-python/pull/4001 fix(run): count streamed retries when terminal usage is missing by @hsusul in https://github.com/openai/openai-agents-python/pull/4002 fix(run): cancel streamed models when input guardrails fail by @hsusul in https://github.com/openai/openai-agents-python/pull/4004 fix: preserve zero Blobfuse attribute cache timeout by @hsusul in https://github.com/openai/openai-agents-python/pull/4006 fix(tracing): enforce max_batch_size during force_flush and shutdown in BatchTraceProcessor by @hsusul in https://github.com/openai/openai-agents-python/pull/3985 fix(agent-tools): honor falsey input builders by @hsusul in https://github.com/openai/openai-agents-python/pull/4007 fix: cancel sibling enablement checks on failure by @hsusul in https://github.com/openai/openai-agents-python/pull/4005 ### Documentation & Other Changes docs: updates for 0.19.0 by @seratch in https://github.com/openai/openai-agents-python/pull/3872 docs: fix a URL in sandbox example code by @ShawnSiao in https://github.com/openai/openai-agents-python/pull/3987 docs: repair tracing integration links by @ShawnSiao in https://github.com/openai/openai-agents-python/pull/3986 docs: use decorators module throughout examples by @seratch in https://github.com/openai/openai-agents-python/pull/3946 Release 0.19.1 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/4010 ## New Contributors @dk3yyyy made their first contribution in https://github.com/openai/openai-agents-python/pull/3991 * @ShawnSiao made their first contribution in https://github.com/openai/openai-agents-python/pull/3987 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.19.0...v0.19.1
v0.19.0
27. Juli 2026
## Key Changes
This minor release does not introduce a breaking change. The minor version bump reflects a significant new OpenAI Responses feature area: Programmatic Tool Calling.
### Highlights:
- Added agents.tool.ProgrammaticToolCallingTool, which lets supported OpenAI Responses models generate JavaScript to coordinate eligible tools. It supports per-tool allowed_callers, structured function-tool outputs, and integration with Runner streaming, guardrails, approvals, sessions, and RunState. See Programmatic Tool Calling for setup and constraints.
- Added the public agents.decorators module and the shorter @tool alias alongside the existing function and guardrail decorators. Function tools now also support async callable objects.
- SDK configuration now consistently accepts either typed settings objects or dictionaries across agents, runs, models, sessions, sandboxes, and voice pipelines, with validation for unknown settings.
- Hardened error and diagnostic logging across models, tools, MCP, Realtime, sessions, sandboxes, and tracing to avoid exposing raw sensitive payloads while preserving useful debugging context.
- Improved AnyLLM, LiteLLM, and Chat Completions compatibility, preserved session history across model retries, and added retries for WebSocket overloads that occur before a response starts.
- Added VercelCloudBucketMountStrategy. Mounted sessions exclude bucket contents from workspace persistence and intentionally do not support dynamic mount changes or session resume.
## What's Changed
feat: add Programmatic Tool Calling support by @seratch in https://github.com/openai/openai-agents-python/pull/3833
fix: remove programmatic transcripts from handoff tool filtering by @seratch in https://github.com/openai/openai-agents-python/pull/3879
fix: encode structured programmatic tool errors as JSON by @seratch in https://github.com/openai/openai-agents-python/pull/3932
feat: consistently accept typed objects and dictionaries for SDK configuration by @seratch in https://github.com/openai/openai-agents-python/pull/3917
feat: add tool decorator alias by @seratch in https://github.com/openai/openai-agents-python/pull/3920
feat(sandbox): add Vercel cloud mount strategy by @seratch in https://github.com/openai/openai-agents-python/pull/3899
fix: retry pre-response WebSocket overload errors by @seratch in https://github.com/openai/openai-agents-python/pull/3978
fix: harden sensitive runtime logging by @seratch in https://github.com/openai/openai-agents-python/pull/3938
fix: redact Realtime and RunState diagnostics by @seratch in https://github.com/openai/openai-agents-python/pull/3948
fix: stop leaking raw exceptions in model + tool error logs by @dimaosipa in https://github.com/openai/openai-agents-python/pull/3910
fix: preserve callable function tool compatibility by @seratch in https://github.com/openai/openai-agents-python/pull/3959
fix: support async callable objects as function tools by @seratch in https://github.com/openai/openai-agents-python/pull/3949
fix: partition nested handoffs history ownership by @seratch in https://github.com/openai/openai-agents-python/pull/3823
fix: summarize programmatic transcripts during nested handoffs by @seratch in https://github.com/openai/openai-agents-python/pull/3878
fix: improve AnyLLM and LiteLLM provider compatibility by @seratch in https://github.com/openai/openai-agents-python/pull/3930
fix: improve provider compatibility and preserve session history on retries by @seratch in https://github.com/openai/openai-agents-python/pull/3931
fix: fail closed on invalid callable approval arguments by @seratch in https://github.com/openai/openai-agents-python/pull/3867
fix: classify lazy skill read probes correctly by @seratch in https://github.com/openai/openai-agents-python/pull/3893
fix: reuse the verbose stdout logging handler by @seratch in https://github.com/openai/openai-agents-python/pull/3957
fix: recognize typed easy input messages in Chat Completions by @seratch in https://github.com/openai/openai-agents-python/pull/3877
fix: include device nodes when parsing ls output by @TheSaiEaranti in https://github.com/openai/openai-agents-python/pull/3951
fix: preserve *args/**kwargs docstring descriptions in tool schemas by @TheSaiEaranti in https://github.com/openai/openai-agents-python/pull/3956
fix: compare inspect sentinels by identity in function_schema by @TheSaiEaranti in https://github.com/openai/openai-agents-python/pull/3961
fix: parse ls output with SELinux security-context marker by @SHAI-Cheravgoyal in https://github.com/openai/openai-agents-python/pull/3904
fix: preserve dot-prefixed skip paths in Modal tar workspace excludes by @SHAI-Cheravgoyal in https://github.com/openai/openai-agents-python/pull/3905
fix: cleanup cancelled servers during MCP connect failure by @hsusul in https://github.com/openai/openai-agents-python/pull/3919
fix: await async callable-object dynamic instructions by @hsusul in https://github.com/openai/openai-agents-python/pull/3942
fix: await async callable-object callbacks by @seratch in https://github.com/openai/openai-agents-python/pull/3944
fix: Blaxel's shell-quote interpolated FUSE mount options by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3873
fix: escape multiline DOT names in visualization by @hsusul in https://github.com/openai/openai-agents-python/pull/3898
fix: redact raw message payload from realtime agents' conversion-failure log by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3907
fix: encode streamed float32 audio as PCM16 in voice handling by @FayezBast in https://github.com/openai/openai-agents-python/pull/3916
fix: redact MCP tool-call and formatter errors from logs by @dimaosipa in https://github.com/openai/openai-agents-python/pull/3918
fix: parse Google docstrings whose Args: follows a section body by @oldrobotdev in https://github.com/openai/openai-agents-python/pull/3862
fix: pin and verify rclone sandbox installs by @seratch in https://github.com/openai/openai-agents-python/pull/3911
fix: reject empty additionalProperties mappings in strict_schema by @hsusul in https://github.com/openai/openai-agents-python/pull/3927
fix: send logprobs=True when top_logprobs is set when using LiteLLM by @dimaosipa in https://github.com/openai/openai-agents-python/pull/3929
fix: surface content-filter refusals when buffering streamed tool calls in chat completions by @gunjanjaswal in https://github.com/openai/openai-agents-python/pull/3897
fix: reject unsupported streamed STT audio dtypes by @seratch in https://github.com/openai/openai-agents-python/pull/3950
fix: use last_agent property in pretty_print_run_result_streaming to avoid None crash by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/3965
fix: use last_agent property in RunResultStreaming._create_error_details by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/3967
### Documentation & Other Changes
docs: document compact tracing hierarchy by @william-xue in https://github.com/openai/openai-agents-python/pull/3839
docs: clarify sandbox support on Windows by @seratch in https://github.com/openai/openai-agents-python/pull/3866
docs: remove unnecessary RunContextWrapper wrapping in tool enabling example by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/3869
docs: remove unused Runner import in tracing docs by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/3881
docs: fix runnable Python examples by @seratch in https://github.com/openai/openai-agents-python/pull/3885
docs: fix missing imports in dynamic instructions example by @Syed-Umer-Ali in https://github.com/openai/openai-agents-python/pull/3895
docs: fix conversation example imports by @william-xue in https://github.com/openai/openai-agents-python/pull/3903
docs: fix API cross-reference targets by @william-xue in https://github.com/openai/openai-agents-python/pull/3913
docs: improve sandbox example runtime validation by @seratch in https://github.com/openai/openai-agents-python/pull/3880
docs: fix streamed audio API rendering by @william-xue in https://github.com/openai/openai-agents-python/pull/3940
chore: add packaged live integration and provider regression coverage by @seratch in https://github.com/openai/openai-agents-python/pull/3936
chore: update e2b versions by @matthewlouisbrockman in https://github.com/openai/openai-agents-python/pull/3871
chore: update FastAPI test dependency by @seratch in https://github.com/openai/openai-agents-python/pull/3974
chore: isolate unit tests from ambient proxy settings by @seratch in https://github.com/openai/openai-agents-python/pull/3945
Release 0.19.0 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3874
## New Contributors
@oldrobotdev made their first contribution in https://github.com/openai/openai-agents-python/pull/3862
@AAliKKhan made their first contribution in https://github.com/openai/openai-agents-python/pull/3869
@matthewlouisbrockman made their first contribution in https://github.com/openai/openai-agents-python/pull/3871
@Syed-Umer-Ali made their first contribution in https://github.com/openai/openai-agents-python/pull/3895
@hsusul made their first contribution in https://github.com/openai/openai-agents-python/pull/3898
@SHAI-Cheravgoyal made their first contribution in https://github.com/openai/openai-agents-python/pull/3904
@dimaosipa made their first contribution in https://github.com/openai/openai-agents-python/pull/3910
@FayezBast made their first contribution in https://github.com/openai/openai-agents-python/pull/3916
@gunjanjaswal made their first contribution in https://github.com/openai/openai-agents-python/pull/3897
@TheSaiEaranti made their first contribution in https://github.com/openai/openai-agents-python/pull/3951
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.18.3...v0.19.0
v0.18.3
17. Juli 2026
## What's Changed feat: make task and turn tracing spans configurable by @seratch in https://github.com/openai/openai-agents-python/pull/3834 feat(realtime): track response usage in session context by @seratch in https://github.com/openai/openai-agents-python/pull/3812 fix(memory): serialize OpenAI conversation session initialization by @russeell in https://github.com/openai/openai-agents-python/pull/3821 fix(models): raise UserError for conflicting provider args instead of assert by @Dhruva-Das in https://github.com/openai/openai-agents-python/pull/3809 fix(handoffs): preserve user messages containing history wrappers by @russeell in https://github.com/openai/openai-agents-python/pull/3815 fix(computer): isolate provider instances across concurrent runs by @russeell in https://github.com/openai/openai-agents-python/pull/3843 fix(sandbox): avoid redundant E2B workspace root creation by @seratch in https://github.com/openai/openai-agents-python/pull/3845 fix: preserve streamed session input across model retries by @seratch in https://github.com/openai/openai-agents-python/pull/3857 fix: prevent stale prepared-item identity reuse by @seratch in https://github.com/openai/openai-agents-python/pull/3858 fix: AdvancedSQLiteSession clear_session and pop_item metadata leaks by @okaditya84 in https://github.com/openai/openai-agents-python/pull/3755 fix: parse Google docstrings missing the blank line before a section by @sohumt123 in https://github.com/openai/openai-agents-python/pull/3832 fix: bound $ref expansion in strict JSON schema conversion by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3838 fix: redact non-tool trace error details by @seratch in https://github.com/openai/openai-agents-python/pull/3848 ### Documentation & Other Changes docs: updates for hosted multi-agent support by @seratch in https://github.com/openai/openai-agents-python/pull/3789 docs: make UserContext example runnable in Agents documentation by @MuhammadHamidRaza in https://github.com/openai/openai-agents-python/pull/3851 chore: enable flake8-async for runtime source by @seratch in https://github.com/openai/openai-agents-python/pull/3813 Release 0.18.3 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3859 ## New Contributors @Dhruva-Das made their first contribution in https://github.com/openai/openai-agents-python/pull/3809 @russeell made their first contribution in https://github.com/openai/openai-agents-python/pull/3815 @okaditya84 made their first contribution in https://github.com/openai/openai-agents-python/pull/3755 * @sohumt123 made their first contribution in https://github.com/openai/openai-agents-python/pull/3832 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.18.2...v0.18.3
v0.18.2
11. Juli 2026
## What's Changed feat: support GPT-5.6 request controls by @seratch in https://github.com/openai/openai-agents-python/pull/3794 feat: add hosted multi-agent beta support by @seratch in https://github.com/openai/openai-agents-python/pull/3788 fix(sandbox): own Daytona PTY worker tasks by @seratch in https://github.com/openai/openai-agents-python/pull/3778 fix(realtime): enqueue callback errors synchronously by @seratch in https://github.com/openai/openai-agents-python/pull/3777 fix(realtime): use monotonic playback timing by @seratch in https://github.com/openai/openai-agents-python/pull/3776 fix(sandbox): own Docker deferred cleanup tasks by @seratch in https://github.com/openai/openai-agents-python/pull/3779 fix(sandbox): own Unix PTY fd close tasks by @seratch in https://github.com/openai/openai-agents-python/pull/3780 fix(litellm): surface content-filter refusals instead of an empty turn by @seanturner83 in https://github.com/openai/openai-agents-python/pull/3769 refactor(sandbox): share core PTY output collection by @seratch in https://github.com/openai/openai-agents-python/pull/3796 refactor(sandbox): share extension PTY output collection by @seratch in https://github.com/openai/openai-agents-python/pull/3797 refactor(sandbox): share E2B rclone setup by @seratch in https://github.com/openai/openai-agents-python/pull/3798 refactor(sandbox): share Runloop rclone setup by @seratch in https://github.com/openai/openai-agents-python/pull/3799 refactor: share retry error metadata extraction by @seratch in https://github.com/openai/openai-agents-python/pull/3800 refactor: share retry-after parsing by @seratch in https://github.com/openai/openai-agents-python/pull/3801 ### Documentation & Other Changes fix: serialize model-backed rollout interruptions as dicts by @Otis0408 in https://github.com/openai/openai-agents-python/pull/3790 chore: enable G004 logging lint rule by @seratch in https://github.com/openai/openai-agents-python/pull/3802 chore: enable RUF012 for runtime source by @seratch in https://github.com/openai/openai-agents-python/pull/3803 chore: remove unused noqa directives by @seratch in https://github.com/openai/openai-agents-python/pull/3804 chore: exempt OpenAI package from dependency cooldown by @seratch in https://github.com/openai/openai-agents-python/pull/3792 Release 0.18.2 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3805 ## New Contributors @Otis0408 made their first contribution in https://github.com/openai/openai-agents-python/pull/3790 @seanturner83 made their first contribution in https://github.com/openai/openai-agents-python/pull/3769 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.18.1...v0.18.2
v0.18.1
10. Juli 2026
## What's Changed feat: add GPT-5.6 model defaults and migrate examples by @seratch in https://github.com/openai/openai-agents-python/pull/3774 fix: support cache-write usage across OpenAI Python versions by @seratch in https://github.com/openai/openai-agents-python/pull/3773 fix(realtime): make session cleanup deterministic by @seratch in https://github.com/openai/openai-agents-python/pull/3767 fix: preserve nested tool state during restoration by @seratch in https://github.com/openai/openai-agents-python/pull/3753 fix: close Chat Completions streams on early exit by @fallintoplace in https://github.com/openai/openai-agents-python/pull/3689 fix(sessions): handle list content in AdvancedSQLiteSession browsing helpers by @anxkhn in https://github.com/openai/openai-agents-python/pull/3761 fix(models): accumulate streamed logprobs in place to avoid O(n^2) copies by @anxkhn in https://github.com/openai/openai-agents-python/pull/3762 fix: send logprobs=True when top_logprobs is set on Chat Completions by @winklemad in https://github.com/openai/openai-agents-python/pull/3763 ### Documentation & Other Changes docs: updates for v0.18.0 by @seratch in https://github.com/openai/openai-agents-python/pull/3741 docs(realtime): fix RealtimeRunner context docstring by @anxkhn in https://github.com/openai/openai-agents-python/pull/3748 docs: clarify agent tool state options by @william-xue in https://github.com/openai/openai-agents-python/pull/3754 test(items): document refusal None invariant by @seratch in https://github.com/openai/openai-agents-python/pull/3751 Release 0.18.1 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3775 ## New Contributors @william-xue made their first contribution in https://github.com/openai/openai-agents-python/pull/3754 * @winklemad made their first contribution in https://github.com/openai/openai-agents-python/pull/3763 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.18.0...v0.18.1
v0.18.0
7. Juli 2026
## Key Changes ### RealtimeAgent's default is now gpt-realtime-2.1 Since this version, the default model for RealtimeAgents is gpt-realtime-2.1: https://developers.openai.com/api/docs/models/gpt-realtime-2.1 ## What's Changed feat: update default realtime model to gpt-realtime-2.1 by @seratch in https://github.com/openai/openai-agents-python/pull/3740 feat: add Unicode storage option to SQLAlchemySession by @seratch in https://github.com/openai/openai-agents-python/pull/3746 fix(visualization): keep fillcolor on handoff nodes by merging style attributes by @comp in https://github.com/openai/openai-agents-python/pull/3744 ### Documentation & Other Changes docs: updates for v0.17.8 release by @seratch in https://github.com/openai/openai-agents-python/pull/3737 Release 0.18.0 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3742 ## New Contributors @comp made their first contribution in https://github.com/openai/openai-agents-python/pull/3744 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.8...v0.18.0
v0.17.8
7. Juli 2026
## What's Changed feat: add invalid final output recovery handler by @seratch in https://github.com/openai/openai-agents-python/pull/3736 fix: propagate realtime session iterator cancellation by @fallintoplace in https://github.com/openai/openai-agents-python/pull/3686 fix: redact realtime validation failure logs by @fallintoplace in https://github.com/openai/openai-agents-python/pull/3687 fix: preserve non-dict Mapping values in _to_dump_compatible by @anxkhn in https://github.com/openai/openai-agents-python/pull/3700 fix: escape quotes and backslashes in DOT names for visualization by @anxkhn in https://github.com/openai/openai-agents-python/pull/3712 fix: enforce strict Pydantic validation when strict_json_schema=True + handoffs by @Om-Borse26 in https://github.com/openai/openai-agents-python/pull/3724 fix: fix an issue with length-frame exec-stdin writes within a sandbox by @imran31415 in https://github.com/openai/openai-agents-python/pull/3719 ### Documentation & Other Changes docs: add DProvenanceKit to external tracing processors list by @Therealdk8890 in https://github.com/openai/openai-agents-python/pull/3726 docs: add sandbox examples to examples index by @saime428 in https://github.com/openai/openai-agents-python/pull/3731 test: improve coverage for stream and sandbox edge cases by @seratch in https://github.com/openai/openai-agents-python/pull/3730 chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/3714 chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/3715 chore(deps): bump actions/stale from 10.2.0 to 10.3.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/3716 chore(deps): bump actions/checkout from 6.0.2 to 7.0.0 by @dependabot[bot] in https://github.com/openai/openai-agents-python/pull/3717 Release 0.17.8 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3739 ## New Contributors @fallintoplace made their first contribution in https://github.com/openai/openai-agents-python/pull/3686 @anxkhn made their first contribution in https://github.com/openai/openai-agents-python/pull/3700 @Om-Borse26 made their first contribution in https://github.com/openai/openai-agents-python/pull/3724 @imran31415 made their first contribution in https://github.com/openai/openai-agents-python/pull/3719 @Therealdk8890 made their first contribution in https://github.com/openai/openai-agents-python/pull/3726 * @saime428 made their first contribution in https://github.com/openai/openai-agents-python/pull/3731 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.7...v0.17.8
v0.17.7
24. Juni 2026
## What's Changed feat: expose configurable websocket max_size limit by @anneheartrecord in https://github.com/openai/openai-agents-python/pull/3645 feat: add buffered Chat Completions tool-call streaming by @incoffeemonster in https://github.com/openai/openai-agents-python/pull/3506 fix: reduce sandbox sink buffering and spool timeouts by @2830500285 in https://github.com/openai/openai-agents-python/pull/3642 fix: #3346 clean up branch-only messages when deleting branches by @Aphroq in https://github.com/openai/openai-agents-python/pull/3347 fix: #3348 make AdvancedSQLiteSession add_items atomic by @Aphroq in https://github.com/openai/openai-agents-python/pull/3349 fix: cancel sibling guardrail tasks when one raises by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3239 fix: skip needs_approval_checker when status resolved in _collect_runs_by_approval by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3259 fix: validate ls special permission bits by position by @a1vazovsky in https://github.com/openai/openai-agents-python/pull/3420 fix: gate remote-mount edit guidance by mode by @a1vazovsky in https://github.com/openai/openai-agents-python/pull/3423 fix: remove dependency on types-requests by @rouge8 in https://github.com/openai/openai-agents-python/pull/3509 fix: empty list/tuple tool output dropped via all([]) == True by @vidigoat in https://github.com/openai/openai-agents-python/pull/3554 fix: wake PTY output collection on process exit (E2B) by @rohitrastogi in https://github.com/openai/openai-agents-python/pull/3610 fix: avoid stale object-id dedupe in server conversation tracker by @chutch in https://github.com/openai/openai-agents-python/pull/3621 fix: report effective Blaxel timeouts by @he-yufeng in https://github.com/openai/openai-agents-python/pull/3643 fix: prevent ambiguous Realtime multi-agent tool dispatch by @mavrickdeveloper in https://github.com/openai/openai-agents-python/pull/3441 fix: add hint to duplicated MCP server tool name error message by @wustwyh in https://github.com/openai/openai-agents-python/pull/3678 fix: recursively extract HTTP errors from nested ExceptionGroups by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3556 ### Documentation & Other Changes docs: #3461 changes for tool_not_found_behavior option by @seratch in https://github.com/openai/openai-agents-python/pull/3462 docs: changes for #3487 feature addition by @seratch in https://github.com/openai/openai-agents-python/pull/3488 docs: fix OpenAI capitalization in auto-generated ref titles by @atimothee in https://github.com/openai/openai-agents-python/pull/3646 docs: add SDK maintainer references and review guidance by @seratch in https://github.com/openai/openai-agents-python/pull/3676 Release 0.17.7 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3682 ## New Contributors @rouge8 made their first contribution in https://github.com/openai/openai-agents-python/pull/3509 @vidigoat made their first contribution in https://github.com/openai/openai-agents-python/pull/3554 @rohitrastogi made their first contribution in https://github.com/openai/openai-agents-python/pull/3610 @chutch made their first contribution in https://github.com/openai/openai-agents-python/pull/3621 @he-yufeng made their first contribution in https://github.com/openai/openai-agents-python/pull/3643 @anneheartrecord made their first contribution in https://github.com/openai/openai-agents-python/pull/3645 @2830500285 made their first contribution in https://github.com/openai/openai-agents-python/pull/3642 @atimothee made their first contribution in https://github.com/openai/openai-agents-python/pull/3646 @incoffeemonster made their first contribution in https://github.com/openai/openai-agents-python/pull/3506 @wustwyh made their first contribution in https://github.com/openai/openai-agents-python/pull/3678 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.6...v0.17.7
v0.17.6
19. Juni 2026
## What's Changed feat: add pre-approval tool input guardrails by @seratch in https://github.com/openai/openai-agents-python/pull/3487 feat: add SDK-only custom data for tool outputs by @seratch in https://github.com/openai/openai-agents-python/pull/3486 fix: enforce the documented strict JSON-compatible contract for #3486 by @siddiksawani in https://github.com/openai/openai-agents-python/pull/3657 fix: suppress handoff whitespace tool-name warnings by @seratch in https://github.com/openai/openai-agents-python/pull/3652 ### Documentation & Other Changes docs: fix typo in sandbox guide by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3628 Release 0.17.6 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3659 ## New Contributors * @siddiksawani made their first contribution in https://github.com/openai/openai-agents-python/pull/3657 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.5...v0.17.6
v0.17.5
11. Juni 2026
## What's Changed fix: expose sandbox error retryability by @qiyaoq-oai in https://github.com/openai/openai-agents-python/pull/3581 fix: #3512 type tool-end hook results as object by @seratch in https://github.com/openai/openai-agents-python/pull/3518 fix: use tuple form for SpeechGroupSpanData `__slots__` by @jluocsa in https://github.com/openai/openai-agents-python/pull/3534 chore: bump Modal sandbox extra to 1.4.3 by @jdoughty04 in https://github.com/openai/openai-agents-python/pull/3538 ### Documentation & Other Changes docs: add MongoDB session example under examples/memory by @alexbevi in https://github.com/openai/openai-agents-python/pull/3036 docs: add missing space in MCP params docstrings by @jluocsa in https://github.com/openai/openai-agents-python/pull/3535 docs: fix docstring typo in stdio params env description by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3557 docs: fix two docstring grammar errors in tool.py by @jluocsa in https://github.com/openai/openai-agents-python/pull/3543 docs: add Latitude to external tracing processors list by @guillemwilly in https://github.com/openai/openai-agents-python/pull/3577 docs: tweak in usage doc by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3597 docs: fix string concatenation typo in agent instructions by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3599 docs: capitalization fix in tracing docs by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3602 docs: fix subject-verb agreement in agent loop description by @mshsheikh in https://github.com/openai/openai-agents-python/pull/3605 test: add unit tests for run_demo_loop streaming, EOF, and empty-input paths by @jluocsa in https://github.com/openai/openai-agents-python/pull/3542 test: add unit tests for _openai_retry helpers (77% -> 95% coverage) by @jluocsa in https://github.com/openai/openai-agents-python/pull/3544 Release 0.17.5 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3619 ## New Contributors @jluocsa made their first contribution in https://github.com/openai/openai-agents-python/pull/3534 @jdoughty04 made their first contribution in https://github.com/openai/openai-agents-python/pull/3538 * @guillemwilly made their first contribution in https://github.com/openai/openai-agents-python/pull/3577 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.4...v0.17.5
v0.17.4
26. Mai 2026
## What's Changed feat: support Realtime custom voice objects by @lionel-oai in https://github.com/openai/openai-agents-python/pull/3473 fix: #3459 add opt-in recovery for missing function tools by @seratch in https://github.com/openai/openai-agents-python/pull/3461 fix: apply hardened http client default to MCP SSE transport by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3466 fix: use non-None value for output in FunctionSpanData by @rmotgi1227 in https://github.com/openai/openai-agents-python/pull/3475 fix: add missing entries to span __slots__ by @rmotgi1227 in https://github.com/openai/openai-agents-python/pull/3483 fix: redact invalid JSON payload in ModelBehaviorError data by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/3485 fix: export more tracing related functions & types from agents by @rmotgi1227 in https://github.com/openai/openai-agents-python/pull/3489 fix: export MCPListToolsItem, ToolSearchCallItem, and ToolSearchOutputItem from agents by @rmotgi1227 in https://github.com/openai/openai-agents-python/pull/3490 ### Documentation & Other Changes Release 0.17.4 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3505 ## New Contributors @rmotgi1227 made their first contribution in https://github.com/openai/openai-agents-python/pull/3475 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.3...v0.17.4
v0.17.3
19. Mai 2026
## What's Changed fix: keep mountpoint credentials out of sandbox commands by @seratch in https://github.com/openai/openai-agents-python/pull/3429 fix: unify memory optional dependency import errors by @seratch in https://github.com/openai/openai-agents-python/pull/3389 fix: guard None text in text_message_output and add output guardrail count to RunErrorDetails by @zhoufengen in https://github.com/openai/openai-agents-python/pull/3375 fix: avoid mutating FunctionTool params_json_schema by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3382 fix: avoid mutating codex output schema input by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3385 fix: #3357 output schema names for Literal types by @Aphroq in https://github.com/openai/openai-agents-python/pull/3358 fix: skip wait_for_status when Vercel sandbox is in a terminal state by @cty-ut in https://github.com/openai/openai-agents-python/pull/3410 fix: filter hosted_tool_call types in remove_all_tools handoff filter by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3386 fix: guard None text in ItemHelpers.extract_last_content by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3394 fix: log exception when output guardrail raises instead of silently ignoring by @cty-ut in https://github.com/openai/openai-agents-python/pull/3411 fix: reject relative sandbox workspace roots by @matthewflint in https://github.com/openai/openai-agents-python/pull/3422 fix: normalize leading question marks in exposed port queries by @matthewflint in https://github.com/openai/openai-agents-python/pull/3424 fix: #3363 honor short custom voice splitter chunks by @Aphroq in https://github.com/openai/openai-agents-python/pull/3364 fix: runtime handling updates by @adrianbravo-oai @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3451 ### Documentation & Other Changes docs: add SDK review guidance by @seratch in https://github.com/openai/openai-agents-python/pull/3376 docs: mark Agent.instructions as optional by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3384 docs: translate all pages using new settings by @seratch in https://github.com/openai/openai-agents-python/pull/3392 docs: document auto_previous_response_id by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3383 docs: fix LiteLLM API reference redirect by @ynachiket in https://github.com/openai/openai-agents-python/pull/3444 docs: fix duplicated word in usaspending glossary example by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/3445 chore: clean up CI jobs and update uv pin by @seratch in https://github.com/openai/openai-agents-python/pull/3400 ci: harden release tag workflow by @hintz-openai in https://github.com/openai/openai-agents-python/pull/3399 Release 0.17.3 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3417 ## New Contributors @zhoufengen made their first contribution in https://github.com/openai/openai-agents-python/pull/3375 @hintz-openai made their first contribution in https://github.com/openai/openai-agents-python/pull/3399 @cty-ut made their first contribution in https://github.com/openai/openai-agents-python/pull/3410 @ynachiket made their first contribution in https://github.com/openai/openai-agents-python/pull/3444 @LeSingh1 made their first contribution in https://github.com/openai/openai-agents-python/pull/3445 * @adrianbravo-oai made their first contribution in https://github.com/openai/openai-agents-python/pull/3451 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.2...v0.17.3
v0.17.2
12. Mai 2026
## What's Changed fix: #3268 fix OpenAI Conversations reasoning persistence by @seratch in https://github.com/openai/openai-agents-python/pull/3352 fix: avoid auto response for unknown realtime tools (ref: #3287) by @seratch in https://github.com/openai/openai-agents-python/pull/3366 fix: #3354 interrupt tracing retry backoff on shutdown by @Aphroq in https://github.com/openai/openai-agents-python/pull/3355 fix: #3359 preserve local approval rejection reasons by @Aphroq in https://github.com/openai/openai-agents-python/pull/3360 fix: #3361 honor session settings in AsyncSQLiteSession by @Aphroq in https://github.com/openai/openai-agents-python/pull/3362 fix: #3310 avoid empty chat tool outputs by @Aphroq in https://github.com/openai/openai-agents-python/pull/3312 ### Documentation & Other Changes docs: clarify max_delay for retries works by @seratch in https://github.com/openai/openai-agents-python/pull/3350 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3351 docs: normalize memory docstring cross-references by @seratch in https://github.com/openai/openai-agents-python/pull/3370 docs: document sandbox archive limits after #3278 release by @Aphroq in https://github.com/openai/openai-agents-python/pull/3311 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3371 Release 0.17.2 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3368 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.1...v0.17.2
v0.17.1
11. Mai 2026
## What's Changed ### Sandboxes fix: include sandbox provider error details by @seratch in https://github.com/openai/openai-agents-python/pull/3326 fix: #3274 limit sandbox archive extraction by @Aphroq in https://github.com/openai/openai-agents-python/pull/3278 fix: #3273 validate git repo subpaths by @Aphroq in https://github.com/openai/openai-agents-python/pull/3276 fix: allow empty GitRepo subpaths as repository root by @seratch in https://github.com/openai/openai-agents-python/pull/3299 fix: preserve GitRepo root subpath aliases by @seratch in https://github.com/openai/openai-agents-python/pull/3303 ### Tracing fix: make tracing shutdown best-effort on process exit by @seratch in https://github.com/openai/openai-agents-python/pull/3343 fix: keep BatchTraceProcessor worker alive on exporter errors by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3216 fix: guard no-op tracing span IDs by @seratch in https://github.com/openai/openai-agents-python/pull/3296 ### Sessions fix: #3267 preserve required hosted tool IDs in OpenAI conversation sessions by @seratch in https://github.com/openai/openai-agents-python/pull/3341 fix: #3304 skip corrupt items during pop (sessions) by @Aphroq in https://github.com/openai/openai-agents-python/pull/3305 fix: #3306 track MongoDB metadata timestamps by @Aphroq in https://github.com/openai/openai-agents-python/pull/3307 fix: preserve created_at across writes (redis-session) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3202 fix: skip corrupt docs in MongoDBSession.pop_item by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3247 ### Realtime Agents fix: #3333 scope Realtime tool approvals by qualified key by @seratch in https://github.com/openai/openai-agents-python/pull/3340 fix: #3286 send realtime output for unknown tool calls by @Aphroq in https://github.com/openai/openai-agents-python/pull/3287 fix: #3284 wake realtime event iterators on close by @Aphroq in https://github.com/openai/openai-agents-python/pull/3285 fix: preserve existing transcript over stale delta accumulator by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3214 fix: expose max_output_tokens on RealtimeSessionModelSettings by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3223 fix: validate RealtimeAgent fields in `__post_init__` by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3234 fix: skip invalid input_text parts in user input conversion (realtime) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3243 fix: raise UserError for input_type without on_handoff (realtime) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3248 fix: preserve output_audio content parts in output_item events (realtime) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3230 fix: treat None audio.input/audio.output as unset (realtime) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3254 fix: stop AudioInput.to_base64() from mutating caller's buffer (voice agents) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3201 ### Other core modules fix: make chat completions response-feature validation opt-in by @seratch in https://github.com/openai/openai-agents-python/pull/3298 fix: #3275 reject chat completions server state by @Aphroq in https://github.com/openai/openai-agents-python/pull/3279 fix: #3282 reject unsupported Chat Completions reusable prompts by @Aphroq in https://github.com/openai/openai-agents-python/pull/3283 fix: #3313 align multi-choice chat streams with strict validation by @Aphroq in https://github.com/openai/openai-agents-python/pull/3314 fix: #3308 reject chat custom tool calls explicitly by @Aphroq in https://github.com/openai/openai-agents-python/pull/3309 fix: #3270 validate model retry backoff settings by @Aphroq in https://github.com/openai/openai-agents-python/pull/3272 fix: #3319 preserve nested handoff history content by @Aphroq in https://github.com/openai/openai-agents-python/pull/3320 fix: #3280 streaming guardrail exception cleanup by @Aphroq in https://github.com/openai/openai-agents-python/pull/3281 fix: #3288 normalize RunState guardrail payloads by @Aphroq in https://github.com/openai/openai-agents-python/pull/3289 fix: #3315 align generic dict output schemas by @Aphroq in https://github.com/openai/openai-agents-python/pull/3316 fix: #3317 return fresh empty strict schemas by @Aphroq in https://github.com/openai/openai-agents-python/pull/3318 fix: #781 replace assertion in handoff() with UserError by @0xSudoSSH in https://github.com/openai/openai-agents-python/pull/3339 fix: preserve failed status across apply_patch operations by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3217 fix: preserve existing request_usage_entries on Usage.add by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3213 fix: await cancelled output guardrail tasks on tripwire by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3187 fix: persist output_tokens_details when input details are None by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3227 fix: drop reasoning items orphaned by dropped tool calls by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3207 fix: skip CompactionItem silently in stream queue helper by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3224 fix: await on_handoff callables with async `__call__` by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3211 fix: preserve tool guardrail results across handoffs in SingleStepResult by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3237 fix: preserve last known response_id on conversation resume by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3245 fix: isolate MCP strict schema conversion from non-strict fallback by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3199 fix: exclude Computer instances from provider duck-typing by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3249 fix: skip needs_approval_checker when status already resolved by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3229 fix: export MCPToolCancellationError from top-level package by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3210 fix: preserve chained $ref during sibling-key expansion by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3205 ### Extensions fix: avoid duplicating content and signed thinking blocks across parallel tool-call splits (any-llm) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3261 fix: avoid duplicating content and signed thinking blocks across parallel tool-call splits (litellm) by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3215 fix: #3330 handle string tool trimmer allowlists by @Aphroq in https://github.com/openai/openai-agents-python/pull/3331 fix: preserve HandoffInputData.input_items in remove_all_tools by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3253 ### Documentation & Other Changes docs: updates for v0.17.0 by @seratch in https://github.com/openai/openai-agents-python/pull/3188 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3193 docs: add dapr to durable orchestration integrations by @yaron2 in https://github.com/openai/openai-agents-python/pull/3292 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3293 docs: update MCP examples by @seratch in https://github.com/openai/openai-agents-python/pull/3342 test: guard Responses transport extra kwargs with official client by @seratch in https://github.com/openai/openai-agents-python/pull/3295 chore: improve examples auto-run coverage and artifact handling by @seratch in https://github.com/openai/openai-agents-python/pull/3328 chore: improve automated example coverage and local service handling by @seratch in https://github.com/openai/openai-agents-python/pull/3297 Release 0.17.1 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3290 ## New Contributors @yaron2 made their first contribution in https://github.com/openai/openai-agents-python/pull/3292 * @0xSudoSSH made their first contribution in https://github.com/openai/openai-agents-python/pull/3339 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.17.0...v0.17.1
v0.17.0
8. Mai 2026
## 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 sources must already be inside it or under an explicit grant. This closes a local artifact boundary issue, but it can affect applications that intentionally copy trusted host files or directories from outside that base directory into a sandbox workspace.Expand commentComment on line R24Resolved
To migrate, grant trusted host roots at the manifest level with SandboxPathGrant, preferably as read-only when the sandbox only needs to read those files:
``python
from pathlib import Path
from agents.sandbox import Manifest, SandboxPathGrant
from agents.sandbox.entries import Dir, LocalDir
# This is an absolute host path outside the SDK process base_dir.
TRUSTED_DOCS_ROOT = Path("/opt/my-app/docs")
manifest = Manifest(
extra_path_grants=(
# This host root is outside the SDK process base_dir, so the manifest must grant it.
SandboxPathGrant(path=str(TRUSTED_DOCS_ROOT), read_only=True),
),
entries={
# No grant is needed for local sources that stay under the SDK process base_dir.
"fixtures": LocalDir(src=Path("fixtures"), description="Local test fixtures."),
# This entry reads from the granted host root and copies it into the sandbox workspace.
"docs": LocalDir(src=TRUSTED_DOCS_ROOT, description="Trusted local documents."),
# Dir creates a sandbox workspace directory; it does not read from the host filesystem.
"output": Dir(description="Generated artifacts."),
},
)
`
Treat extra_path_grants` as trusted application configuration. Do not populate grants from model output or other untrusted manifest input unless your application has already approved those host paths.
## What's Changed
feat: default realtime sessions to gpt-realtime-2 by @seratch in https://github.com/openai/openai-agents-python/pull/3190
fix: #3169 constrain local sandbox artifact sources to base dir by @seratch in https://github.com/openai/openai-agents-python/pull/3177
fix: Responses context-management extra_args collision by @alfozan in https://github.com/openai/openai-agents-python/pull/3185
### Documentation & Other Changes
Release 0.17.0 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3191
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.16.1...v0.17.0
v0.16.1
7. Mai 2026
## What's Changed fix: #3109 stabilize chat completions stream output indexes by @seratch in https://github.com/openai/openai-agents-python/pull/3176 fix: #3168 validate MCP require_approval policies by @seratch in https://github.com/openai/openai-agents-python/pull/3179 fix: #3116 restore session history after compaction replacement failures by @Aphroq in https://github.com/openai/openai-agents-python/pull/3117 fix: #3171 reject corrupt Dapr session state updates by @Aphroq in https://github.com/openai/openai-agents-python/pull/3173 fix: #3170 clean up git repo temp clones on failure by @Aphroq in https://github.com/openai/openai-agents-python/pull/3172 fix: #3174 count valid encrypted session items for limits by @Aphroq in https://github.com/openai/openai-agents-python/pull/3175 fix: reject non-object function tool input JSON by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3166 ### Documentation & Other Changes docs: updates for #3147 by @seratch in https://github.com/openai/openai-agents-python/pull/3148 docs: add 0.16.0 changelog by @seratch in https://github.com/openai/openai-agents-python/pull/3153 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3163 docs: document tool execution concurrency by @seratch in https://github.com/openai/openai-agents-python/pull/3164 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3165 * Release 0.16.1 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3167 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.16.0...v0.16.1
v0.16.0
7. Mai 2026
## 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 https://github.com/openai/openai-agents-python/pull/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"), or set the OPENAI_DEFAULT_MODEL environment variable.
### Disable max_turns detection
This version adds a new option max_turns=None to disable the Agents SDK run turn limit while preserving the existing default of DEFAULT_MAX_TURNS (10) when max_turns is omitted.
### Tool execution concurrency
This version adds a new SDK-side runtime configuration for local function tool execution concurrency: ToolExecutionConfig(max_function_tool_concurrency=...) on RunConfig, preserves default behavior when unset. The change keeps provider-side ModelSettings.parallel_tool_calls separate from SDK-side local execution scheduling.
### Server-prefixed MCP tool naming
This version adds a new option include_server_in_tool_names to MCPConfig. When it is set to True, the SDK includes the MCP server name in the tool name to prevent tool name conflicts with other MCP servers.
``python
agent = Agent(
name="Assistant",
mcp_servers=[my_mcp_server],
mcp_config={"include_server_in_tool_names": True},
)
``
## What's Changed
feat: switch the default model to a newer mini model (affecting only when a model is unset) by @seratch in https://github.com/openai/openai-agents-python/pull/3147
feat: allow disabling max_turns with None by @seratch in https://github.com/openai/openai-agents-python/pull/3132
feat: #1167 add opt-in server-prefixed MCP tool names by @mavrickdeveloper in https://github.com/openai/openai-agents-python/pull/3019
feat: #1859 add runtime function tool concurrency config by @seratch in https://github.com/openai/openai-agents-python/pull/3152
fix: #3104 stabilize chat completions tool call output indexes by @seratch in https://github.com/openai/openai-agents-python/pull/3161
fix: reject external symlink targets during hydrate by @Aphroq in https://github.com/openai/openai-agents-python/pull/3094
fix: make Permissions hashable to match User and Group by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3154
### Documentation & Other Changes
docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3151
docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3160
docs: realtime guardrail fallback behavior by @mindbomber in https://github.com/openai/openai-agents-python/pull/3157
docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3162
Release 0.16.0 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3150
## New Contributors
@mavrickdeveloper made their first contribution in https://github.com/openai/openai-agents-python/pull/3019
@mindbomber made their first contribution in https://github.com/openai/openai-agents-python/pull/3157
Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.15.3...v0.16.0
v0.15.3
6. Mai 2026
## What's Changed fix(mcp): avoid mutating tool input schemas by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3134 fix(mcp): reject non-object tool input JSON by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3135 fix(mcp): make duplicate tool errors deterministic by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3136 fix: tolerate audio deltas before audio format negotiation in ModelAu… by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3141 ### Documentation & Other Changes docs: updates for #3128 by @seratch in https://github.com/openai/openai-agents-python/pull/3129 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3131 test: cover overlapping tool response creates by @adityasingh2400 in https://github.com/openai/openai-agents-python/pull/3140 Release 0.15.3 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3149 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.15.2...v0.15.3
v0.15.2
6. Mai 2026
## What's Changed feat: add context management model setting by @seratch in https://github.com/openai/openai-agents-python/pull/3128 fix: #3123 avoid replaying assistant conversation item IDs for OpenAIConversationsSession by @seratch in https://github.com/openai/openai-agents-python/pull/3127 fix: redact function tool trace span errors by @Aphroq in https://github.com/openai/openai-agents-python/pull/3111 fix: redact MCP invalid JSON errors when tool logging is disabled by @Aphroq in https://github.com/openai/openai-agents-python/pull/3088 fix: reject failed responses stream terminals by @Aphroq in https://github.com/openai/openai-agents-python/pull/3107 fix: only rewind matching session suffixes by @Aphroq in https://github.com/openai/openai-agents-python/pull/3090 fix: reject string-like shell commands by @Aphroq in https://github.com/openai/openai-agents-python/pull/3092 fix: filter custom_tool_call types in remove_all_tools handoff filter by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3095 fix: make ToolContext hashable to match RunContextWrapper by @ioleksiuk in https://github.com/openai/openai-agents-python/pull/3097 fix: block disabled function tools before execution by @Aphroq in https://github.com/openai/openai-agents-python/pull/3118 fix: isolate merged MCP tool metadata by @felmonon in https://github.com/openai/openai-agents-python/pull/3114 ### Documentation & Other Changes docs: updates for #3080 by @seratch in https://github.com/openai/openai-agents-python/pull/3081 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3084 test: improve coverage and organize test layout by @seratch in https://github.com/openai/openai-agents-python/pull/3085 test: cover realtime tool timeout behaviors in realtime session by @Aphroq in https://github.com/openai/openai-agents-python/pull/3076 test: add realtime tool output serialization edge cases by @Aphroq in https://github.com/openai/openai-agents-python/pull/3077 test: cover on_handoff, on_tool_start, on_tool_end on RunHooks by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3098 test: cover real Handoff object branch in visualization by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3100 test: add direct unit tests for _tool_identity helpers by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3101 test: add direct unit tests for _mcp_tool_metadata helpers by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3102 Release 0.15.2 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3099 ## New Contributors @ioleksiuk made their first contribution in https://github.com/openai/openai-agents-python/pull/3097 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.15.1...v0.15.2
v0.15.1
2. Mai 2026
## What's Changed feat: expose Responses WebSocket keepalive options by @seratch in https://github.com/openai/openai-agents-python/pull/3080 fix: restore UnixLocal PTY terminal signal defaults by @seratch in https://github.com/openai/openai-agents-python/pull/3082 fix: #3074 restore SIGINT defaults for UnixLocal PTY children by @Aphroq in https://github.com/openai/openai-agents-python/pull/3075 ### Documentation & Other Changes docs: add 0.15 changelog by @seratch in https://github.com/openai/openai-agents-python/pull/3058 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3064 docs: improve quickstart documentation for Windows OS users by @seratch in https://github.com/openai/openai-agents-python/pull/3071 docs: update translated document pages by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3072 test: cover guardrail name fallback to function __name__ by @Quratulain-bilal in https://github.com/openai/openai-agents-python/pull/3073 chore: harden Dapr Redis integration fixture loading by @Aphroq in https://github.com/openai/openai-agents-python/pull/3078 Release 0.15.1 by @github-actions[bot] in https://github.com/openai/openai-agents-python/pull/3083 ## New Contributors * @Aphroq made their first contribution in https://github.com/openai/openai-agents-python/pull/3078 Full Changelog: https://github.com/openai/openai-agents-python/compare/v0.15.0...v0.15.1