Repository navigation
Security: full accounting of the 455 open Dependabot alerts (175 stale, 263 fixed in open PRs, 17 genuinely left) #656
Description
The security tab shows a number that reads as an emergency and is not one. This is the full accounting, measured today against origin/main, so the remaining work can be sized honestly.
Where the 455 open alerts actually are
| bucket | count |
|---|---|
| Alerts on manifests that no longer exist on main | 175 |
| Alerts closed by four open, green PRs | 263 |
| Alerts genuinely still open with no fix in flight | 17 |
| total | 455 |
The 175 stale alerts
The monorepo restructure moved or deleted every one of these manifests. Dependabot has not re-scanned since, so it is still reporting against files that are not on main. None of them is fixable by any code change, because there is no file to change.
| manifest (deleted from main) | alerts |
|---|---|
langwatch_nlp/uv.lock |
71 |
python-sdk/uv.lock |
55 |
langevals/uv.lock |
41 |
mcp-server/uv.lock |
7 |
langevals/evaluators/ragas/pyproject.toml |
1 |
Verified with git cat-file -e origin/main:<path> for each. #366 already tracks the langwatch_nlp subset, which has grown from 34 to 71 since it was filed.
These need a bulk dismissal as fix_started or no_bandwidth, or a Dependabot re-scan that notices the manifests are gone. Both need someone with dismissal rights on the security tab. I do not have authorisation to dismiss alerts, so this is the one bucket I cannot move at all, and it is 38% of the total.
The 263 covered by open PRs
| PR | repo | alerts closed |
|---|---|---|
| langwatch/langwatch#6569 | langwatch | 47 |
| langwatch/langwatch#6777 | langwatch | 68 |
| langwatch/scenario#873 | scenario | 110 |
| langwatch/scenario#857 | scenario | 38 |
All four are green and mergeable and are waiting on human review. Together they close the entire scenario inbox (148 of 148) and 115 of langwatch's 132 live alerts. Merging them is what takes the headline number from 455 to 192, and dismissing the stale 175 takes it to 17.
The 17 that genuinely remain
Nine have no published fix in any version, so there is nothing to upgrade into:
@ai-sdk/provider-utils(#1879, Drawers: add 80% transparency and 25px blur to backdrop langwatch#1963, Suites: move footer row info to table header for clarity langwatch#1981, chore(deps-dev): bump langchain from 0.3.34 to 0.3.37 in /typescript-sdk in the npm_and_yarn group across 1 directory langwatch#2003)image-size(#2092, chore(deps-dev): bump @langwatch/scenario from 0.4.4 to 0.4.5 in /mcp-server langwatch#2093)diskcache(#1917, FEAT: Fetch org role during permission resolution langwatch#2011)ragas(#2018)
The other eight are each blocked behind a migration that is already tracked:
- five on the langchain 1.x line in
services/langevals(#2012, FEAT: Backend RBAC restriction for lite members langwatch#2021, feat(rbac): fetch org role during permission resolution langwatch#2016, fix: copy worktree hook to .git/hooks/ instead of core.hooksPath langwatch#2010, fix: use composite key in EvaluationGroupList to ensure uniqueness langwatch#2017), blocked because ragas 0.4.3 imports a module langchain-community removed. Tracked in fix(deps): bump langchain-core to fix unsafe deserialization via load() allowlists langwatch#3922. Re-verified today: ragas has published nothing since 0.4.3 on 2026-01-13. - two on
@langchain/community(#1874, fix(event-sourcing): increase global concurrency langwatch#1877), which need a CopilotKit upgrade rather than an override. Tracked in langwatch/langwatch#7153. - one on
@opentelemetry/core(#1880), blocked by the otlp-transformer pin. Tracked in Security: @opentelemetry/core <2.8.0 alerts cannot close while otlp-transformer is pinned to 0.55.0 (needs a decision) #404.
By severity the 17 are 3 high, 7 moderate, 7 low. There is no critical, and there has not been one in the live set since the vitest and deepmerge-ts fixes went into langwatch/langwatch#6569.
22 Dependabot PRs are stranded on deleted directories
Separately, these open Dependabot PRs target directories that no longer exist, so every one of them is permanently conflicting and can never be merged:
- chore(deps): bump zustand from 4.5.7 to 5.0.14 in /langwatch langwatch#6238 chore(deps): bump zustand from 4.5.7 to 5.0.14 in /langwatch
- chore(deps): bump prisma from 5.7.1 to 7.9.0 in /langwatch langwatch#6237 chore(deps): bump prisma from 5.7.1 to 7.9.0 in /langwatch
- chore(deps): bump stripe from 15.12.0 to 22.3.2 in /langwatch langwatch#6236 chore(deps): bump stripe from 15.12.0 to 22.3.2 in /langwatch
- chore(deps): bump @slack/webhook from 7.1.0 to 8.0.0 in /langwatch langwatch#6235 chore(deps): bump @slack/webhook from 7.1.0 to 8.0.0 in /langwatch
- chore(deps): bump the opentelemetry group across 1 directory with 4 updates langwatch#6231 chore(deps): bump the opentelemetry group across 1 directory with 4 updates
- chore(deps): bump setuptools from 80.9.0 to 83.0.0 in /python-sdk langwatch#6061 chore(deps): bump setuptools from 80.9.0 to 83.0.0 in /python-sdk
- chore(deps): bump @hono/node-server from 2.0.6 to 2.0.10 in /langwatch langwatch#6033 chore(deps): bump @hono/node-server from 2.0.6 to 2.0.10 in /langwatch
- chore(deps): bump @opentelemetry/core from 2.9.0 to 2.10.0 in /langwatch langwatch#6032 chore(deps): bump @opentelemetry/core from 2.9.0 to 2.10.0 in /langwatch
- chore(deps-dev): bump the anthropic group across 2 directories with 1 update langwatch#6031 chore(deps-dev): bump the anthropic group across 2 directories with 1 update
- chore(deps): bump the posthog group across 1 directory with 2 updates langwatch#5962 chore(deps): bump the posthog group across 1 directory with 2 updates
- chore(deps-dev): bump the types group across 3 directories with 1 update langwatch#5960 chore(deps-dev): bump the types group across 3 directories with 1 update
- chore(deps-dev): bump the typescript-native-preview group across 3 directories with 1 update langwatch#5959 chore(deps-dev): bump the typescript-native-preview group across 3 directories with 1 update
- chore(deps): bump the copilotkit group across 1 directory with 5 updates langwatch#5957 chore(deps): bump the copilotkit group across 1 directory with 5 updates
- chore(deps): bump the aws-sdk group across 1 directory with 6 updates langwatch#5953 chore(deps): bump the aws-sdk group across 1 directory with 6 updates
- chore(deps): bump the langchain group across 1 directory with 2 updates langwatch#5952 chore(deps): bump the langchain group across 1 directory with 2 updates
- chore(deps): bump torch from 2.12.1 to 2.13.0 in /python-sdk langwatch#5903 chore(deps): bump torch from 2.12.1 to 2.13.0 in /python-sdk
- chore(deps-dev): bump the ai-sdk group across 1 directory with 2 updates langwatch#5860 chore(deps-dev): bump the ai-sdk group across 1 directory with 2 updates
- chore(deps): bump the uv group across 1 directory with 3 updates langwatch#5785 chore(deps): bump the uv group across 1 directory with 3 updates
- chore(deps): update langchain-core requirement from <2.0.0,>=0.3.0 to >=1.4.9,<2.0.0 in /mcp-server langwatch#5694 chore(deps): update langchain-core requirement from <2.0.0,>=0.3.0 to >=1.4.9,<2.0.0 in /mcp-server
- chore(deps-dev): update nltk requirement from >=3.9.4 to >=3.10.0 in /mcp-server langwatch#5692 chore(deps-dev): update nltk requirement from >=3.9.4 to >=3.10.0 in /mcp-server
- chore(deps): bump the uv group across 1 directory with 4 updates langwatch#5253 chore(deps): bump the uv group across 1 directory with 4 updates
- chore(deps): bump the uv group across 1 directory with 5 updates langwatch#5248 chore(deps): bump the uv group across 1 directory with 5 updates
I have commented @dependabot rebase on all 22, which makes Dependabot re-evaluate each against current main. Where the target directory is genuinely gone it retires the PR itself, which is the outcome we want and is Dependabot's own call rather than mine. Expect a burst of bot activity on that list. Anything that survives the rebase had a live path after all and is worth a look.
What would actually help
- Merge the four PRs above. That is 263 alerts and needs only review time.
- Bulk-dismiss or re-scan the 175 stale ones. That is 38% of the number and needs dismissal rights.
- Retire the 22 stranded PRs.
After those three, the security tab reads 17, nine of which have no fix published anywhere. That is a normal, defensible backlog.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsBacklog
Activity
langwatch-agent commentedon Aug 20, 2026
Correcting one claim in the body above, and a re-measure two days on.
The inbox moved on its own
langwatch is at 12 open alerts today, down from 307, and none of my PRs merged. Main absorbed the override and floor work independently over ~120 commits. The remaining 12 are exactly the "genuinely blocked" set this issue listed, minus the ones main closed. The 175 stale alerts are gone too, so whatever re-scan or dismissal was needed appears to have happened.
scenario is at 128, all live, and langwatch/langwatch#873 plus langwatch/langwatch#857 close all of them.
The correction
I wrote that nine alerts have "no published fix in any version", listing
@ai-sdk/provider-utilsamong them. That was wrong, and the reason is worth recording because it is the same trap this repo has been bitten by before: I readfirstPatchedVersion, which GitHub leaves empty for that advisory, instead ofvulnerableVersionRange.The range is
<= 3.0.97. Nothing above 3.0.97 is affected, and 4.x and 5.x are both published, so the alert is closable. An emptyfirstPatchedVersionmeans the maintainer never tagged one, not that no fix exists.Why langwatch/langwatch#1879 is still open anyway
Only one consumer holds the old line:
@ai-sdk/google@2.0.84pins@ai-sdk/provider-utilsat exactly 3.0.30, and the whole published 3.x line tops out at 3.0.32, so every 3.x release is inside the range. Moving@ai-sdk/googleis the fix, but the obvious targets both fail:@ai-sdk/google@4.xemits models withspecificationVersion: "v4". Theai@6.0.217in this tree only acceptsv2andv3, so the model would be rejected at call time. Verified by constructing the provider and reading the spec version off the model.@ai-sdk/google@3.0.108, the newest release currently past the 7 day age gate, resolves@ai-sdk/provider-utils@4.0.45, which depends onundici ^5.29.0. That pulls undici 5.29.0 into the tree, and 5.29.0 sits inside six advisory ranges including a high. Closing one low alert by opening six is not a trade worth making.@ai-sdk/google@3.0.110is the clean target: it resolves@ai-sdk/provider-utils@4.0.46, which moved its undici dependency to^6.28.0, above every one of those ranges. It published 2026-08-14, so it ages past the gate on 2026-08-21. A one-line bump ofskills/package.jsonfrom^2.0.78to^3.0.110should close langwatch/langwatch#1879 cleanly from tomorrow, with no exclude entry needed.I did not force it through with a
minimumReleaseAgeExcludeentry. That mechanism is there for cases where nothing older satisfies a needed floor, and for a low-severity alert with a clean target two days out it is not proportionate.langwatch-agent commentedon Aug 28, 2026
Two new stale alerts landed this week, and they are the highest-severity stale pair so far, so worth calling out rather than letting them sit in the count.
python-sdk/uv.lockdoes not exist. That directory was renamed tosdks/python/by the ADR-076 restructure in langwatch/langwatch#6405, confirmed withgit log --diff-filter=R --follow. Dependabot is still reporting against the pre-restructure path.They are exact duplicates of the live pair on the real path:
#48 and langwatch/langwatch#2137 are fixed in langwatch/langwatch#7634, which raises chainlit to 2.12.0. langwatch/langwatch#2138 and langwatch/langwatch#2139 cannot be fixed by any code change, because there is no file to change. They need dismissing as "no longer in use", which I do not have permission to do.
Worth flagging the pattern rather than just the instance: a rename leaves Dependabot reporting the old path indefinitely, and because severity is attached to the advisory rather than the path, a stale entry can read as a CRITICAL sitting unaddressed. Anyone scanning the dashboard by severity will hit these two first and reasonably conclude nothing is being done about a critical, when the live one is fixed and waiting on review.
Current live inbox for reference: 16 open on langwatch, of which 2 CRITICAL and 1 HIGH are these chainlit entries (2 live, 2 stale), and 128 on scenario. Of the live ones, 6 are covered by open green PRs and the remainder are upstream-blocked (
ragasanddiskcachehave no patched release at all; the two@langchain/communityalerts are tracked in #655).