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.
|
|
Superseded by #13. This branch predates #10, which merged today. Its lockfile therefore carries the pre-#10 state, and merging it would have rolled back three of that PR's fixes:
h11 is unaffected — both landed on 0.16.0 — so the critical from #10 would have survived, but the other three would have silently gone backwards. A lockfile cannot be rebased by replaying commits, so #13 regenerates it with #13 also carries the verification this one could not get from CI: the repo's only two tests require live API access and fail at setup, so the v0 → v1 major was checked directly against the integration's imports, the BaseRetriever MRO and the Closing this in favour of #13 — nothing was wrong with the change, it was simply overtaken. |
# Conflicts: # langchain/uv.lock
|
Reopened and updated rather than replaced.
I merged
No regressions. On verificationThe two tests here cannot exercise this. They create a real source connector against I first opened this as #13 under my own account, which was a mistake — it made the PR unapprovable by me and needed a third person. Updating your branch instead keeps the review model intact. #13 is closed. |
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.