[Fix] Remove Neon CLI and Pin All JS Dependencies - #24951
Conversation
Remove @neondatabase/api-client and neonctl to address CVE-2026-25639 (axios supply chain vulnerability). Pin all JS dependencies to exact versions across all package.json files to prevent future supply chain attacks via semver range resolution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR removes the Key changes:
Confidence Score: 5/5
|
| Filename | Overview |
|---|---|
| .circleci/config.yml | Removes Neon CLI install and branch-creation steps correctly, but the Run Docker container step still references the now-unset $E2E_UI_TEST_DATABASE_URL; harmless while the job is commented out but a latent bug. |
| ci_cd/security_scans.sh | Correctly removes CVE-2026-25639 allowlist entry that was needed only for the now-deleted @neondatabase/api-client transitive axios dependency. |
| ui/litellm-dashboard/package.json | Removes @neondatabase/api-client dev dependency and pins all remaining deps to exact versions; effectively also bumps several packages (e.g. openai 4.93→4.104, antd 5.13→5.29, @tanstack/react-query 5.64→5.90) to their previously-resolved lockfile versions. |
| ui/litellm-dashboard/scripts/e2e_tests/neonHelperScripts.ts | File deleted — correctly removes the Neon API client helper scripts that depended on the now-removed @neondatabase/api-client. |
| ui/litellm-dashboard/package-lock.json | Removes @neondatabase/api-client, axios, follow-redirects, and proxy-from-env nodes entirely; all other entries are pinned to previously-resolved versions with no unexpected tree changes. |
| docs/my-website/package.json | Pins all deps to exact versions; @inkeep/cxkit-docusaurus jumps from ^0.5.89 to 0.5.107 and dotenv from ^16.4.5 to 16.6.1, reflecting the previously-resolved versions. |
| litellm-js/spend-logs/package.json | Pins deps; @hono/node-server moves from ^1.10.1 to 1.19.6 and tsx from ^4.7.1 to 4.20.6, matching the previously-resolved lockfile versions. |
| tests/proxy_admin_ui_tests/ui_unit_tests/package.json | Pins all dev and runtime deps to exact versions; typescript moves from the broad ^5.0.0 to 5.9.3 and antd from ^5.12.5 to 5.29.1. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["Before: e2e_ui_testing CI job"] --> B["Install Neon CLI\n(neonctl)"]
B --> C["Create Neon branch\n(neon branches create)"]
C --> D["Set E2E_UI_TEST_DATABASE_URL\n(neon connection-string)"]
D --> E["docker run\n-e DATABASE_URL=\$E2E_UI_TEST_DATABASE_URL"]
E --> F["Run Playwright tests\nagainst Neon branch DB"]
A2["After: e2e_ui_testing CI job\n(commented out in workflow)"] --> G["docker run\n-e DATABASE_URL=\$E2E_UI_TEST_DATABASE_URL\n⚠️ variable never set"]
G --> H["Playwright tests\n(job not triggered)"]
subgraph "Dependency chain removed"
I["@neondatabase/api-client"] --> J["axios (CVE-2026-25639)"]
J --> K["follow-redirects"]
J --> L["proxy-from-env"]
end
M["neonHelperScripts.ts"] --> I
M -->|deleted| N["✅ Removed"]
I -->|removed from package.json| N
style G fill:#fff3cd,stroke:#ffc107
style N fill:#d4edda,stroke:#28a745
style I fill:#f8d7da,stroke:#dc3545
style J fill:#f8d7da,stroke:#dc3545
style K fill:#f8d7da,stroke:#dc3545
style L fill:#f8d7da,stroke:#dc3545
Comments Outside Diff (1)
-
.circleci/config.yml, line 3233-3247 (link)Stale
$E2E_UI_TEST_DATABASE_URLreference in job definitionThe
Run Docker containerstep still passesDATABASE_URL=$E2E_UI_TEST_DATABASE_URLto the container, but the step that populated this variable (theneon connection-stringcommand) was removed. This means the variable is now undefined, so the container would start withDATABASE_URL=(empty string) — silently ignoring the database entirely.The job is currently commented out of the workflow so this won't fire today, but anyone who uncomments
e2e_ui_testingin the future will get a container with no database connection and likely opaque failures. The reference should be replaced with a real$DATABASE_URLenvironment variable injected from CircleCI context, or the job definition cleaned up to reflect the new approach to provisioning test databases.
Reviews (1): Last reviewed commit: "[Fix] Remove neon CLI dependency and pin..." | Re-trigger Greptile
[Fix] Remove Neon CLI and Pin All JS Dependencies
Summary
Failure Path (Before Fix)
@neondatabase/api-clientpulled in axios as a transitive dependency, which is vulnerable to CVE-2026-25639 (DoS via__proto__inmergeConfig). JS dependencies across the repo used^/~semver ranges, allowing futurenpm installruns to resolve to compromised versions.Fix
@neondatabase/api-clientdev dependency andneonHelperScripts.tspackage.jsonfiles in the repoTesting
npm installconfirms lockfiles are stable (no changes)npm run buildpasses for the dashboardnpm run testpasses for the dashboardcircleci config validateType
🐛 Bug Fix
🚄 Infrastructure