SIGNAL
Tracking the global AI frontier — labs · research · agents · policy
Frontier Signal
Agents

OpenAI Agents SDK v0.19.0

OpenAI Agents SDK v0.19.0
Primary source github.com ↗

Published July 27, 2026 · Category: AI Agents

Overview

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 #3833
    • fix: remove programmatic transcripts from handoff tool filtering by @seratch in #3879
    • fix: encode structured programmatic tool errors as JSON by @seratch in #3932
  • feat: consistently accept typed objects and dictionaries for SDK configuration by @seratch in #3917
  • feat: add tool decorator alias by @seratch in #3920
  • feat(sandbox): add Vercel cloud mount strategy by @seratch in #3899
  • fix: retry pre-response WebSocket overload errors by @seratch in #3978
  • fix: harden sensitive runtime logging by @seratch in #3938
    • fix: redact Realtime and RunState diagnostics by @seratch in #3948
    • fix: stop leaking raw exceptions in model + tool error logs by @dimaosipa in #3910
  • fix: preserve callable function tool compatibility by @seratch in #3959
    • fix: support async callable objects as function tools by @seratch in #3949
  • fix: partition nested handoffs history ownership by @seratch in #3823
    • fix: summarize programmatic transcripts during nested handoffs by @seratch in #3878
  • fix: improve AnyLLM and LiteLLM provider compatibility by @seratch in #3930
  • fix: improve provider compatibility and preserve session history on retries by @seratch in #3931
  • fix: fail closed on invalid callable approval arguments by @seratch in #3867
  • fix: classify lazy skill read probes correctly by @seratch in #3893
  • fix: reuse the verbose stdout logging handler by @seratch in #3957
  • fix: recognize typed easy input messages in Chat Completions by @seratch in #3877
  • fix: include device nodes when parsing ls output by @TheSaiEaranti in #3951
  • fix: preserve *args/**kwargs docstring descriptions in tool schemas by @TheSaiEaranti in #3956
  • fix: compare inspect sentinels by identity in function_schema by @TheSaiEaranti in #3961
  • fix: parse ls output with SELinux security-context marker by @SHAI-Cheravgoyal in #3904
  • fix: preserve dot-prefixed skip paths in Modal tar workspace excludes by @SHAI-Cheravgoyal in #3905
  • fix: cleanup cancelled servers during MCP connect failure by @hsusul in #3919
  • fix: await async callable-object dynamic instructions by @hsusul in #3942
  • fix: await async callable-object callbacks by @seratch in #3944
  • fix: Blaxel's shell-quote interpolated FUSE mount options by @ioleksiuk in #3873
  • fix: escape multiline DOT names in visualization by @hsusul in #3898
  • fix: redact raw message payload from realtime agents' conversion-failure log by @ioleksiuk in #3907
  • fix: encode streamed float32 audio as PCM16 in voice handling by @FayezBast in #3916
  • fix: redact MCP tool-call and formatter errors from logs by @dimaosipa in #3918
  • fix: parse Google docstrings whose Args: follows a section body by @oldrobotdev in #3862
  • fix: pin and verify rclone sandbox installs by @seratch in #3911
  • fix: reject empty additionalProperties mappings in strict_schema by @hsusul in #3927
  • fix: send logprobs=True when top_logprobs is set when using LiteLLM by @dimaosipa in #3929
  • fix: surface content-filter refusals when buffering streamed tool calls in chat completions by @gunjanjaswal in #3897
  • fix: reject unsupported streamed STT audio dtypes by @seratch in #3950
  • fix: use last_agent property in pretty_print_run_result_streaming to avoid None crash by @AAliKKhan in #3965
  • fix: use last_agent property in RunResultStreaming._create_error_details by @AAliKKhan in #3967

Documentation & Other Changes

New Contributors

Full Changelog: v0.18.3...v0.19.0

Source

Originally published at github.com.

Related Articles

F
Frontier Signal Desk

Frontier Signal tracks the global AI frontier — labs, research, agents, creation tools and real-world practice — straight from primary sources. Tip the desk: editorial@news.tunx.ai

Email the desk →
From our network: explore the AI assistant platform behind this site. Visit tunx.ai →
Note: This story is aggregated and summarized from the primary source linked above; the original publisher retains all rights. Details may evolve after publication — always confirm against the source. Nothing here is professional, legal or investment advice.

Related Stories

More from Agents →