Zum Hauptinhalt springen

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.

Versionshinweise ohne deutsche Übersetzung stehen im englischen Original.

Neueste Version:v0.23.1
Angezeigte Releases:62
Quelle:GitHub Releases
RSS

Neueste Releases (62)

v0.23.1Neu

v0.23.1

2. Oktober 2026

  • •restore release tests and refresh required readiness check (#5278) (730deb4)
  • •Review mode: final candidate
  • •Intended release: patch, 0.23.1
  • •Minimum required release type: patch
  • •Versioning verdict: compatible
  • •28 files changed (+622/-42): release automation, test fixtures, integration/example tooling, and release metadata.
  • •The clean candidate contains current main a575a6e637feb9aea1b591237b007dd4991ddfba plus only six release-owned metadata files. Package, lockfile, manifest, source version and API baseline agree on 0.23.1. Snapshot source b31b9f8d13d49142a64f8873f2cc2ee40441a795 is an ancestor of the candidate.
  • •Relative to v0.23.0, SDK runtime source changes only its version string. API snapshot content, dependencies, Python support and persisted schemas are unchanged.
  • •First PyPI publication of the 0.23 series includes earlier migration requirements
  • •Risk: 🟢 LOW with the previously reviewed migration paths. Users upgrading from 0.22.3 receive the 0.23.0 behavior changes as well as this patch.
  • •Evidence: PyPI has neither 0.23.0 nor 0.23.1. The 0.23.0 release assessment in #5226 covers strict tools, approval restoration, encrypted history, resource limits, voice defaults and provider changes; this candidate does not alter those runtime paths.
  • •Files: CHANGELOG.md, src/agents/version.py; unchanged 0.23.0 runtime contracts assessed in #5226.
  • •Action: Carry forward the 0.23.0 migration guidance in the 0.23.1 announcement, particularly explicit strict-tool parameters, fresh legacy approvals, trusted encrypted-history import, resource-limit overrides and the explicit prior voice-model override.
  • •Release checks recover without changing package behavior
  • •Risk: 🟢 LOW. Test-loop initialization and required-check ownership are corrected while publication authorization remains intact.
v0.23.0Neu

v0.23.0

2. Oktober 2026

  • •mcp: add configurable MCP listing page limits (#5133) (9a21ab1)
  • •sandbox: add opt-in Docker removal protection (#5116) (ae5803f)
  • •sandbox: allow configuring memory consolidation turns (#5135) (daa1bcb)
  • •sessions: add an opt-in encrypted history scan budget (#5118) (a2fdb94)
  • •avoid awaiting cleanup during coroutine closure (#5163) (719c4e7)
  • •ci: update and group CodeQL actions together (#5262) (f76153c)
  • •ci: validate release source before building distributions (#5220) (2747c1c)
  • •core/extensions: respect sensitive trace capture for model metadata (#5129) (88b722d)
  • •core: bound agent tool streaming callback backlogs (#5106) (f23da76)
  • •core: isolate nested agent tool state across fresh runs (#5123) (46cc8d8)
  • •core: preserve closed parent constraints in singleton allOf (#5131) (f010d18)
  • •core: preserve guarded final outputs in agent tools (#5115) (f3a15f6)
  • •core: preserve structured guardrail diagnostics and agent output during persistence (#5016) (51bcea7)
  • •core: preserve tool identity during asynchronous enablement (#5136) (f2ae64c)
  • •core: redact default tool failure details (#5112) (40956e0)
v0.22.3

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

v0.22.2

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

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

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

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

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

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

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

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

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

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.0Breaking Change

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Zeige 30 von 62