Skip to main content

Pydantic AI CVE-2026-107293

| EUVDEUVD-2026-95102 LOW
Improper Removal of Sensitive Information Before Storage or Transfer (CWE-212)
2026-10-08 GitHub_M GHSA-3gh4-cghq-f8v4
2.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Access telemetry backend (third-party/shared observability)
  2. Exploit
    Agent produces non-tool retry prompt on validation failure
  3. Execution
    Retry feedback exported unredacted despite include_content=False
  4. Impact
    Read disclosed validation content and quoted invalid model values

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V14 - Data Protection Data removal before release
Exploitation Conditions

Exploitation requires a specific, non-default combination: (1) OpenTelemetry instrumentation enabled with InstrumentationSettings(include_content=False); (2) the agent must use a structured output mode that does NOT rely on tool calls (NativeOutput or PromptedOutput) or output validators applied to text output, so that retry prompts are generated outside of tool calls; and (3) the model must actually produce output that fails validation, triggering a retry prompt whose feedback quotes the invalid values. Disclosure is further limited to parties who can read the exported telemetry backend - it is not reachable by an external attacker against the agent. Deployments that do not set include_content=False, or whose retries all originate from tool calls (including the default tool-based structured output mode), are NOT affected, as those paths were redacted correctly.

Impact

This is a genuinely low-priority issue, and all available signals agree. The vendor-supplied CVSS 4.0 score is 2.3 (Low) with a vector (AV:N/AC:L/AT:P/PR:L/VC:L, all integrity/availability impacts None) indicating a limited confidentiality-only leak gated by an attack requirement (AT:P). No EPSS score was provided, there is no CISA KEV listing, and no public exploit code was identified - consistent with a bug that has no real adversarial exploitation vector. Critically, the GHSA advisory states this 'does not grant an attacker any new access to the agent or its data'; the exposure is purely an information-handling defect (CWE-212) where sensitive retry-prompt content leaks into telemetry despite include_content=False. The only 'attacker' is someone already able to read the telemetry backend. The limited impact is amplified only in a specific, self-inflicted scenario: traces exported to a broader or less-trusted audience (third-party observability vendor or shared backend). There are no conflicting signals here - the low CVSS, absence of KEV/POC, and the vendor's own impact framing all point the same direction. The main caveat is that EPSS data is absent and POC status is simply unknown rather than confirmed negative, but neither would meaningfully raise priority for a privacy-regression of this nature.

Exploit ScenarioDerived

An operator runs a Pydantic AI agent with InstrumentationSettings(include_content=False), expecting message content to be withheld from telemetry, and uses NativeOutput/PromptedOutput or an output validator on text output. When the model returns output that fails validation, Pydantic AI emits a retry prompt whose validation feedback quotes the model's invalid values; this feedback is recorded in full on the request span (gen_ai.input.messages / pydantic_ai.all_messages). Anyone with read access to the observability backend - e.g. a third-party monitoring vendor - can then see content the operator believed was redacted. No public exploit code was identified; exploitation requires no attacker action against the agent itself.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 08, 2026

Pydantic AI's OpenTelemetry instrumentation fails to redact validation-retry prompt content from exported telemetry, so agents configured with InstrumentationSettings(include_content=False) can still leak model-generated invalid values into span attributes such as gen_ai.input.messages and pydantic_ai.all_messages. Only deployments using structured output modes that skip tool calls (NativeOutput or PromptedOutput) or output validators on text output are exposed on this specific code path; tool-call retries and installations that never set include_content=False are unaffected. Disclosure is limited to parties able to read the telemetry backend, and no public exploit code or confirmed active exploitation has been reported; assessed CVSS is low (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N, CVSS 4.0 base 2.3).

RemediationAI

Vendor-released patch: upgrade pydantic-ai (and pydantic-ai-slim) to 1.107.4 or 2.27.1, the versions in which the retry prompt content is correctly suppressed when include_content is False; release notes are at https://github.com/pydantic/pydantic-ai/releases/tag/v2.27.1 and the fix is the upstream pull request https://github.com/pydantic/pydantic-ai/pull/7357 (commit fe9dbed7b7ccf7e7128b5786886e4441f6f5594f). If upgrading is not immediately possible, note that simply turning include_content back on removes the redaction entirely and exports every prompt, completion and tool payload, which is a worse outcome than the leak itself, so it is not a recommended workaround. Better compensating controls are to restrict who and what can read the telemetry backend - enforce authentication and network-level access control on the collector, avoid routing these traces to third-party or broadly shared observability backends, and apply redaction or attribute-dropping filters at the collector for gen_ai.input.messages and pydantic_ai.all_messages; the trade-off is that these filters also remove legitimately useful message context from traces. Alternatively, temporarily avoid NativeOutput and PromptedOutput in favor of the default tool-based structured output mode and move output validation away from text output, since those paths were already redacted correctly, at the cost of changing agent output behavior and reducing validation coverage.

Affected VersionsENISA

pydantic-ai-slim 2.0.0b1, < 2.27.1
pydantic-ai 2.0.0b1, < 2.27.1
pydantic-ai 0.3.4, < 1.107.4
pydantic-ai-slim 0.3.4, < 1.107.4

Affected Packages

pypi pydantic-ai fix: 1.107.4, 2.27.1
pypi pydantic-ai-slim fix: 1.107.4, 2.27.1
euvd pydantic_ai_2_0_0b1 fix: 2.27.1
euvd pydantic_ai_slim_2_0_0b1 fix: 2.27.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Pydantic AI is a Python agent framework for building Generative AI applications, distributed as the pydantic-ai and pydantic-ai-slim packages. Its OpenTelemetry integration emits model request spans and attaches message content as span attributes (gen_ai.input.messages and pydantic_ai.all_messages). The InstrumentationSettings(include_content=False) switch exists precisely so operators can export traces to third-party or shared observability backends without shipping user prompts, completions, tool arguments or tool responses. The flaw is CWE-212 (Improper Removal of Sensitive Information Before Storage or Transfer): in the otel_message_parts serialization path for RetryPromptPart objects that have no associated tool call, retry feedback was emitted as a plain TextPart with its full content, bypassing the include_content check that every other message part honors. Retry prompts are generated when the model's output fails schema validation or an output validator raises ModelRetry, and the resulting feedback text can quote the invalid values produced by the model. In the vulnerable code the non-tool branch returned [_otel_messages.TextPart(type='text', content=self.model_response())], while tool-call retries were serialized as tool_call_response parts and redacted correctly. The upstream fix wraps the content assignment in a conditional so the text part is emitted without content when include_content is False, matching the behavior of all other message parts. Affected artifacts are pydantic-ai and pydantic-ai-slim, version ranges >= 0.3.4, < 1.107.4 and >= 2.0.0b1, < 2.27.1, corresponding to the CPE entries cpe:2.3:a:pydantic:pydantic-ai and cpe:2.3:a:pydantic:pydantic-ai-slim.

Know when Pydantic Ai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.1 LOW

AC:H and PR:L because disclosure requires the specific non-tool retry path plus read access to the telemetry backend; C:L only (retry feedback), with no integrity or availability impact.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 08, 2026 - 18:03 EUVD

DescriptionCVE.org

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 0.3.4 until 1.107.4 and 2.27.1, OpenTelemetry instrumentation configured with InstrumentationSettings(include_content=False) can export retry prompts outside tool calls in gen_ai.input.messages and pydantic_ai.all_messages. Agents using NativeOutput, PromptedOutput, or output validators on text output can therefore disclose validation feedback, including invalid model values quoted by that feedback, to readers of the telemetry backend. Tool-call retries and deployments that do not use include_content=False are not affected by this specific path. This issue is fixed in versions 1.107.4 and 2.27.1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
popular but specialized Python AI agent framework, growing adoption
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-25580 HIGH POC
8.6 Feb 06

Pydantic AI versions 0.0.26 through 1.55.x contain a server-side request forgery vulnerability in URL download functiona

CVE-2026-107295 HIGH
7.6 Oct 08

Cross-site request forgery in Pydantic AI's development web chat UI allows any website a developer happens to visit whil

CVE-2026-107286 HIGH
7.5 Oct 08

Concurrency slot exhaustion in Pydantic AI 2.10.0 through 2.52.x lets streamed model requests permanently occupy slots i

CVE-2026-48782 MEDIUM
6.8 Jun 16

Server-Side Request Forgery in Pydantic AI (versions 1.56.0-1.101.0, 2.0.0b1, 2.0.0b2) allows unauthenticated network at

CVE-2026-107289 MEDIUM
6.8 Oct 08

Server-side request forgery in Pydantic AI's URL-fetching guards lets an application that has explicitly opted a URL int

CVE-2026-54249 MEDIUM POC
6.8 Jul 29

Server-Side Request Forgery in Pydantic AI's UI adapter layer (versions 1.65.0-1.105.0 and 2.0.0b1-2.0.0b5) allows unaut

CVE-2026-107294 MEDIUM
6.5 Oct 08

Pydantic AI, a Python framework for building Generative AI agents, buffers complete HTTP response bodies before applying

CVE-2026-107290 MEDIUM
6.5 Oct 08

Denial of service in Pydantic AI (pydantic-ai and pydantic-ai-slim) versions 1.77.0 through 1.107.5 and 2.0.0b1 through

CVE-2026-107287 MEDIUM
6.5 Oct 08

Denial of service in Pydantic AI's local web_fetch_tool and WebFetch local fallback allows an attacker-controlled HTML p

CVE-2026-65975 MEDIUM
6.5 Jul 29

Tool call injection in Pydantic AI's UI adapters (AG-UI via Agent.to_ag_ui()/AGUIAdapter, and Vercel AI via VercelAIAdap

CVE-2026-107292 MEDIUM
6.4 Oct 08

DNS rebinding against the Pydantic AI development web chat server (Agent.to_web() and `clai web`) lets a hostile website

CVE-2026-25640 MEDIUM
5.4 Feb 06

Pydantic AI versions 1.34.0 through 1.50.x contain a path traversal vulnerability in the web UI that allows unauthentica

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy