chore(security): bump langchain-core 0.3.45 -> 1.6.1 (9 advisories) - MAJOR, needs review - #11
Conversation
…v.lock Lockfile-only scoped regeneration (uv lock --upgrade-package langchain-core). Clears 6 langchain-core and 3 langsmith advisories on the py>=3.10 resolution leg. MAJOR version bump of the package's primary dependency - needs human review. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CI triage: both red checks are pre-existing and unrelated to this changeCI is red, but neither failure is caused by anything in this PR. Both reproduce with the dependency versions this branch does not touch, and both hit PR #10 and PR #11 identically. Evidence below so a reviewer does not have to re-derive it. 1.
|
Security: langchain-core 0.3.45 -> 1.6.1 — clears 9 advisories, but this is a MAJOR bump
Why this is a hand-authored branch, not a Dependabot PR
Dependabot alerts are not running on this repo.
GET /repos/vectorize-io/integrations-python/dependabot/alertsreturns HTTP 200 with an empty array in every state (open,fixed,dismissed,auto_dismissed) despite a committedlangchain/uv.lock— the repo has never been scanned. There are no alert numbers to close, so the advisories below are identified by GHSA/CVE only. They were found locally with:Change —
langchain/uv.lockonlypyproject.tomlis not modified; its constraint is alreadylangchain-core>=0.3.45, so nothing changes for downstream consumers oflangchain-vectorize. This only moves what CI resolves and tests against.Because
requires-python = ">=3.9", the lock has two resolution legs:Advisories cleared (py3.10-3.13; this is where the CI matrix mostly lives)
langchain-core — all 6:
langsmith — all 3:
After this change the py3.13 leg reports zero findings for langchain-core and langsmith. (11 findings remain in urllib3/requests/orjson/pytest — those are #10's job, not this PR's.)
What to weigh
1. Only 1.x can clear all six. The 0.3.x line tops out at 0.3.86, which still carries GHSA-qh6h-p6c9-ff54 (fix: 1.2.22) and GHSA-2g6r-c272-w58r (fix: 1.2.11) — neither was ever backported. There is no non-major path.
2. 13 new transitive packages. All verified as legitimate upstream projects, not typosquats:
langchain-protocol0.0.19uuid-utilshttpx2,httpcore2,httpx2-jsfetchhttpx2>=2,<3)truststoredistro,websockets,xxhashh11,httpcore,idna,anyioandtyping-extensionsalso move on the py>=3.10 leg, dragged byhttpx2(which requiresidna>=3.18andh11>=0.16). That overlaps #10 — see "Interaction with #10" below.3. The API surface actually used is tiny and stable.
langchain_vectorize/retrievers.pyimports exactly two things from langchain-core:Both are present and unchanged in 1.x, and
mypy --strictpasses against 1.6.1.4. The py3.9 leg is a smaller win and includes one regression. It gets langchain-core 0.3.86 (4 of 6 cleared) and langsmith 0.4.37, which introduces GHSA-v34v-rq6j-cj6p (CVE-2026-25528) — introduced in langsmith 0.4.10, fixed in 0.6.3, and 0.6.3 requires py>=3.10. langchain-core 0.3.86 requires
langsmith>=0.3.45, so langsmith cannot stay at 0.3.15 once langchain-core moves. Net for the py3.9 leg is 23 -> 20 findings; net for py3.10-3.13 is 23 -> 11.Interaction with #10
Both PRs touch
langchain/uv.lock, so whichever merges second needs a rebase and a re-run ofuv lock— a mechanical fix, no decisions involved. They are otherwise independent: #10 covers urllib3/requests/idna/orjson/h11/pytest and does not touch langchain-core; this PR does not touch pytest/urllib3/requests/orjson. Merging #10 first is the lower-risk order.Verification (both ends of the CI matrix)
Commands derived from
.github/workflows/python_test.ymlandlint.yml, run underlangchain/:uv sync --devuv run ruff format --checkuv run ruff checkuv run mypy .uv run pytest tests(collection)uv run pytest tests(execution)tests/test_retrievers.pyis a live integration suite; its session fixture raisesValueError: Please set the VECTORIZE_TOKEN environment variablewithout repository secrets. This fails identically on unmodifiedmain— environmental, not a regression. Real execution comes from this PR's own CI run, which is the whole reason for a hand-authored branch (Dependabot branches do not receive secrets). Given this is a major bump, the CI result here is the load-bearing signal — please do not merge until the integration tests are green.Opened by the daily security sweep. Not to be merged automatically - please review.