{"schema":"threatline.record/2","record":{"id":"CVE-2026-114386","aliases":["GHSA-3589-pxp7-3gj8"],"summary":"Pydantic AI Harness tool-call limit bypass in nested CodeMode calls","details":"Pydantic AI Harness before 0.59.0 fails to enforce UsageLimits.tool_calls_limit on nested tool calls dispatched from run_code in the CodeMode toolset. Users or prompt-injected content can make the sandboxed program invoke tools via run_nested_call() without check_before_tool_call, exceeding operator limits on costly or side-effecting tools.","categories":["Libraries & packages"],"product":"pydantic-ai-harness","vendor":"pydantic","ecosystem":"pip","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-3589-pxp7-3gj8","source_modified_at":"2026-10-23T20:55:51Z","fetched_at":"2026-10-23T21:10:45.942435Z","package":{"ecosystem":"pip","name":"pydantic-ai-harness"},"range":"< 0.59.0"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-114386","source_modified_at":"2026-10-21T19:55:49.371Z","fetched_at":"2026-10-23T18:42:43.628194Z","product":"pydantic-ai-harness","vendor":"pydantic","versions":[{"lessThan":"0.59.0","status":"affected","version":"0","versionType":"semver"}],"defaultStatus":"unaffected"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-3589-pxp7-3gj8","source_modified_at":"2026-10-23T21:00:05.311948379Z","fetched_at":"2026-10-23T21:10:45.942435Z","package":{"name":"pydantic-ai-harness","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-harness"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.59.0"}]}],"versions":["0.1.1","0.1.2","0.10.0","0.11.0","0.12.0","0.13.0","0.14.0","0.15.0","0.16.0","0.17.0","0.18.0","0.18.1","0.2.0","0.2.1","0.20.0","0.21.0","0.22.0","0.23.0","0.24.0","0.25.0","0.26.0","0.27.0","0.28.0","0.28.1","0.29.0","0.29.1","0.3.0","0.30.0","0.31.0","0.32.0","0.33.0","0.34.0","0.35.0","0.36.0","0.4.0","0.5.0","0.52.0","0.53.0","0.54.0","0.55.0","0.56.0","0.57.0","0.58.0","0.6.0","0.7.0","0.7.1","0.8.0","0.9.0"]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-3589-pxp7-3gj8","source_modified_at":"2026-10-23T20:55:51Z","fetched_at":"2026-10-23T21:10:45.942435Z","package":{"ecosystem":"pip","name":"pydantic-ai-harness"},"version":"0.59.0"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-114386","source_modified_at":"2026-10-21T19:55:49.371Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"name":"pydantic-ai-harness","ecosystem":null},"version":"0.59.0","basis":"first unaffected version stated in the CVE record"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-3589-pxp7-3gj8","source_modified_at":"2026-10-23T21:00:05.311948379Z","fetched_at":"2026-10-23T21:10:45.942435Z","package":{"name":"pydantic-ai-harness","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-harness"},"version":"0.59.0"}],"cvss":6.3,"severity":"Medium","kev":{"listed":false},"epss":{"probability":0.00346,"percentile":0.26944,"score_date":"2026-10-23"},"published_at":"2026-10-21T12:39:43.886Z","modified_at":"2026-10-23T21:00:05.311948379Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-3589-pxp7-3gj8","fetched_at":"2026-10-23T21:10:45.942435Z","source_modified_at":"2026-10-23T20:55:51Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-114386","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-21T19:55:49.371Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-3589-pxp7-3gj8","fetched_at":"2026-10-23T21:10:45.942435Z","source_modified_at":"2026-10-23T21:00:05.311948379Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114386","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114386","source":"GitHub Advisory Database"},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/10362","tags":["issue-tracking","patch"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/eb27b2b89fe76ae23ee9b6fc9eb4b227a4967949","tags":["patch"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/blob/v2.58.0/src/pydantic_ai_harness/pydantic_ai_harness/code_mode/_toolset.py#L642-L680","tags":["technical-description"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v2.59.0","tags":["release-notes"]},{"url":"https://pypi.org/project/pydantic-ai-harness/0.59.0","source":"GitHub Advisory Database"},{"source":"CVE List","url":"https://www.vulncheck.com/advisories/pydantic-ai-harness-before-0.59.0-codemode-tool-call-limit-bypass-via-run-code","tags":["third-party-advisory"]},{"url":"https://github.com/advisories/GHSA-3589-pxp7-3gj8","source":"GitHub Advisory Database"},{"source":"CVE List","url":"https://pypi.org/project/pydantic-ai-harness/0.59.0/","tags":["product"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"partial","assessed_at":"2026-10-21T19:55:43.280737Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-23T21:00:05.311948379Z","content_hash":"88df19fe48132ba633a6549bd5a5ef787566944d1df8535b4f2b43468d2122a7"}}
