Skip to content

feat: read trustPolicy, trustPolicyExclude, and trustPolicyIgnoreAfter from pnpm-config.json#5751

Open
fpapado wants to merge 3 commits intomicrosoft:mainfrom
fpapado:feat/pnpm-trust-policy
Open

feat: read trustPolicy, trustPolicyExclude, and trustPolicyIgnoreAfter from pnpm-config.json#5751
fpapado wants to merge 3 commits intomicrosoft:mainfrom
fpapado:feat/pnpm-trust-policy

Conversation

@fpapado
Copy link
Copy Markdown

@fpapado fpapado commented Apr 7, 2026

Summary

This PR closes #5750, by adding support for these options in pnpm-config.json.

From a user's perspective, they can now adopt a stricter trust policy, providing defence-in-depth for supply chain vulnerabilities, particularly hijacking of dependency maintainers' tokens and publishing outside of CI. The trustPolicyExclude and trustPolicyIgnoreAfter options provide a migration path for adopting the setting, by avoiding errors on known-good (or assumed-good) versions of packages.

Details

I largely followed the implementation for minimumRelease and minimumReleaseAgeExclude, adding the setting to PnpmOptionsConfiguration and any of the related interfaces. I also updated the docs, largely matching what pnpm describes.

This should not have backwards compatibility issues, since these properties are optional (though I suppose if a repo was specifying them assuming they worked, they will now be enforced; I forget if pnpm-config.json is permissive about unknown properties)

How it was tested

I added unit tests to ensure that the config gets passed on.

I'm now looking through the docs about the current recommendation for linking locally, so I can test this on our monorepo at DoorDash.

Impacted documentation

The docs at https://rushjs.io/pages/configs/pnpm-config_json/ are affected, though if I understood the process right, they are covered by the docs changes here? Let me know if not, and I can update the site manually or in whichever process 😌

(Note to self to double-check the api-extractor result, now that I've edited some of the comments)

fpapado and others added 2 commits April 7, 2026 12:00
…settings

Add first-class support for pnpm trust policy settings in Rush's
pnpm-config.json. These settings protect against dependency hijack
attacks by blocking installations where a package's trust level has
decreased. Each setting has a separate pnpm version check:
trustPolicy (>=10.21.0), trustPolicyExclude (>=10.22.0), and
trustPolicyIgnoreAfter (>=10.27.0).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fpapado
Copy link
Copy Markdown
Author

fpapado commented Apr 7, 2026

@microsoft-github-policy-service agree company="DoorDash"

@fpapado fpapado changed the title feat: add pnpm trustPolicy, trustPolicyExclude, and trustPolicyIgnoreAfter feat: read trustPolicy, trustPolicyExclude, and trustPolicyIgnoreAfter from pnpm-config.json Apr 7, 2026
/**
* {@inheritDoc PnpmOptionsConfiguration.trustPolicyIgnoreAfter}
*/
trustPolicyIgnoreAfter?: number;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
trustPolicyIgnoreAfter?: number;
trustPolicyIgnoreAfterMinutes?: number;

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the suggestion, I agree that the name is clearer when it specifies the units (I kind of wish the pnpm settings were specifying that as well) One quirk aside from the mismatch with the pnpm setting, is that pnpm-config.json already specifies minimumReleaseAge, which is also in minutes, without suffixing it with the unit. Do you think it is ok if the two are inconsistent?

*
* PNPM documentation: https://pnpm.io/settings#trustpolicyignoreafter
*/
public readonly trustPolicyIgnoreAfter: number | undefined;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public readonly trustPolicyIgnoreAfter: number | undefined;
public readonly trustPolicyIgnoreAfterMinutes: number | undefined;

Co-authored-by: Ian Clanton-Thuon <iclanton@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Needs triage

Development

Successfully merging this pull request may close these issues.

[rush] Support for pnpm's trustPolicy setting(s) in pnpm-config.json

2 participants