Safeguard
Vulnerability Analysis•

CVE-2025-66219: Critical Command Injection in willitmerge

CVE-2025-66219 is command injection in the willitmerge npm CLI through 0.2.1. No fix is public, so remove it or never run it on untrusted branches.

Safeguard Security Team
3 min read

CVE-2025-66219 is a command injection in willitmerge, an npm command line tool that checks whether pull requests are mergeable. Versions 0.2.1 and earlier build shell commands from user input. At publication no fix is public. The record scores it 9.8 critical; the advisory says Moderate.

What's affected

  • Package: willitmerge on npm.
  • Affected: 0.2.1 and prior (the advisory lists affected versions as all).
  • Fixed: none. The record says no known fix was public at publication, and the advisory lists patched versions as None.

Severity differs by source. The record gives CVSS 9.8 (critical). The GitHub advisory labels it Moderate. Both agree that no patch exists, which matters more than the label.

How to check if you're exposed

Search for the package in your projects and on build machines.

npm ls willitmerge
npm ls -g willitmerge
grep -r "willitmerge" package.json package-lock.json 2>/dev/null

Also search CI configuration and scripts for calls to the willitmerge command. If it only runs on a developer laptop against repositories you own, exposure is lower than if it runs in automation against branches from outside contributors.

What to do now

  1. Stop using willitmerge. With no fix public, removal is the safe option. Replace it with a maintained tool or with the hosting platform's own mergeability checks.
  2. Remove it from package.json, lock files and any global install, and from CI images.
  3. If you must keep it for now, do not run it on repositories where untrusted people can create branches, and do not pass untrusted values to its flags.
  4. Run any such tool in a disposable sandbox with no secrets mounted.
  5. Check the rest of your tree for abandoned packages. Paste your manifests into the free in-browser scan at gold.safeguard.sh/scan to see which of your dependencies carry this CVE, and use reachability analysis to separate the services that actually call the affected code from the ones that only list the package.

Why it matters

The advisory explains that the tool uses an insecure child process API, exec, and concatenates user input into git commands. Input comes both from command line flags and from the target repository, where branch names are controlled by collaborators. That is the textbook shape of CWE-77: special characters in data are treated as shell syntax.

The broader risk is trust in developer tooling. A small helper that shells out with string concatenation can run attacker text on a developer machine or a CI runner, and those places hold tokens and signing keys. The record does not show exploitation in the wild, and it is not on CISA KEV.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is there a patched version?

No. At the time of the record and the advisory, no fix was public, so remove the tool or contain it.

Why is branch naming relevant?

The advisory says branch names in the target repository are under the control of collaborators and are placed in git commands without safe handling.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.