⬆️(dependencies) update pydantic-ai-slim to v1.99.0 [SECURITY] - autoclosed#493
Closed
renovate[bot] wants to merge 1 commit into
Closed
⬆️(dependencies) update pydantic-ai-slim to v1.99.0 [SECURITY] - autoclosed#493renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



This PR contains the following updates:
==1.77.0→==1.99.0Pydantic AI: SSRF cloud-metadata blocklist bypass via IPv4-mapped IPv6 (Incomplete fix of CVE-2026-25580)
CVE-2026-46678 / GHSA-cqp8-fcvh-x7r3
More information
Details
Summary
When an application using Pydantic AI opts a URL into
force_download='allow-local'(which disables the default block on private/internal IPs), the cloud-metadata blocklist could be bypassed by encoding the metadata IP in an IPv6 transition form (IPv4-mapped IPv6, 6to4, or NAT64). Dual-stack and translated networks route the IPv6 wrapper to the underlying IPv4 endpoint, exposing cloud IAM short-term credentials.This is an incomplete fix of GHSA-2jrp-274c-jhv3 / CVE-2026-25580. The parent advisory's remediation guaranteed that "cloud metadata endpoints are always blocked, even with
allow-local." That guarantee did not hold for IPv6-encoded forms of the metadata IPs.Severity
Same impact metrics as the parent CVE, but materially narrower attack surface (AC:H instead of AC:L), because exploitation requires the application to have opted into
allow-localon a URL influenced by untrusted input.Who Is Affected
Applications are affected only if they explicitly opt for
FileUrl(ImageUrl,AudioUrl,VideoUrl,DocumentUrl) intoforce_download='allow-local'on a URL that is, or could be, influenced by untrusted input.Applications are not affected if they use any of the bundled integrations to ingest user input, because they do not propagate
force_downloadfrom external data:Agent.to_web/clai webVercelAIAdapterAGUIAdapter/Agent.to_ag_uiApplications that only download from developer-controlled URLs are not affected.
Remediation
Upgrade to
1.99.0or later. The cloud-metadata and private-IP blocklists now apply to IPv6 transition forms that route to a blocked IPv4 endpoint (IPv4-mapped IPv6, 6to4, and NAT64 well-known prefix). The blocklists have also been extended to cover additional IANA-reserved IPv4 and IPv6 special-purpose ranges.Workaround for Unpatched Versions
Avoid passing
force_download='allow-local'on any URL that could be influenced by untrusted input. If developers must, resolve the hostname themselves and validate the result against their own metadata blocklist — including IPv6-encoded forms — before constructing theFileUrl.Credits
Reported by j0hndo.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
pydantic/pydantic-ai (pydantic-ai-slim)
v1.99.0: (2026-05-19)Compare Source
What's Changed
🛡️ Security
FileUrlintoforce_download='allow-local'on a URL that is, or could be, influenced by untrusted input.Agent.to_web/clai web;VercelAIAdapter;AGUIAdapter/Agent.to_ag_ui🚀 Features
gemini-3.5-flashmodel by @dsfaccini in #5527🐛 Bug Fixes
Full Changelog: pydantic/pydantic-ai@v1.98.0...v1.99.0
v1.98.0: (2026-05-18)Compare Source
What's Changed
🚀 Features
OpenAIResponsesModel.count_tokens) by @colesmcintosh in #3951Agenttool_retries=/output_retries=withretries: int | AgentRetriesby @Kludex in #5500🐛 Bug Fixes
fastmcp.serverat runtime by @Kymi808 in #5514🆕 V2 Preparation
pydantic_ai.ext.aci(tool_from_aciandACIToolset) by @dsfaccini in #5510New Contributors
Full Changelog: pydantic/pydantic-ai@v1.97.0...v1.98.0
v1.97.0: (2026-05-15)Compare Source
What's Changed
🚀 Features
OnlineEvaluator.run_on_errorsto opt into evaluating failed calls by @dmontagu in #5456GoogleProvider(vertexai=True|False)intoGoogleProvider+GoogleCloudProvider; rename provider IDgoogle-gla:togoogle:,google-vertex:togoogle-cloud:; deprecate old names by @dsfaccini in #5336MCPToolsetthat usesfastmcp-slim[client], deprecateMCPServer*andFastMCPToolsetby @DouweM in #5325ModelResponse.statetoincompletewhile response is still streaming by @adtyavrdhn in #5455pydantic_graph.betaAPI out of beta, deprecate old API by @dmontagu in #5306🆕 V2 Preparation
stream_responses()forstream_response(); new singular yieldsModelResponseinstead of(ModelResponse, is_last)tuple by @dsfaccini in #5296Agent.to_a2a()and bundledfasta2aintegration;fasta2ahas been adopted by DataLayer and users can usefasta2a.pydantic_ai(requiresfasta2av0.6.1) instead by @dsfaccini in #5426New Contributors
Full Changelog: pydantic/pydantic-ai@v1.96.1...v1.97.0
v1.96.1: (2026-05-14)Compare Source
What's Changed
🆕 V2 Preparation (coming in June)
Agentconstructorprepare_tools=,prepare_output_tools=,event_stream_handler=in favor ofPrepareTools,PrepareOutputTools,ProcessEventStreamcapabilities by @dsfaccini in #5335🐛 Bug Fixes
input_fidelitywhenNonein image generation tool by @pydanty[bot] in #5415openai_system_prompt_roleinOpenAIResponsesModelby @navalprakhar in #5430New Contributors
Full Changelog: pydantic/pydantic-ai@v1.96.0...v1.96.1
v1.96.0: (2026-05-13)Compare Source
What's Changed
🆕 V2 Preparation (coming in June)
openai-chat:prefix and warn on bareopenai:which will switch to use the Responses API in v2 by @dsfaccini in #5334Agent(history_processors=)in favor ofcapabilities=[ProcessHistory(...)]by @dsfaccini in #5425result.usage(),result.timestamp(),stream.get()in favor of property-styleresult.usage,result.timestamp,stream.responseby @dsfaccini in #5263AGUIApp,Agent.to_ag_ui(), andpydantic_ai.ag_uishim in favor ofAGUIAdapterby @dsfaccini in #5345OutlinesModelandOutlinesProviderby @DouweM in #5432Full Changelog: pydantic/pydantic-ai@v1.95.1...v1.96.0
v1.95.1: (2026-05-13)Compare Source
What's Changed
🐛 Bug Fixes
current_otel_traceparentimports eager (unbreak agent runs in Temporal workflows) by @DouweM in #5422Agent.instrumentsetter andInstrumentedModelby @DouweM in #5427Full Changelog: pydantic/pydantic-ai@v1.95.0...v1.95.1
v1.95.0: (2026-05-12)Compare Source
What's Changed
🚀 Features
Instrumentationcapability; deprecateAgent(instrument=...)by @DouweM in #4967🆕 V2 Preparation (coming in June)
capabilities=[NativeTool(...)]by @DouweM in #5338local=opt-in for provider-adaptive capability fallback; deprecate auto-fallback by @DouweM in #5331🐛 Bug Fixes
tool-input-(available|error)onFunctionToolCallEventby @sadra-barikbin in #5292📦 Dependencies
mistralas default dependency, exclude compromised 2.4.6 by @dsfaccini in #5393New Contributors
Full Changelog: pydantic/pydantic-ai@v1.94.0...v1.95.0
v1.94.0: (2026-05-12)Compare Source
What's Changed
🚀 Features
openai_chat_supports_multiple_system_messagesprofile flag by @DouweM in #5375📦 Dependencies
mistralaias dependency frompydantic-aiby @Kludex in #5384Full Changelog: pydantic/pydantic-ai@v1.93.0...v1.94.0
v1.93.0: (2026-05-08)Compare Source
What's Changed
🚀 Features
tool_choicesetting by @dsfaccini in #3611OutputToolCallEvent/OutputToolResultEventfor output tool calls; deprecate function-tool events for failing output tool calls by @DouweM in #5320🐛 Bug Fixes
New Contributors
Full Changelog: pydantic/pydantic-ai@v1.92.0...v1.93.0
v1.92.0: (2026-05-07)Compare Source
What's Changed
🚀 Features
output_retriesoverride + deprecateretries+ internal retry-field rename by @dsfaccini in #5075🐛 Bug Fixes
attempted exit cancel scope in different taskby running MCP session in a dedicated task by @dsfaccini in #4514for_runRunContextwithrun_id,conversation_id, andmetadataby @DouweM in #5330CaseLifecycle.teardown()by @voorhs in #5322New Contributors
Full Changelog: pydantic/pydantic-ai@v1.91.0...v1.92.0
v1.91.0: (2026-05-06)Compare Source
What's Changed
🚀 Features
gpt-image-2options by @banteg in #5234deepseek-v4-flashanddeepseek-v4-proby @SuperMarioYL in #5195🐛 Bug Fixes
ModelResponsein OpenAI Chat assistant message mapping by @DouweM in #5300New Contributors
Full Changelog: pydantic/pydantic-ai@v1.90.0...v1.91.0
v1.90.0: (2026-05-04)Compare Source
What's Changed
🚀 Features
OpenAIResponsesModelSettings.openai_conversation_idby @corytomlinson in #5224📦 Dependencies
pydantic/ai-chat-ui1.2.0 by @johnthagen in #5246New Contributors
Full Changelog: pydantic/pydantic-ai@v1.89.1...v1.90.0
v1.89.1: (2026-05-01)Compare Source
What's Changed
🤖 Coding Agent Experience
🐛 Bug Fixes
wrap_validation_errorsonToolManagerfunction-tool methods by @DouweM in #5275anyio.Lockcreation viacached_propertyto bind to running loop by @Kludex in #5265New Contributors
Full Changelog: pydantic/pydantic-ai@v1.89.0...v1.89.1
v1.89.0: (2026-04-30)Compare Source
What's Changed
🚀 Features
conversation_idfor cross-run correlation by @DouweM in #5251builtin_toolstoagent.overrideby @mplemay in #5248🐛 Bug Fixes
Full Changelog: pydantic/pydantic-ai@v1.88.0...v1.89.0
v1.88.0: (2026-04-28)Compare Source
What's Changed
🚀 Features
prepare_toolsto function tools, addprepare_output_toolsby @DouweM in #4859service_tiermodel setting; Anthropic + Gemini API + Vertex Priority PayGo support by @markmcd in #4926fastmode for opus 4.6 by @bohdanhr in #4300phaseon assistant messages by @DouweM in #5229UIAdapter.sanitize_messagesandallowed_file_url_schemesby @DouweM in #5228🐛 Bug Fixes
cache_controlforanthropic_cache_messagesby @Wh1isper in #5227CallToolsNodestream fails by @thejens in #4799Agent(retries=...)to user-provided toolsets by @dsfaccini in #4745New Contributors
Full Changelog: pydantic/pydantic-ai@v1.87.0...v1.88.0
v1.87.0: (2026-04-24)Compare Source
What's Changed
🚀 Features
HandleDeferredToolCallscapability andhandle_deferred_tool_callshook by @DouweM in #5142ProcessEventStreamcapability by @DouweM in #5141Full Changelog: pydantic/pydantic-ai@v1.86.1...v1.87.0
v1.86.1: (2026-04-23)Compare Source
What's Changed
🐛 Bug Fixes
choices=Nonein streamed chunks (#5165) by @adtyavrdhn in #5170container_idas string on reuse; unwrap broken {id: x} shape by @adtyavrdhn in #5168inputon tool-call retries by @DouweM in #5181MCPServer.__aexit__called more times than__aenter__inDynamicToolsetby @anishesg in #5171dictfields with Anthropic strict mode by @rahulmansharamani14 in #4321gen_ai.operation.name=execute_toolon tool-execution spans by @DouweM in #5182New Contributors
Full Changelog: pydantic/pydantic-ai@v1.86.0...v1.86.1
v1.86.0: (2026-04-22)Compare Source
What's Changed
🚀 Features
UIAdapter.manage_system_prompt+ReinjectSystemPromptcapability by @dsfaccini in #4087🐛 Bug Fixes
messageIdby @MukundaKatta in #5156reasoning_contentfrom Gemini 2.5 models by @JulieLiu99 in #5155New Contributors
Full Changelog: pydantic/pydantic-ai@v1.85.1...v1.86.0
v1.85.1: (2026-04-21)Compare Source
What's Changed
🐛 Bug Fixes
inputfrom retry messages by @navalprakhar in #4947dump_messages()by @tijmenhammer in #4831New Contributors
Full Changelog: pydantic/pydantic-ai@v1.85.0...v1.85.1
v1.85.0: (2026-04-21)Compare Source
What's Changed
🚀 Features
Full Changelog: pydantic/pydantic-ai@v1.84.1...v1.85.0
v1.84.1: (2026-04-17)Compare Source
What's Changed
🐛 Bug Fixes
dict-shaped validated args to hooks for single-BaseModeltools by @DouweM in #5137Full Changelog: pydantic/pydantic-ai@v1.84.0...v1.84.1
v1.84.0: (2026-04-16)Compare Source
What's Changed
🔒 Security
FileSearchToolresponse parsing by @DouweM in #5106. This was first released in yesterday's v1.83.0. The pattern was reachable in principle from Gemini streaming responses but could not be triggered via real Gemini output in testing, so we're treating it as a hardening fix rather than a vulnerability.🚀 Features
OpenAICompactionby @DouweM in #5108OllamaModelsubclass and correct Ollama capability flags to fix structured output on Ollama Cloud by @Goldokpa in #4160🐛 Bug Fixes
openai_logprobsfor streamed responses by @iAmir97 in #5091openai_previous_response_idseeds by @DouweM in #5126new_messages()even with currentrun_idby @madanlalit in #4731New Contributors
Full Changelog: pydantic/pydantic-ai@v1.83.0...v1.84.0
v1.83.0: (2026-04-15)Compare Source
🤖 Pydantic AI Harness is now live with Code Mode powered by Monty!
What's Changed
🚀 Features
XSearchToolandFileSearchsupport for xAI by @colesmcintosh in #4165FastMCPToolsetby @Boryotto in #4929New Contributors
Full Changelog: pydantic/pydantic-ai@v1.82.0...v1.83.0
v1.82.0: (2026-04-14)Compare Source
🤖 Pydantic AI Harness is now live with Code Mode powered by Monty!
What's Changed
🐛 Bug Fixes
openai_previous_response_id='auto'by @DouweM in #5086CombinedToolsetandCombinedCapabilityby @DouweM in #5085ToolDefinition.function_signatureby @DouweM in #5087📦 Dependencies
New Contributors
Full Changelog: pydantic/pydantic-ai@v1.81.0...v1.82.0
v1.81.0: (2026-04-13)Compare Source
🤖 Pydantic AI Harness is now live with Code Mode powered by Monty!
What's Changed
🐛 Bug Fixes
run_idfrom cache key computation inPrefectAgentInputsby @adtyavrdhn in #3890JsonSchemaTransformerby @Dharit13 in #4989New Contributors
Full Changelog: pydantic/pydantic-ai@v1.80.0...v1.81.0
v1.80.0: (2026-04-10)Compare Source
What's Changed
🚀 Features
CapabilityOrdering(innermost,outermost,wraps, wrapped_by,requires`) by @DouweM in #5036Hooksordering parameter and instance refs inwraps/wrapped_byby @DouweM in #5048OpenAICompactionandAnthropicCompactioncapabilities by @DouweM in #4943🐛 Bug Fixes
get_wrapper_toolsetiteration for consistency withwrap_hooks by @DouweM in #5036mcpoptional for DBOS module import by @DouweM in #5050Full Changelog: pydantic/pydantic-ai@v1.79.0...v1.80.0
v1.79.0: (2026-04-09)Compare Source
What's Changed
🚀 Features
dump_messagesby @dsfaccini in #3971create_async_http_clientand context manager by @dsfaccini in #4421apply()toAbstractCapability,CombinedCapability, andWrapperCapabilityby @DouweM in #5022🐛 Bug Fixes
$refs in renamed schemadefs, handle missing keywords, and detect semantically different defs by @Ricardo-M-L in #5020run()when capability/hook overrideswrap_run_event_streamby @DouweM in #5028on_node_run_errorandafter_node_runhook recovery by @DouweM in #5023UserErrormessages by @graydeon in #4976New Contributors
Full Changelog: pydantic/pydantic-ai@v1.78.0...v1.79.0
v1.78.0: (2026-04-07)Compare Source
What's Changed
🚀 Features
return_schemaandfunction_signaturetoToolDefinitionby @adtyavrdhn in #4964SetToolMetadatacapability by @DouweM in #4964New Contributors
Full Changelog: pydantic/pydantic-ai@v1.77.0...v1.78.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.