Override vulnerable shell-quote#620
Merged
Merged
Conversation
Dependabot cannot resolve GHSA-395f-4hp3-45gv because `concurrently@10.0.3` pins vulnerable `shell-quote@1.8.4`, and the bot's only automatic path would downgrade `concurrently`. Override the transitive dependency with the compatible patched release line. This resolves `shell-quote@1.10.0` while keeping `concurrently` unchanged and limits lockfile churn to that one package.
bgentry
commented
Jul 22, 2026
bgentry
left a comment
Contributor
Author
There was a problem hiding this comment.
🤖 Codex review: Security and compatibility review looks good to me.
Reviewed head: 94fbf22f5a0ceb32deadd6013a03577f789f5f13
Security and supply-chain scope
- Compared the published
shell-quote1.8.4, 1.9.0, and 1.10.0
artifacts and upstream source. Registry SHA-512 values match the
lockfile/npm metadata, and maintainer, publisher, repository, signing key,
license, and Node engine remain stable. - Verified the signed fix for GHSA-395f-4hp3-45gv replaces both quadratic
parse()reducers with linear append operations. Version 1.10.0 retains
that fix; its additional parser changes are reviewed, verified upstream
commits with no unexpected expansion of trust. - Found no new install/build hooks, bins, dependencies, native/WASM payloads,
network or telemetry code, credential/environment access, filesystem
writes, process spawning, dynamic evaluation, or obfuscation. - Structurally checked the manifest and lockfile diff. The override changes
exactly one locked package from 1.8.4 to 1.10.0, with no added/removed
packages, lifecycle hooks, bins, native packages, non-registry URLs,
non-SHA-512 integrity, or same-version checksum rewrites.
Compatibility and reachability
- This is a development-only transitive dependency through
concurrently@10.0.3. River's path importsquote(), not the advisory's
vulnerableparse()function; reviewedquote()changes are compatible
with concurrently's placeholder handling. - A clean lifecycle-disabled install resolves
concurrently@10.0.3to
shell-quote@1.10.0as intended. - Self-verification passed: 205 tests, lint, production build, Storybook
build, installed dependency-tree check, concurrently CLI and placeholder
argument-quoting smoke checks, and a 64,000-token parser regression check
completing in 16 ms.
Residual risk and verdict
The override is intentionally necessary until concurrently relaxes its
exact shell-quote@1.8.4 pin; it should be removed once upstream publishes a
compatible dependency range. I found no blocking security or compatibility
issue in this remediation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dependabot cannot resolve the high-severity
shell-quoteadvisory becauseconcurrently@10.0.3pins vulnerableshell-quote@1.8.4; its only automatic path would downgradeconcurrently.This adds a root override for the compatible patched release line, which
resolves
shell-quote@1.10.0without changingconcurrently. The lockfilechanges only that package's version, registry URL, and SHA-512 integrity.
The published artifacts and upstream source were reviewed before executing
project code. The patched package retains the same maintainers, publisher,
repository, signing key, license, and runtime surface, with no install hooks,
bins, native code, network access, or process execution.