pypi pydantic-ai 2.63.0
v2.63.0 (2026-10-27)

3 hours ago

What's Changed

⚠️ Compatibility Notes

  • Default CodeMode to dynamic_catalog=True, so a revealed tool is appended instead of rewriting the cached prompt by @DouweM in #11358
  • Pass the Gemini Live reconnect replay to GoogleRealtimeConnection's dial as a keyword-only replay argument by @DouweM in #11515
  • Give Harness LLMReminder a default interval=10 instead of generating on every request by @DouweM in #11641
  • Replay signed and encrypted history data to providers with the same canonical_system by @DouweM in #11504
  • Let a deferred CombinedCapability load as one capability, with members keeping their global ordering by @adtyavrdhn in #10321
  • End a GPT-Live reply that delegated at Live's next pause instead of mid-sentence when the backend answers by @DouweM in #11250
  • Say what the <system> tag means and escape it in user and tool text on models without mid-conversation system messages by @DouweM in #11506

🚀 Features

  • Add task_timeout to Dataset.evaluate to bound each task attempt by @dmontagu in #10291
  • Support ag-ui-protocol 1.0 by @adtyavrdhn in #8627
  • Default CodeMode to dynamic_catalog=True, so a revealed tool is appended instead of rewriting the cached prompt by @DouweM in #11358
  • Pass the Gemini Live reconnect replay to GoogleRealtimeConnection's dial as a keyword-only replay argument by @DouweM in #11515
  • Add OpenAI gpt-6.1-terra model support by @dsfaccini in #11393
  • Add an IPython Code Mode (IPythonCodeMode) alongside the Monty-based CodeMode by @mpfaffenberger in #11570
  • Give Harness LLMReminder a default interval=10 instead of generating on every request by @DouweM in #11641
  • Add a DetectLoops capability to interrupt repeated-action loops by @mpfaffenberger in #11471
  • Add manage_message_history to UI adapters so a server-held history isn't sent to the model twice by @DouweM in #11431
  • Keep strict schemas within Anthropic's and OpenAI's complexity limits, falling back to non-strict output where no mode was chosen by @DouweM in #11464
  • Add a public pydantic_ai.framing module with wrap, neutralize_tags and register_tag, so extensions can frame their own tags by @DouweM in #10957
  • Replay signed and encrypted history data to providers with the same canonical_system by @DouweM in #11504
  • Add PostgresSpendStore so harness SpendLimits budgets can be shared through PostgreSQL by @DouweM in #11527

🐛 Bug Fixes

  • Let a deferred CombinedCapability load as one capability, with members keeping their global ordering by @adtyavrdhn in #10321
  • List the modules Monty 1.2-1.4 added in the CodeMode run_code description by @mpfaffenberger in #11459
  • Require mistralai>=3.1.0 and drop the legacy httpx import so MistralModel imports on fresh installs by @adtyavrdhn in #11549
  • Keep the rate-limit category of Azure too_many_requests Responses failures on openai>=3.32.0 by @dsfaccini in #11532
  • Run ToolOutputLimits spill writes in a durable_operation so replays do not write them again by @mpfaffenberger in #11460
  • Record the instructions a before_model_request hook sent when it rewrote the history with a copy of the request by @DouweM in #11501
  • State a deferred capability's instructions on the request where a before_model_request hook loaded it by @DouweM in #11516
  • Escape framing tags consistently in BackgroundTools, RepoContext, TrajectoryJudge and Planning frames by @DouweM in #11530
  • Record a thinking change after an unanswered ModelSettingsDeltaPart instead of replacing it, so UI streams and hook-rebuilt requests keep it by @DouweM in #11514
  • Make typed turns on Gemini gemini-robotics-er realtime models see the image sent just before them by @DouweM in #11484
  • End a GPT-Live WebRTC sideband session cleanly when the browser hangs up by @DouweM in #11435
  • End a GPT-Live reply that delegated at Live's next pause instead of mid-sentence when the backend answers by @DouweM in #11250
  • Withdraw a pending batch request when the run doesn't end with its PendingModelResponse by @DouweM in #11517
  • Send per-message effort changes through AsyncAnthropicBedrockMantle on Claude Opus 5.5 by @DouweM in #11486
  • Enable thinking-block binding recovery on AsyncAnthropicBedrockMantle by @DouweM in #11487
  • Stop offering AdvisorTool on AsyncAnthropicBedrockMantle, which rejects it by @DouweM in #11488
  • Keep the stored CodeMode REPL state when repl_store load fails, instead of saving a fresh REPL over it by @mpfaffenberger in #11483
  • Fix RuntimeError: coroutine ignored GeneratorExit and an escaping KeyboardInterrupt on Agent.iter() teardown by @pydanty in #10258
  • Return a wrap_run or on_run_error recovery result from run_stream() instead of raising AgentRunError by @DouweM in #11571
  • Say what the <system> tag means and escape it in user and tool text on models without mid-conversation system messages by @DouweM in #11506
  • Escape framing tags consistently in the SummarizingCompaction summarizer transcript by @DouweM in #11583
  • Enforce allowed_patterns on the real path when search_files targets a single symlinked file by @mpfaffenberger in #11639
  • Normalize bare None type arguments in Dataset by @pydanty in #11254
  • Stop offering WebSearchTool and WebFetchTool on AsyncAnthropicBedrockMantle, which rejects them by @DouweM in #11489
  • Don't commit an automatic SummarizingCompaction summary that would make the history larger by @DouweM in #11649
  • Clear the caption in stream_transcripts(delta=True) when a transcript is corrected to empty by @DouweM in #11667
  • Evaluate runs with every OnlineEvaluation capability on an agent, not just the outermost by @DouweM in #11663
  • Omit realtime span model_settings when include_content=False by @DouweM in #11668
  • Call AsyncAnthropicBedrockMantle the Bedrock Messages API, not Claude Platform on AWS, in comments and docstrings by @DouweM in #11482
  • Record the provider item ID on the model's realtime SpeechPart.id by @DouweM in #11675

Full Changelog: v2.62.0...v2.63.0

Don't miss a new pydantic-ai release

NewReleases is sending notifications on new releases.