github pydantic/pydantic-ai v2.56.0
v2.56.0 (2026-10-13)

latest release: clai2-bleeding
3 hours ago

What's Changed

⚠️ Compatibility Notes

  • Run BrowserUse on the host model by default and make browser-use telemetry opt-in by @mpfaffenberger in #9506

🚀 Features

  • Let Skills layer project and personal libraries, name each skill's directory, and render a skill for a host command by @DouweM in #9802
  • Add base_url argument to ZaiProvider by @aisk in #10099
  • Adds PGTaskDurability based on pgtask by @adtyavrdhn in #10174
  • Adds Render Workflows Integration for Durable Execution engines by @ojusave in #9439
  • Remove WarnNearLimits from the harness Coder capability by @adtyavrdhn in #9969
  • Add SmolSandbox: a workspace that runs harness capabilities in a local smolvm microVM by @mpfaffenberger in #10148
  • Support Gemini 4 Argon (gemini-4-argon) on GoogleModel with long decode past the per-request output cap, and raise the Google providers' default timeout to 20 minutes by @dsfaccini in #10202
  • Support Python 3.15 by @adtyavrdhn in #10064

🐛 Bug Fixes

  • Keep a send_audio() chunk whose send fails out of the realtime SpeechPart.audio recorded while it was sending by @DouweM in #10058
  • Explain the Bedrock data retention opt-in when Claude Fable 5 / 5.1 reject the default mode by @DouweM in #10050
  • Apply auth to requests through MCPToolset(http_client=...) and stop closing the user-supplied client by @DouweM in #10051
  • Allow list-form tool_choice to name output tools, and accept static lists that include one by @adtyavrdhn in #8565
  • Raise ModelAPIError when a 200 response from OpenAI Responses, Anthropic, Groq or OpenAI images has a text/plain body by @DouweM in #10065
  • Stop sending explicit prompt caching fields to the openai-codex backend by @aisk in #10103
  • Use openai-decisions pricing before matching the shared OpenAI base URL by @dsfaccini in #10122
  • Unwrap decorated partials when inferring evaluation task names by @pydanty in #10121
  • Stop harness context estimates double-counting changed instructions and tool-returned files by @mpfaffenberger in #9929
  • Support adjustable reasoning on mistral-large-4 and mistral-large-4-0 by @pydanty in #9967
  • Map every UsageLimits field to an explicit ACP stop reason by @mpfaffenberger in #9497
  • Record native tool events in gh-aw sessions by @dsfaccini in #10000
  • Retry stale thinking blocks with drop_block when Bedrock rejects them by @mpfaffenberger in #9486
  • Fix import pydantic_ai.models on Pyodide by skipping the eager httpcore2 import on Emscripten by @adtyavrdhn in #10134
  • Replay xAI server-side tool results as tool turns paired with their calls by @kevinwmerritt in #10043
  • Keep one summary, receipt and system prompt copy across repeated SummarizingCompaction runs by @aweis89 in #9716
  • Run gathered CodeMode calls concurrently under parallel_ordered_events by @mpfaffenberger in #10137
  • Keep the Memory snapshot with the latest user prompt instead of after tool results by @mpfaffenberger in #10192
  • Stop AnthropicModel picking native structured output that Bedrock rejects on AsyncAnthropicBedrock by @dsfaccini in #10207
  • Propagate Exa 402 payment-required errors instead of retrying them by @pydanty in #9816
  • Raise WorkspaceUnavailableError when a Sprite is deleted during a command, whatever its exit code by @mpfaffenberger in #10193

📦 Dependencies

  • Bump genai-prices to 0.1.10 and keep tests passing on rich 15, dbos 3 and e2b 2.55 by @dsfaccini in #10077

New Contributors

Full Changelog: v2.55.0...v2.56.0

Don't miss a new pydantic-ai release

NewReleases is sending notifications on new releases.