Skip to content

chore(deps): bump russh and the napi group (blocked on 4 delta audits) - #2815

Draft
chaliy wants to merge 1 commit into
mainfrom
eve/clever-mccarthy-plzps0
Draft

chaliy wants to merge 1 commit into
mainfrom
eve/clever-mccarthy-plzps0

Conversation

@chaliy

@chaliy chaliy commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Draft on purpose. The code half is done and validated; the supply-chain half
needs you. See Blocked on below.

What changed

The mechanical half of dependabot #2810, rebased onto main now that #2813 has
landed its fancy-regex 0.20.0 part:

crate from to
russh 0.64.1 0.65.0 manifest 0.64 → 0.65
napi 3.15.0 3.16.1 lock-only, caret range
napi-derive 3.6.13 3.7.0 lock-only, caret range
napi-derive-backend 6.1.6 7.0.0 lock-only, caret range, major

Only the root manifest and lockfile change. Neither russh nor the napi crates
appear in crates/bashkit/fuzz/Cargo.lock or examples/hyperlight/Cargo.lock,
so the --locked failure #2810 hit on the hyperlight lockfile came from its
stale fancy-regex pin and is already fixed on main.

No source changes were needed: russh 0.65.0 is API-compatible with the ssh
builtins as written.

Why

#2810 cannot go green as dependabot produced it. It failed two ways:

  1. WASM component — cannot update the lock file examples/hyperlight/Cargo.lock because --locked was passed, the same manifest/lockfile split that sank chore(deps): bump fancy-regex from 0.19.2 to 0.20.0 in /crates/bashkit/fuzz in the fuzz-dependencies group #2806. Resolved by chore(deps): bump fancy-regex to 0.20.0 across all three lockfiles #2813 landing fancy-regex across all three lockfiles.
  2. Audit — cargo vet reported 5 unvetted dependencies. One (fancy-regex 0.20.0) is now vetted on main; the other four are the blocker below.

Blocked on

cargo vet --locked on this branch:

Vetting Failed!
4 unvetted dependencies:
  napi:3.16.1 missing ["safe-to-deploy"]
  napi-derive:3.7.0 missing ["safe-to-deploy"]
  napi-derive-backend:7.0.0 missing ["safe-to-deploy"]
  russh:0.65.0 missing ["safe-to-deploy"]

These four need delta audits in supply-chain/audits.toml:

russh                0.64.1 -> 0.65.0
napi                 3.15.0 -> 3.16.1
napi-derive          3.6.13 -> 3.7.0
napi-derive-backend  6.1.6  -> 7.0.0

I did not write them. For these crates the file records named human
source-review attestations
— "reviewed complete published package diff", "no
new unsafe", "no new ambient capability" — not exemptions. Writing those notes
under your name for diffs I have not reviewed would be a false supply-chain
attestation, which is the one thing this mechanism exists to prevent. Adding
plain [[exemptions]] instead would quietly drop these two surfaces out of the
audit chain, and they are the surfaces where that chain is most deliberate:
russh is the sandboxed SSH client and the napi crates are the published Node
ABI. napi-derive-backend is also a major-version bump.

So this needs either your four delta audits, or an explicit decision to exempt
them. Say which and I will finish it.

Before / After

No behavior change intended. Everything that does not depend on the audits is
green:

$ cargo build -p bashkit --features ssh
Finished (russh v0.65.0 compiled, no source changes)

$ cargo test --features ssh -p bashkit --test ssh_builtin_tests
test result: ok. 24 passed; 0 failed

Those 24 include the sandbox-boundary cases — ssh_blocked_host,
ssh_not_configured, ssh_wildcard_host — so the allowlist behavior is intact
across the russh minor bump.

Not run locally: ssh_supabase_connects, which dials the live public
supabase.sh endpoint and is unreachable from this sandbox. It is a required
CI gate and will run here.

Risk

  • Low for the lockfile mechanics: no manifest change beyond the russh
    requirement, no source change, ssh suite green.
  • The real risk is the one this PR refuses to paper over: four dependency
    deltas on the SSH and Node-ABI surfaces are not yet reviewed. Until they
    are, cargo vet fails and the PR must not merge.

Checklist

  • Tests added or updated — none needed; existing ssh suite is the gate
  • Backward compatibility considered — no API change
  • cargo vet passing — needs the four delta audits above

Follow-ups

  • chore(deps): bump the rust-dependencies group with 4 updates #2810 can be closed once this lands; its content is reproduced here minus the
    already-merged fancy-regex part.
  • The aggregated root cargo dependabot group failed outright earlier today on
    turso_core (unknown_error) before succeeding on a later run. Worth a look
    if it recurs, since it is the group that gates all root Rust bumps.

Generated by Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

Mechanical half of dependabot #2810, rebased onto main now that #2813 has
landed the fancy-regex 0.20.0 part. Remaining bumps:

  russh                0.64.1 -> 0.65.0   (manifest 0.64 -> 0.65)
  napi                 3.15.0 -> 3.16.1   (lock-only, caret range)
  napi-derive          3.6.13 -> 3.7.0    (lock-only, caret range)
  napi-derive-backend  6.1.6  -> 7.0.0    (lock-only, caret range)

Only the root manifest and lockfile change: neither russh nor the napi crates
appear in crates/bashkit/fuzz/Cargo.lock or examples/hyperlight/Cargo.lock, so
the --locked failure #2810 hit on the hyperlight lockfile came from its stale
fancy-regex pin and is already resolved on main.

NOT YET LANDABLE. `cargo vet` needs four delta audits that this commit
deliberately does not write, because supply-chain/audits.toml records them as
named human source-review attestations rather than exemptions:

  russh               0.64.1 -> 0.65.0
  napi                3.15.0 -> 3.16.1
  napi-derive         3.6.13 -> 3.7.0
  napi-derive-backend 6.1.6  -> 7.0.0

russh is the sandboxed SSH client and the napi crates are the published Node
ABI, so these are the two dependency surfaces where the existing audit chain
is most deliberate. napi-derive-backend is also a major-version bump.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
bashkit 04983c1 Commit Preview URL

Branch Preview URL
Nov 02 2026, 10:52 AM

chaliy commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

Audit is red, and it is the expected blocker described in the PR body, not a new problem. It is also the only failing check on 04983c1.

CI reports exactly what cargo vet --locked reports locally:

Vetting Failed!
4 unvetted dependencies:
  napi:3.16.1 missing ["safe-to-deploy"]
  napi-derive:3.7.0 missing ["safe-to-deploy"]
  napi-derive-backend:7.0.0 missing ["safe-to-deploy"]
  russh:0.65.0 missing ["safe-to-deploy"]

I have not re-run the job: the result is deterministic, so a second run would fail identically.

This cannot be fixed from inside this PR. supply-chain/audits.toml records these four crates as named human source-review attestations, so closing the gap means either four delta audits:

russh                0.64.1 -> 0.65.0
napi                 3.15.0 -> 3.16.1
napi-derive          3.6.13 -> 3.7.0
napi-derive-backend  6.1.6  -> 7.0.0

or an explicit decision to cover them with [[exemptions]] instead, which would take russh (the sandboxed SSH client) and the napi crates (the published Node ABI) out of the audit chain. napi-derive-backend is a major-version bump.

Everything not gated on those audits is green: russh 0.65.0 builds with no source changes, and all 24 ssh_builtin_tests pass, including ssh_blocked_host, ssh_not_configured and ssh_wildcard_host.

Staying in draft and watched until there's a decision.


Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant