Skip to main content

Vercel AI SDK Case Study

Verified baseline scan — CVE Lite CLI v1.18.1 · 2026-05-29

Vercel AI SDK logo

Summary

  • Project: Vercel AI SDK (vercel/ai) — provider-agnostic TypeScript toolkit for building AI-powered applications and agents
  • Revision: 3215032043569f75a97fadf2b08aa38f11b011af
  • Lockfile: pnpm-lock.yaml (3,570 resolved packages, pnpm 10.33.4)
  • Baseline findings: 55 unique vulnerable packages (2 critical · 22 high · 27 medium · 4 low)
  • OSV advisory matches: 163 CVE/advisory entries deduplicated into 55 packages
  • Direct vs transitive: 3 direct / 52 transitive
  • Validated fix command groups generated: 5
  • First-pass coverage: 6 of 55 findings have confident copy-and-run commands
  • pnpm audit (same lockfile): 162 vulnerability entries (2 critical · 56 high · 82 moderate · 22 low)
  • Remediation applied in this study: none — baseline scan and generated fix plan only

What this case study demonstrates

The Vercel AI SDK repository is a large pnpm + Turborepo monorepo spanning core packages (ai, @ai-sdk/*), dozens of framework examples (Next.js, Nuxt, Svelte, and more), and integration test workspaces. At 3,570 resolved packages, it is comparable in scale to the Gatsby Yarn Classic snapshot (3,568) — but uses modern pnpm lockfile semantics with importer-aware path hints.

This case study is not the Turborepo build-system snapshot already in this repo (vercel/turborepo). It targets vercel/ai — the AI SDK itself — where risk concentrates in example apps and dev tooling (Next.js, Nuxt, OpenTelemetry, Fastify/Hono servers) rather than the published ai npm package surface alone.

The direct/transitive split (3 direct, 52 transitive) shows where maintainers have root-level leverage:

[email protected] — critical, direct. A legacy Next.js major locked for multiple example workspaces. CVE Lite generates a workspace-scoped upgrade toward 15.5.18 across filtered example packages.

[email protected] — high, direct. A newer Next.js line still behind the validated target on middleware and related advisories.

[email protected] — medium, direct. The monorepo's own Turborepo CLI version at the root — CVE Lite validates 2.9.14 as a direct upgrade.

[email protected] — critical, transitive. Reached through telemetry and example-server graphs — not a root package.json dependency.

The five generated command groups illustrate CVE Lite's strength on pnpm monorepos: filtered pnpm add for Next examples, pnpm update --no-save for shared toolchain packages, and direct turbo bumps — versus pnpm audit listing 162 rows without remediation grouping.


Comparison Note: CVE Lite CLI vs pnpm audit

Both tools were run against the same pnpm-lock.yaml on the same machine on 2026-05-29.

Metricpnpm audit (10.33.4)CVE Lite CLI v1.18.1
Packages audited / parsed3,7933,570
Total reported findings16255
Critical22
High5622
Moderate / Medium8227
Low224
Direct vs transitive breakdown✓ (3 / 52)
Deduplicated package view
Validated fix targetspartial
Copy-and-run command groups✓ (5 groups)
Skipped findings with reason✓ (49 entries)

Why the totals differ: pnpm audit counts 162 vulnerability entries (advisory × path rows across example workspaces). CVE Lite reports 55 unique vulnerable package versions once each. Multiple OpenTelemetry or undici paths collapse into single package-level decisions.

Critical alignment: Both tools flag 2 critical severities on this snapshot. CVE Lite identifies them as [email protected] (direct) and [email protected] (transitive).

Fix guidance:

pnpm audit lists advisories but does not produce grouped, workspace-filtered commands. CVE Lite generates five groups, including:

pnpm update --no-save minimatch
pnpm add --filter ./examples/next --filter ./examples/next-agent … [email protected]

…covering 6 of 55 findings on first pass. The remaining 49 are skipped with explicit reasons — mostly transitive example-app chains without a safe auto-identified parent upgrade on this lockfile-only snapshot.


Before vs After

No remediation pass was performed for this study. This table records the verified baseline scan only.

StageFindingsCriticalHighMediumLowDirectTransitiveCommand groups
Baseline (verified)552222743525

Fix Journey

No commands were run for this study.

The instinct on 2 critical findings is to run pnpm add next@latest at the repo root. CVE Lite's output shows why that is insufficient: [email protected] requires filtered example workspace upgrades, and [email protected] has no root-level install path.

For [email protected], the direct command pnpm add [email protected] is immediate and validated.

For minimatch, js-yaml, and yaml, parent-range pnpm update --no-save commands address shared toolchain paths without rewriting the entire lockfile in one shot.


Why this matters

AI SDK adoption is exploding — teams clone the monorepo for examples, run integration tests locally, and ship apps built from the same graph. Security triage must cover example workspaces (Next.js, Nuxt, Fastify) and observability stacks (OpenTelemetry), not only the core ai package.

CVE Lite's value here is actionable grouping on a 3,570-package pnpm graph: 55 deduplicated findings, 3 direct levers, 5 command groups, and 49 skipped findings with reasons — versus 162 pnpm audit rows without a remediation plan.


Scan command

Run from the Vercel AI SDK repository root or from the examples/vercel-ai-sdk directory in this repository:

cve-lite . --verbose --all

The example lockfile reflects vercel/ai at revision 3215032043569f75a97fadf2b08aa38f11b011af. OSV advisory data changes over time — re-scanning may show different counts on the same revision.


Scan verification

Every number in this case study comes from a live scan of the committed fixture at examples/vercel-ai-sdk/ in the CVE Lite CLI repository.

FieldValue
Scan date2026-05-29
CLI versionv1.18.1
CVE Lite commandnode dist/index.js examples/vercel-ai-sdk --verbose --all --json
pnpm audit commandpnpm audit / pnpm audit --json (pnpm 10.33.4)
Advisory sourceOSV (https://api.osv.dev) — online mode
Lockfile sourceexamples/vercel-ai-sdk/pnpm-lock.yaml from vercel/ai@3215032
Packages parsed (CVE Lite)3,570
Unique vulnerable packages (CVE Lite)55
Vulnerability entries (pnpm audit)162
Fix command groups (CVE Lite)5
First-pass covered findings (CVE Lite)6
Skipped findings with reason (CVE Lite)49

Reproduce CVE Lite locally from the repository root:

npm install
npm run build
node dist/index.js examples/vercel-ai-sdk --verbose --all

Reproduce pnpm audit from the example directory (Node.js 22+ recommended):

cd examples/vercel-ai-sdk
pnpm audit
pnpm audit --json

Both tools were run against the same pnpm-lock.yaml on the same machine on 2026-05-29.


Remaining risk

All 55 baseline findings remain open at the time of this study. No remediation was applied.

  • 2 critical: [email protected] (direct), [email protected] (transitive)
  • 22 high: including direct [email protected], plus hono, fastify, devalue, OpenTelemetry packages, two undici versions, nuxt, glob, minimatch, and others
  • 27 medium: including direct [email protected], four esbuild versions, three file-type versions, three qs versions, three uuid versions, vite, webpack-dev-server
  • 4 low: cookie, diff, tsup, webpack

Only 6 findings have first-pass copy-and-run commands. The other 49 require filtered workspace upgrades, parent-chain decisions, or upstream example-app releases.


Baseline findings

Full vulnerable package list from the verified scan on 2026-05-29 (revision 3215032):

PackageVersionSeverityRelationshipFix hintAdvisory IDs
next15.0.7criticaldirect12.3.5CVE-2026-44573, CVE-2026-44572…
protobufjs8.0.0criticaltransitive8.2.0CVE-2026-44294, CVE-2026-44293…
@hono/node-server1.13.7hightransitive1.19.13CVE-2026-39406, CVE-2026-29087
@opentelemetry/auto-instrumentations-node0.54.0hightransitive0.75.0CVE-2026-44902
@opentelemetry/exporter-prometheus0.210.0hightransitive0.217.0CVE-2026-44902
@opentelemetry/sdk-node0.210.0hightransitive0.217.0CVE-2026-44902
@opentelemetry/sdk-node0.56.0hightransitive0.217.0CVE-2026-44902
devalue5.6.3hightransitive5.8.1CVE-2026-42570, CVE-2026-30226
effect3.18.4hightransitive3.20.0CVE-2026-32887
fastify5.1.0hightransitive5.8.3CVE-2026-3635, CVE-2026-25223…
glob10.4.5hightransitive10.5.0CVE-2025-64756
hono4.6.9hightransitive4.12.18CVE-2026-22818, CVE-2026-29086…
js-cookie3.0.6hightransitive3.0.7CVE-2026-46625
minimatch3.1.2hightransitive3.1.4CVE-2026-27904, CVE-2026-26996…
multer2.0.2hightransitive2.1.1CVE-2026-3520, CVE-2026-2359…
next15.5.9highdirect15.5.18CVE-2026-44575, CVE-2026-45109…
nuxt3.14.159hightransitive3.21.6CVE-2026-45669, CVE-2026-46342…
picomatch4.0.1hightransitive4.0.4CVE-2026-33672, CVE-2026-33671
tar6.2.1hightransitive7.5.11CVE-2026-24842, CVE-2026-26960…
tmp0.0.33hightransitive0.2.6CVE-2025-54798, CVE-2026-44705
tmp0.2.5hightransitive0.2.6CVE-2026-44705
undici5.29.0hightransitive6.24.0CVE-2026-1525, CVE-2026-1527…
undici7.22.0hightransitive7.24.0CVE-2026-1525, CVE-2026-1527…
valibot1.1.0hightransitive1.2.0CVE-2025-66020
@nestjs/core10.4.22mediumtransitive11.1.18CVE-2026-35515
@nuxt/devtools1.6.3mediumtransitive2.6.4CVE-2025-52662
@nuxt/vite-builder3.14.159mediumtransitive3.15.3CVE-2025-24360
ajv8.12.0mediumtransitive8.18.0CVE-2025-69873
brace-expansion1.1.11mediumtransitive1.1.13CVE-2026-33750, CVE-2025-5889
esbuild0.18.20mediumtransitive0.25.0
esbuild0.21.5mediumtransitive0.25.0
esbuild0.23.1mediumtransitive0.25.0
esbuild0.24.2mediumtransitive0.25.0
file-type16.5.4mediumtransitive21.3.1CVE-2026-31808
file-type18.7.0mediumtransitive21.3.1CVE-2026-31808
file-type20.4.1mediumtransitive21.3.2CVE-2026-31808, CVE-2026-32630
js-yaml4.1.0mediumtransitive4.1.1CVE-2025-64718
nanotar0.1.1mediumtransitive0.2.1CVE-2025-69874
phin2.9.3mediumtransitive3.7.1
postcss8.4.31mediumtransitive8.5.10CVE-2026-41305
qs6.13.0mediumtransitive6.15.2CVE-2025-15284, CVE-2026-8723…
qs6.14.2mediumtransitive6.15.2CVE-2026-8723
qs6.15.1mediumtransitive6.15.2CVE-2026-8723
turbo2.4.4mediumdirect2.9.14CVE-2026-45772, CVE-2026-45773
unhead1.11.20mediumtransitive2.1.13CVE-2026-31873, CVE-2026-39315…
uuid10.0.0mediumtransitive11.1.1CVE-2026-41907
uuid8.3.2mediumtransitive11.1.1CVE-2026-41907
uuid9.0.1mediumtransitive11.1.1CVE-2026-41907
vite5.4.21mediumtransitive6.4.2CVE-2026-39365
webpack-dev-server5.2.2mediumtransitive5.2.4CVE-2026-6402
yaml2.7.0mediumtransitive2.8.3CVE-2026-33532
cookie0.6.0lowtransitive0.7.0CVE-2024-47764
diff7.0.0lowtransitive8.0.3CVE-2026-24001
tsup7.2.0lowtransitive8.3.5CVE-2024-53384
webpack5.97.1lowtransitive5.104.1CVE-2025-68157, CVE-2025-68458

Want your project reviewed?

If you maintain an interesting JavaScript or TypeScript project and want CVE Lite CLI considered for a public case study, open an issue in the CVE Lite CLI repository.

Please include:

  • the repository link
  • why the project would make a useful case study
  • whether the dependency graph is publicly reproducible

Not every project will be selected. Preference will go to projects that are publicly useful, technically interesting, and strong examples of realistic dependency remediation workflows.