Skip to content

openai-agents-python

v0.17.1 Bugfix

This release fixes issues for SREs watching stability and regressions.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agents ai harness llm openai python

ReleasePort's take

Moderate signal
editorial:auto 13d

Version v0.17.1 resolves numerous bugs across sandboxes, sessions, realtime agents, core components, and extensions.

Why it matters: Apply v0.17.1 to eliminate extraction limits in sandboxes, skip corrupt session/MongoDB items, preserve timestamps and tool IDs, and fix validation/opt‑in handling; no measurable severity threshold is provided.

Summary

AI summary

Fixed a variety of bugs across sandboxes, tracing, sessions, realtime agents, core modules, and extensions.

Changes in this release

Bugfix Medium

Sandbox archive extraction is limited

Sandbox archive extraction is limited

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Realtime tool approvals are scoped by qualified key

Realtime tool approvals are scoped by qualified key

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Git repository subpaths are validated

Git repository subpaths are validated

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Corrupt items are skipped during session pop

Corrupt items are skipped during session pop

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Corrupt MongoDB documents are skipped in pop

Corrupt MongoDB documents are skipped in pop

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Chat completions server state is rejected

Chat completions server state is rejected

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Existing transcript is preserved over stale delta

Existing transcript is preserved over stale delta

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

AudioInput.to_base64 no longer mutates buffer

AudioInput.to_base64 no longer mutates buffer

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Required hosted tool IDs preserved in sessions

Required hosted tool IDs preserved in sessions

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Created timestamp preserved across Redis writes

Created timestamp preserved across Redis writes

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Realtime output sent for unknown tool calls

Realtime output sent for unknown tool calls

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Output audio content parts preserved in events

Output audio content parts preserved in events

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Nested handoff history content is preserved

Nested handoff history content is preserved

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Assertion in handoff replaced with UserError

Assertion in handoff replaced with UserError

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Tool guardrail results preserved across handoffs

Tool guardrail results preserved across handoffs

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Chat completions response validation is opt-in

Chat completions response validation is opt-in

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Unsupported Chat Completions reusable prompts rejected

Unsupported Chat Completions reusable prompts rejected

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Realtime event iterators awakened on close

Realtime event iterators awakened on close

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

RealtimeAgent fields validated in __post_init__

RealtimeAgent fields validated in __post_init__

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Invalid input_text parts skipped in realtime

Invalid input_text parts skipped in realtime

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Content blocks not duplicated in any-llm splits

Content blocks not duplicated in any-llm splits

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Content blocks not duplicated in litellm splits

Content blocks not duplicated in litellm splits

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

BatchTraceProcessor worker alive on errors

BatchTraceProcessor worker alive on errors

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Failed status preserved across apply_patch

Failed status preserved across apply_patch

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Request usage entries preserved on Usage.add

Request usage entries preserved on Usage.add

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Cancelled guardrail tasks awaited on tripwire

Cancelled guardrail tasks awaited on tripwire

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Last response_id preserved on conversation resume

Last response_id preserved on conversation resume

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Approval checker skipped when status resolved

Approval checker skipped when status resolved

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

HandoffInputData items preserved in remove_all_tools

HandoffInputData items preserved in remove_all_tools

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Tracing shutdown is best-effort on exit

Tracing shutdown is best-effort on exit

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Empty GitRepo subpaths allowed as repository root

Empty GitRepo subpaths allowed as repository root

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

GitRepo root subpath aliases preserved

GitRepo root subpath aliases preserved

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

Sandbox provider error details are included

Sandbox provider error details are included

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

max_output_tokens exposed on RealtimeSessionModelSettings

max_output_tokens exposed on RealtimeSessionModelSettings

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

UserError raised for input_type without on_handoff (realtime)

UserError raised for input_type without on_handoff (realtime)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

None audio.input/audio.output treated as unset (realtime)

None audio.input/audio.output treated as unset (realtime)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

MongoDB metadata timestamps tracked

MongoDB metadata timestamps tracked

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

Multi-choice chat streams aligned with strict validation

Multi-choice chat streams aligned with strict validation

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

Chat custom tool calls explicitly rejected

Chat custom tool calls explicitly rejected

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

Model retry backoff settings validated

Model retry backoff settings validated

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Full changelog

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

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track openai-agents-python

Get notified when new releases ship.

Sign up free

About openai-agents-python

A lightweight, powerful framework for multi-agent workflows

All releases →

Beta — feedback welcome: [email protected]