unstale

pypi / openai-agents

openai-agents

What changed in openai-agents 0.23 to 0.24, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.

7 breaking9 security8 new APIs and options9 behavior and defaults54 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.0 on npm

openai-agents 0.2419 changes

Breaking changes 3

  • macOS sandbox commands deny Launch Services requests, preventing local commands from launching host applications through Launch Services.

    0.24.0release notes

  • Transactional append, clear, and replacement require a supported backend; Redis Cluster reads and pops remain available.

    0.24.0release notes

  • New snapshots use schema 1.21, and some legacy graphs with same-name non-root agents are rejected rather than risk incorrect agent ownership; finish affected tasks with their original SDK and agent code.

    0.24.0release notes

Security 1

  • Protected mount failures produce fresh redacted errors while retaining source arguments and linked exceptions and detaching the caught source traceback.

    0.24.0release notes

New APIs and options 2

  • The formatter arguments include an optional error field for tool exceptions.

    0.24.0release notes

  • The run-wide tool error formatter can receive the new tool_exception category for eligible decorated function failures; explicit per-tool handlers retain precedence.

    0.24.0release notes

Behavior and default changes 5

  • Automatic compaction waits while approvals are pending, avoiding compaction before approval history is ready.

    0.24.0release notes

  • Unserializable dataclass run contexts are omitted with a warning; use a serializer/deserializer or context_override, or strict_context=True to reject omission.

    0.24.0release notes

  • Deferred approval history is persisted across resumes and waits for the output guardrail boundary.

    0.24.0release notes

  • Converted MCP tools expose copied optional mcp_annotations metadata as discovery hints; it does not authorize execution or enter model schemas.

    0.24.0release notes

  • Writes are batched in requests of at most 20 items to respect the API limit; multi-request writes can commit partially, so reconcile remote history before retrying.

    0.24.0release notes

Fixes and other changes 8

  • Approved tools resumed after approval are traced inside the resumed agent span.

    0.24.0release notes

  • Accepted call/output pairs survive sibling or callback failures after input and tool-output guardrails permit publication, allowing supported recovery without replaying completed tools.

    0.24.0release notes

  • Unhandled computer safety checks now produce a warning.

    0.24.0release notes

  • Function-call aliases are preserved when restoring RunState.

    0.24.0release notes

  • Completed stop tools can reject added pending input when ending a resumed run; finish that run before starting a new user turn.

    0.24.0release notes

  • Standalone Redis replacement is atomic; coordinate other writers because atomic replacement does not prevent stale compaction across processes.

    0.24.0release notes

  • The tracing opt-out is honored inside caller-owned traces, including resumed tools and streamed cleanup.

    0.24.0release notes

  • Invalid sandbox tool arguments return recoverable tool errors without swallowing provider failures.

    0.24.0release notes

openai-agents 0.2368 changes

Breaking changes 4

  • Host sources in dictionary sandbox manifests are rejected.

    0.23.0release notes

  • Session history now requires encrypted envelopes.

    0.23.0release notes

  • Tool arguments that would be silently discarded as kwargs are now rejected.

    0.23.0release notes

  • Blank branch names are rejected for SQLite sessions.

    0.23.0release notes

Security 8

  • Streaming callback backlogs are bounded, and callbacks are validated before execution.

    0.23.0release notes

  • Host PATH read grants are limited to the child environment.

    0.23.0release notes

  • Exception details are redacted from Realtime tool error events.

    0.23.0release notes

  • Realtime tool output guardrails are now enforced.

    0.23.0release notes

  • Incoming WebSocket message size is bounded by default.

    0.23.0release notes

  • Grants are enforced during recursive removal.

    0.23.0release notes

  • Model metadata now respects the sensitive trace capture setting.

    0.23.0release notes

  • Special files are rejected in shared UnixLocal file I/O.

    0.23.0release notes

New APIs and options 6

  • An optional item budget is available for compaction rollback.

    0.23.0release notes

  • Docker removal protection can now be opted into.

    0.23.0release notes

  • An encrypted history scan budget is available as an opt-in.

    0.23.0release notes

  • MCP listing page limits are now configurable.

    0.23.0release notes

  • The number of turns used for memory consolidation can now be configured.

    0.23.0release notes

  • Bounded workspace outbox reads are available as an opt-in.

    0.23.0release notes

Behavior and default changes 4

  • Verbose connector output is summarized, reducing the amount of output passed through.

    0.23.0release notes

  • The STT session logging header is no longer forced.

    0.23.0release notes

  • Reasoning is omitted from default trace exports.

    0.23.0release notes

  • gpt-transcribe is now the default voice STT model.

    0.23.0release notes

Fixes and other changes 46

  • Literal Unicode content now matches correctly.

    0.23.0release notes

  • The agent_end event names the agent whose turn ended.

    0.23.0release notes

  • Tools are resolved after agent start hooks run.

    0.23.0release notes

  • Filtered history is preserved during automatic compaction.

    0.23.0release notes

  • Built-in shell and apply_patch tools are selected by their own type.

    0.23.0release notes

  • Premature end-of-file in Chat Completions streams is rejected.

    0.23.0release notes

  • Clearing a session now resets the compaction response chain.

    0.23.0release notes

  • Closed parent constraints are preserved in singleton allOf schemas.

    0.23.0release notes

  • Codex command spans now honor the run tracing policy.

    0.23.0release notes

  • Namespaced compaction model names are accepted.

    0.23.0release notes

  • Output-only metadata is stripped from compaction replay.

    0.23.0release notes

  • Default tool failure details are redacted.

    0.23.0release notes

  • Ambiguous canonical Docker removal paths are rejected.

    0.23.0release notes

  • Encrypted session visibility is refreshed before compaction.

    0.23.0release notes

  • Encrypted SQLite history is preserved when pops use the wrong key.

    0.23.0release notes

  • Exporter overrides are preserved during shutdown.

    0.23.0release notes

  • Annotated constraints on function tools are preserved.

    0.23.0release notes

  • Function tool approvals are scoped to their owning agent.

    0.23.0release notes

  • Agent tools now preserve guarded final outputs.

    0.23.0release notes

  • Host grants are validated against normalized workspace roots.

    0.23.0release notes

  • Resumed MCP calls are bound to their original recipients.

    0.23.0release notes

  • The traceable dictionary now serializes only traced fields.

    0.23.0release notes

  • MongoDB session identifiers are now validated.

    0.23.0release notes

  • Nested agent tool state is isolated across fresh runs and restored against the tool's own agent.

    0.23.0release notes

  • Nullable token counts are normalized in Chat Completions and remaining provider paths.

    0.23.0release notes

  • The pipeline tracing opt-out is honored inside caller traces.

    0.23.0release notes

  • Session keys are validated before clearing.

    0.23.0release notes

  • Terminal controls are escaped in result diagnostics.

    0.23.0release notes

  • Sandbox apply_patch approval scope is checked.

    0.23.0release notes

  • Fresh streamed handoffs are recovered after session append failures, preventing a failed append from losing the handoff.

    0.23.0release notes

  • Handoffs are recovered after compaction is cancelled.

    0.23.0release notes

  • Previous stream event aliases are discarded when a model times out.

    0.23.0release notes

  • The session remains usable after a 5xx response.

    0.23.0release notes

  • Streamed transcription is finished when input ends.

    0.23.0release notes

  • Exception tracebacks from streaming tasks are redacted.

    0.23.0release notes

  • Persistence now preserves structured guardrail diagnostics and agent output.

    0.23.0release notes

  • On Python 3.10, _wait_for_event raises the builtin TimeoutError.

    0.23.0release notes

  • Tool identity is preserved during asynchronous enablement.

    0.23.0release notes

  • Callback results are now validated.

    0.23.0release notes

  • An item with non-JSON-serializable values no longer causes the export batch to be discarded.

    0.23.0release notes

  • Rate-limited trace exports are retried.

    0.23.0release notes

  • Transcription iterators are finished when sessions close during setup.

    0.23.0release notes

  • UnixLocal snapshots preserve hardlinks and normalize special files and symlinks.

    0.23.0release notes

  • Legacy positional configuration arguments continue to be accepted.

    0.23.0release notes

  • Pre-request WebSocket handshake failures are retried.

    0.23.0release notes

  • Nested paths and symlink targets are preserved in workspace snapshots.

    0.23.0release notes