Commit d568789
committed
Security: pnpm install-side guardrails (14-day cooldown, trust no-downgrade)
`minimumReleaseAge: 20160` — block versions younger than 14 days. pnpm 11
ships a 1440 min (1 day) default; tighten to match the project rule in
`.claude/rules/use-latest-dep-versions.md`. Renovate already enforces the
same 14-day cooldown at PR-open time; this is the install-side guardrail
for paths that bypass Renovate (manual `pnpm add`, a fresh clone, a
contributor without our Renovate config). `minimumReleaseAgeExclude`
remains the per-package opt-out for hot-fix CVE patches.
`trustPolicy: no-downgrade` — refuse to install a package whose trust
level has dropped since the last successful resolve (publisher loses
verified status, package transferred to an unknown owner). Default `off`.
Cost: occasional manual approval. Win: mitigation against the
publisher-takeover class of attacks.
`blockExoticSubdeps: true` — explicit even though pnpm 11 defaults to
true. Only direct dependencies may use exotic sources (git repos, tarball
URLs). The `@srsholmes/tauri-playwright` entry in `overrides` is a direct
dep, allowed. A compromised transitive tree can't pull anything unaudited
via a nested `git+https://…` URL.
Refs:
- https://pnpm.io/supply-chain-security
- https://pnpm.io/settings1 parent ef85b47 commit d568789
1 file changed
Lines changed: 25 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
8 | 33 | | |
9 | 34 | | |
10 | 35 | | |
| |||
0 commit comments