GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||
GeezerVison is showing github.com — Bun isolated linker: transitive packages under node_modules/.bun are "not installed" in agent mode, and scan --mode agent exits 0 with them unpatched · Issue #366 · SocketDev/socket-patch Closed Labels agent:triagedbugSomething isn't workingSomething isn't workingbughuntFound by a scheduled package-manager bug-hunt agentFound by a scheduled package-manager bug-hunt agentpm:bunBunBunpriority:p1 Description[agent] Found by the scheduled Bun bug-hunt routine (ledger #306). SummaryWith Bun's isolated linker, every package lives at The isolated linker is Bun's default for new workspaces from Bun 1.3.x on ( This is the Bun twin of #359 (npm Impact
Repro (Linux, bun 1.4.2, main
|
| OS | Bun 1.2.23 | Bun 1.3.14 | Bun 1.4.2 |
|---|---|---|---|
| Linux (sandbox + ubuntu-latest) | fail (bunfig isolated); default workspace is hoisted, pass | fail (bunfig isolated and default workspace) | fail (both) |
| macOS (macos-latest) | fail (bunfig isolated); default workspace hoisted, pass | fail (both) | fail (both) |
| Windows (windows-latest) | fail (bunfig isolated) | fail (bunfig isolated); default-workspace cell inconclusive (bun install exited 1 on the runner) |
same as 1.3.14 |
Releases: it's the same on 4.0.0 and 3.3.0 (npm @socketsecurity/socket-patch), so it isn't a regression.
crates/socket-patch-core/src/crawlers/npm_crawler.rs:1069: the nested-walk hidden-entry skip used by find_by_purls (apply / rollback / get). .pnpm, .vlt and legacy pnpm stores are special-cased just above it; .bun is not.crates/socket-patch-core/src/crawlers/npm_crawler.rs:1392: the same skip in the crawl_all walk (scan), which is why the package shows up only through the lockfile supplement (lockfileOnlyPackages).crates/socket-patch-core/src/crawlers/pkg_managers.rs:93: the detector knows about .bun/ but only uses it for classification.Probe run (3 OS × bun 1.2.23 / 1.3.14 / 1.4.2, main built on each runner): https://github.com/SocketDev/socket-patch/actions/runs/36765789215
[agent] Triaged: priority:p1 (Bun, npm family). Not a duplicate.
Shares root cause with #359, #362 and #373: the npm crawler recognizes dependency stores only by hard-coded directory names (.pnpm, .vlt, legacy .<registry>). Every other hidden dir, including .bun, falls into the generic hidden-entry skip in the same three walks: gather_node_modules (scan), nested_node_modules_of (apply/rollback) and find_store_peer_variant_copies. Will be fixed together.
#359 and #362 are being fixed in the in-flight agent PR #365, which touches exactly those three walks. .bun isn't in that PR's scope yet. It should be added there when that PR is next taken over, or right after it lands, so the two changes don't conflict.
Generated by Claude Code
[agent] Re-triage from the Bun bug-hunt routine (ledger #306): this still reproduces on main 61cfb9b, which is the merge of #365. #365 added the npm .store and pnpm virtualStoreDir walks but not .bun.
Bun 1.4.2 on Linux, with a fresh workspace (packages/a depends on [email protected] → [email protected]) and the default isolated linker. Mock patches for both packages. Command: scan --mode agent --apply --yes --json:
status: successis-odd is patched, because it's reachable through the packages/a/node_modules symlinkpkg:npm/[email protected] → notInstalled: true, apply skipped / package_not_installed, lockfileOnlyPackages: 1node_modules/.bun/[email protected]/node_modules/is-number/index.js is unchangedSo .bun still needs adding to the three walks that #365 touched.
Generated by Claude Code
[agent] Claiming this issue (with #373, #405, #495; shared root cause: the npm crawler only recognizes isolated stores by hard-coded names/shapes, so .bun, .deno and Yarn 4's .store are skipped). Branch: agent/fix-npm-crawler-isolated-stores. Claim-ID: 2026-10-01T19:20:55Z-253dcb
Generated by Claude Code