Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAccess telemetry backend (third-party/shared observability)
-
ExploitAgent produces non-tool retry prompt on validation failure
-
ExecutionRetry feedback exported unredacted despite include_content=False
-
ImpactRead 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.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.
Blast Radius
ecosystem impact- 2 pypi packages depend on pydantic-ai (2 direct, 0 indirect)
- 5 pypi packages depend on pydantic-ai-slim (3 direct, 2 indirect)
Ecosystem-wide dependent count for version 0.3.4 and other introduced versions.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Pydantic Ai
View allPydantic AI versions 0.0.26 through 1.55.x contain a server-side request forgery vulnerability in URL download functiona
Cross-site request forgery in Pydantic AI's development web chat UI allows any website a developer happens to visit whil
Concurrency slot exhaustion in Pydantic AI 2.10.0 through 2.52.x lets streamed model requests permanently occupy slots i
Server-Side Request Forgery in Pydantic AI (versions 1.56.0-1.101.0, 2.0.0b1, 2.0.0b2) allows unauthenticated network at
Server-side request forgery in Pydantic AI's URL-fetching guards lets an application that has explicitly opted a URL int
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
Pydantic AI, a Python framework for building Generative AI agents, buffers complete HTTP response bodies before applying
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
Denial of service in Pydantic AI's local web_fetch_tool and WebFetch local fallback allows an attacker-controlled HTML p
Tool call injection in Pydantic AI's UI adapters (AG-UI via Agent.to_ag_ui()/AGUIAdapter, and Vercel AI via VercelAIAdap
DNS rebinding against the Pydantic AI development web chat server (Agent.to_web() and `clai web`) lets a hostile website
Pydantic AI versions 1.34.0 through 1.50.x contain a path traversal vulnerability in the web UI that allows unauthentica
EUVD-2026-95102
GHSA-3gh4-cghq-f8v4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB