v6.0.9: false-positive "v10 installation layout" warning when self-updating from bootstrap 11.7.0 (still reproduces with pnpm 11.19.0)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.3k
- Forks
- 217
- Avg merge
- 8h 42m
- Merged PRs (30d)
- 1
Description
Summary
pnpm/action-setup@v6.0.9 (0ebf471) still emits a false-positive v10 layout warning whenever it self-updates from the action's bootstrap pnpm (11.7.0) to the project's packageManager pin.
This is the same report as #278 (closed as completed on 2026-07-17 with no comments and no release after v6.0.9). Re-opening as a new issue because the warning is still present when targeting pnpm 11.19.0.
Running self-installer...
added 1 package in 3s
Checking for updates...
Switching pnpm from v11.7.0 to v11.19.0...
[WARN] Detected a pnpm v10 installation layout at PNPM_HOME. The pnpm shims at PNPM_HOME have been refreshed so the new version is active, but pnpm v11 expects bins in PNPM_HOME/bin. Run "pnpm setup" to migrate your PATH to the v11 layout.
Successfully updated pnpm to v11.19.0
No real v10 install is involved. The warning is noise in CI; the install still succeeds and the correct version is active.
Reproduction
package.json:
{ "packageManager": "pnpm@11.19.0" }
jobs:
repro:
runs-on: ubuntu-latest # also seen on self-hosted linux/arm64
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
# version omitted → reads package.json#packageManager
- uses: actions/setup-node@v6
with:
node-version: 24
Why it fires
The warning string is emitted by pnpm itself during self-update:
https://github.com/pnpm/pnpm/blob/main/pnpm11/engine/pm/commands/src/self-updater/selfUpdate.ts
// pnpm v10 setup linked bins directly into pnpmHomeDir ...
if (hasLegacyHomeDirShim(opts.pnpmHomeDir)) {
// refresh legacy shims...
globalWarn(
'Detected a pnpm v10 installation layout at PNPM_HOME. ...'
)
}
hasLegacyHomeDirShim treats a pnpm file directly under PNPM_HOME as a v10 marker. In this action, PNPM_HOME is pointed at the bootstrap's node_modules/.bin (see src/install-pnpm/run.ts in v6.0.9), which always contains a pnpm shim from npm ci / the action's own link step. So every self-update from bootstrap 11.7.0 → any other version false-positives by construction.
Notes
- Pinning
packageManagerto exactly11.7.0makesself-updatea no-op and the warning disappears (same observation as #278). standalone: truedoes not avoid it on Linux.- Related genuine migration issue (different cause): pnpm/pnpm#11528 / pnpm/pnpm#11464.
Possible directions (from #278)
- Give the bootstrap a dedicated
PNPM_HOME(e.g.<dest>/pnpm-home) separate fromnode_modules/.bin. - Or teach pnpm's
hasLegacyHomeDirShimto distinguish an npm-managed.binfrom a real v10setuplayout.
Environment
pnpm/action-setup@v6.0.9(0ebf47130e4866e96fce0953f49152a61190b271)- bootstrap pnpm
11.7.0→ target pnpm11.19.0 - Observed in GitHub Actions CI (linux/arm64 self-hosted runners and expected on
ubuntu-latest)
Happy to help test a fix.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/install-pnpm/run.ts and reproduce the workflow with packageManager pinned to pnpm@11.19.0, comparing the bootstrap PNPM_HOME and self-update behavior described in the issue. Evaluate the two proposed directions and verify that self-updating no longer emits the false-positive warning while the target pnpm version remains active.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, nodejs, typescript
- Domain
- ci-cd, devops, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100