pypi pydantic-ai 2.57.0
v2.57.0 (2026-10-15)

4 hours ago

What's Changed

⚠️ Compatibility Notes

  • Attach namespaced origin and tool_call_id metadata to BackgroundTools completions by @michaeldunn9 in #10196
  • Take GPT-Live realtime history, usage, and reply waits from the session core by @DouweM in #10083
  • Honour disable-model-invocation and user-invocable in Skills, and skip stray skill library paths by @DouweM in #10378
  • Take Gemini Live realtime history, usage, and reply waits from the session core by @DouweM in #10082

🚀 Features

  • Add MetaProvider for Meta Muse models, with meta: using the Responses API by @mpfaffenberger in #10156
  • Add Harness ApprovalReviewer to let a model approve low-risk tool calls before a person sees them by @mpfaffenberger in #10143
  • Price requests at their reported service tier by @adtyavrdhn in #10244
  • Add dataset_name to EvaluationReport by @jirikuncar in #10307
  • Forward MCP Apps tool results to AG-UI and Vercel AI frontends and add MCPToolset.read_resource_contents by @adtyavrdhn in #10179
  • Relay MCP Apps tool calls with MCPToolset.call_tool_for_app by @adtyavrdhn in #10190

🐛 Bug Fixes

  • Fix token-based compaction retaining too little recent history by @AndrewTilson in #9784
  • Record and stream one part per realtime output item when its transcript arrives late by @pydanty in #10097
  • Reference multimodal URL choices in the ToolReturnContent discriminator mapping by @Kludex in #10239
  • Stop OpenAIResponsesModel sending unavailable tool_choice names in allowed_tools by @dsfaccini in #10232
  • Send Gemini tool-call thought signatures (extra_content) back from OpenAIChatModel by @dsfaccini in #10235
  • Give a tool's prepare its own retry count under .prefixed(), .renamed() and PrefixTools by @dsfaccini in #10219
  • Support Gemini agentic media processing in GoogleModel by @miguel-flowstate in #8028
  • Stop granting native tool_search to gpt-5.4-nano by @dsfaccini in #10272
  • Omit unset optional fields from Vercel AI UIMessage JSON so the AI SDK accepts it by @adtyavrdhn in #10175
  • Keep Planning tool loops in the prompt cache, and attach a leading CachePoint to the previous user message on OpenRouterModel by @mpfaffenberger in #10257
  • Release concurrency slots after streamed request cleanup by @dsfaccini in #10225
  • Backfill an empty thinking field on current-turn tool calls in OpenAIChatModel's default 'auto' mode by @dsfaccini in #10251
  • Keep available_tool_names and active_capability_ids on run context copies inside Temporal activities and Render child tasks by @dsfaccini in #10280
  • Reconnect an xAI realtime session past max_duration when a reconnect policy is set by @DouweM in #10056
  • Await ProcessEventStream cleanup after early exit and cancellation by @dsfaccini in #10341
  • Count the request of a GPT-Live backend response that ends while the session closes by @DouweM in #10084
  • Warn when FallbackModel response handlers are skipped on a streamed request by @DouweM in #10066
  • Close the HTTP client of a model a run builds from a model name, and reuse one per name inside async with agent: by @DouweM in #10067
  • Make waits between continuation polls durable DBOS.sleep steps under DBOSDurability and DBOSAgent by @DouweM in #10383
  • Charge the partial response of an interrupted stream in SpendLimits by @DouweM in #10069
  • Stop WarnNearLimits from deleting user prompts that quote its [WarnNearLimits] marker by @DouweM in #10391

New Contributors

Full Changelog: v2.56.0...v2.57.0

Don't miss a new pydantic-ai release

NewReleases is sending notifications on new releases.