Every CVE Search/ Get API key

CVE-2026-107295

`pydantic-ai-slim` web UI `/api/chat` accepts browser-simple cross-origin requests that can trigger agent tool execution

7.6 HighFix available

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Required

What an attacker can affect

Confidentiality
Low
Integrity
High
Availability
Low

Exploit likelihood

0.16%Unchanged since Oct 9, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.6

`pydantic-ai-slim` web UI `/api/chat` accepts browser-simple cross-origin requests that can trigger agent tool execution

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.

Record
CVE-2026-107295
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Weakness
CWE-352
Updated
2026-11-02
EUVDEUVD-2026-95106 7.6

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.

Record
EUVD-2026-95106
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Updated
2026-11-02
GitHub AdvisoriesGHSA-h4xc-3qfq-jf93 7.6

Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint

Summary

The Pydantic AI development web chat UI (Agent.to_web(), clai web) did not check the content type of requests to its chat endpoint. This allowed a website visited by a developer to submit a request to a chat UI running on that developer's machine, causing the served agent to run and to execute its tools with the privileges and credentials of the local process.

Binding the web UI to localhost — the default — does not prevent this, because a page open in the developer's browser can reach the loopback address.

Impact

Applications and developers serving an agent through Agent.to_web() or clai web. The consequences depend on the tools the served agent exposes, and can include data disclosure as well as unwanted tool side effects. Tools marked requires_approval=True were not protected either, because the endpoint trusts approval decisions relayed by the client.

Mitigation

Upgrade to a patched version. The chat endpoint now requires Content-Type: application/json and rejects other requests before the request body is parsed and before the agent runs. The bundled chat UI already sends this header; scripts and other non-browser clients that call the endpoint directly may need to be updated to send it.

If you cannot upgrade, don't run the web UI while browsing untrusted sites, stop it when you aren't using it, and don't serve an agent with side-effecting tools through it.

Credits

  • Thai Son Dinh from VinSOC Labs (R&D)
Record
GHSA-h4xc-3qfq-jf93
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Weakness
CWE-346, CWE-352
Updated
2026-11-02
NVD 7.6

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.

Record
CVE-2026-107295
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Weakness
CWE-352
Updated
2026-11-02
OSV 7.6

`pydantic-ai-slim` web UI `/api/chat` accepts browser-simple cross-origin requests that can trigger agent tool execution

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.

Record
CVE-2026-107295
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Weakness
CWE-352
Updated
2026-11-02
OSVGHSA-h4xc-3qfq-jf93 7.6

Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint

Summary

The Pydantic AI development web chat UI (Agent.to_web(), clai web) did not check the content type of requests to its chat endpoint. This allowed a website visited by a developer to submit a request to a chat UI running on that developer's machine, causing the served agent to run and to execute its tools with the privileges and credentials of the local process.

Binding the web UI to localhost — the default — does not prevent this, because a page open in the developer's browser can reach the loopback address.

Impact

Applications and developers serving an agent through Agent.to_web() or clai web. The consequences depend on the tools the served agent exposes, and can include data disclosure as well as unwanted tool side effects. Tools marked requires_approval=True were not protected either, because the endpoint trusts approval decisions relayed by the client.

Mitigation

Upgrade to a patched version. The chat endpoint now requires Content-Type: application/json and rejects other requests before the request body is parsed and before the agent runs. The bundled chat UI already sends this header; scripts and other non-browser clients that call the endpoint directly may need to be updated to send it.

If you cannot upgrade, don't run the web UI while browsing untrusted sites, stop it when you aren't using it, and don't serve an agent with side-effecting tools through it.

Credits

  • Thai Son Dinh from VinSOC Labs (R&D)
Record
GHSA-h4xc-3qfq-jf93
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Weakness
CWE-346, CWE-352
Updated
2026-11-02
OSVPYSEC-2026-4278 7.6

Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint

Summary

The Pydantic AI development web chat UI (Agent.to_web(), clai web) did not check the content type of requests to its chat endpoint. This allowed a website visited by a developer to submit a request to a chat UI running on that developer's machine, causing the served agent to run and to execute its tools with the privileges and credentials of the local process.

Binding the web UI to localhost — the default — does not prevent this, because a page open in the developer's browser can reach the loopback address.

Impact

Applications and developers serving an agent through Agent.to_web() or clai web. The consequences depend on the tools the served agent exposes, and can include data disclosure as well as unwanted tool side effects. Tools marked requires_approval=True were not protected either, because the endpoint trusts approval decisions relayed by the client.

Mitigation

Upgrade to a patched version. The chat endpoint now requires Content-Type: application/json and rejects other requests before the request body is parsed and before the agent runs. The bundled chat UI already sends this header; scripts and other non-browser clients that call the endpoint directly may need to be updated to send it.

If you cannot upgrade, don't run the web UI while browsing untrusted sites, stop it when you aren't using it, and don't serve an agent with side-effecting tools through it.

Credits

  • Thai Son Dinh from VinSOC Labs (R&D)
Record
PYSEC-2026-4278
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Updated
2026-11-02
OSVPYSEC-2026-4287 7.6

Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint

Summary

The Pydantic AI development web chat UI (Agent.to_web(), clai web) did not check the content type of requests to its chat endpoint. This allowed a website visited by a developer to submit a request to a chat UI running on that developer's machine, causing the served agent to run and to execute its tools with the privileges and credentials of the local process.

Binding the web UI to localhost — the default — does not prevent this, because a page open in the developer's browser can reach the loopback address.

Impact

Applications and developers serving an agent through Agent.to_web() or clai web. The consequences depend on the tools the served agent exposes, and can include data disclosure as well as unwanted tool side effects. Tools marked requires_approval=True were not protected either, because the endpoint trusts approval decisions relayed by the client.

Mitigation

Upgrade to a patched version. The chat endpoint now requires Content-Type: application/json and rejects other requests before the request body is parsed and before the agent runs. The bundled chat UI already sends this header; scripts and other non-browser clients that call the endpoint directly may need to be updated to send it.

If you cannot upgrade, don't run the web UI while browsing untrusted sites, stop it when you aren't using it, and don't serve an agent with side-effecting tools through it.

Credits

  • Thai Son Dinh from VinSOC Labs (R&D)
Record
PYSEC-2026-4287
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
pydantic-ai
PyPI
1.34.0 up to 1.107.4
1.107.4
pydantic-ai
PyPI
2.0.0b1 up to 2.28.0
2.28.0
pydantic-ai-slim
PyPI
1.34.0 up to 1.107.4
1.107.4
pydantic-ai-slim
PyPI
2.0.0b1 up to 2.28.0
2.28.0
pydantic-ai
PyPI
1.34.0 up to 1.107.4, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.107.21.35.01.36.01.37.01.38.01.39.01.39.11.40.01.41.01.42.01.43.01.44.01.46.01.47.01.48.01.49.01.50.01.51.01.52.01.53.01.54.01.55.01.56.01.57.01.58.01.59.01.60.01.61.01.62.01.63.01.64.01.65.01.66.01.67.01.68.01.69.01.70.01.71.01.72.01.73.01.74.0
1.107.4
pydantic-ai
PyPI
2.0.0b1 up to 2.28.0, plus listed versions
2.0.02.0.0b22.0.0b32.0.0b42.0.0b5
Show 33 moreShow less
2.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.02.14.12.15.02.16.02.17.02.18.02.19.02.2.02.20.02.21.02.22.02.23.02.24.02.25.02.26.02.27.02.27.12.3.02.4.02.5.02.5.12.6.02.7.02.8.02.9.02.9.1
2.28.0
pydantic-ai-slim
PyPI
1.34.0 up to 1.107.4, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.107.21.35.01.36.01.37.01.38.01.39.01.39.11.40.01.41.01.42.01.43.01.44.01.46.01.47.01.48.01.49.01.50.01.51.01.52.01.53.01.54.01.55.01.56.01.57.01.58.01.59.01.60.01.61.01.62.01.63.01.64.01.65.01.66.01.67.01.68.01.69.01.70.01.71.01.72.01.73.01.74.0
1.107.4
pydantic-ai-slim
PyPI
2.0.0b1 up to 2.28.0, plus listed versions
2.0.02.0.0b22.0.0b32.0.0b42.0.0b5
Show 33 moreShow less
2.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.02.14.12.15.02.16.02.17.02.18.02.19.02.2.02.20.02.21.02.22.02.23.02.24.02.25.02.26.02.27.02.27.12.3.02.4.02.5.02.5.12.6.02.7.02.8.02.9.02.9.1
2.28.0
pydantic-ai
PyPI
1.34.0 up to 1.107.4, 2.0.0b1 up to 2.28.0, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.107.21.35.01.36.01.37.01.38.01.39.01.39.11.40.01.41.01.42.01.43.01.44.01.46.01.47.01.48.01.49.01.50.01.51.01.52.01.53.01.54.01.55.01.56.01.57.01.58.01.59.01.60.01.61.01.62.01.63.01.64.01.65.01.66.01.67.01.68.01.69.01.70.01.71.01.72.01.73.01.74.0
1.107.42.28.0
pydantic-ai-slim
PyPI
1.34.0 up to 1.107.4, 2.0.0b1 up to 2.28.0, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.107.21.35.01.36.01.37.01.38.01.39.01.39.11.40.01.41.01.42.01.43.01.44.01.46.01.47.01.48.01.49.01.50.01.51.01.52.01.53.01.54.01.55.01.56.01.57.01.58.01.59.01.60.01.61.01.62.01.63.01.64.01.65.01.66.01.67.01.68.01.69.01.70.01.71.01.72.01.73.01.74.0
1.107.42.28.0

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-107295 is a high vulnerability (CVSS 7.6) in Pydantic Pydantic-ai, published October 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.16%, the 4th percentile. Fixed in pydantic-ai 1.107.4.

References

Show 7 moreShow less
This page doesn't list everything

Left out here: 200 versions. The JSON record has them.

MoveEnter Open