fix(plugins): require provenance for official npm trust#76501
Merged
Conversation
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
trustedSourceLinkedOfficialInstallthrough CLI, onboarding, doctor, channel catalog, and provider setup paths, and kept directnpm:semantics untrusted.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Root Cause (if applicable)
installPluginFromNpmSpeccould infer official trust from npm package name + plugin id, independent of the caller path.Regression Test Plan (if applicable)
src/plugins/install.npm-spec.test.ts,src/cli/plugins-cli.install.test.ts,src/commands/onboarding-plugin-install.test.ts,src/commands/doctor/shared/missing-configured-plugin-install.test.ts,src/channels/plugins/contracts/channel-catalog.contract.test.ts.User-visible / Behavior Changes
Direct npm installs of official packages no longer get the trusted scanner bypass just because the package name looks official. Official catalog, onboarding, and doctor installs continue to work through explicit OpenClaw-owned provenance.
Diagram (if applicable)
Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) YesYes/No) NoYes, explain risk + mitigation: plugin install launch-code scanner trust is narrowed to OpenClaw-owned install paths; direct npm installs receive normal scanner scrutiny.Repro + Verification
Environment
Steps
Expected
Actual
Evidence
Human Verification (required)
pnpm test:serial src/plugins/install.npm-spec.test.ts src/cli/plugins-cli.install.test.ts src/commands/onboarding-plugin-install.test.ts src/commands/doctor/shared/missing-configured-plugin-install.test.ts src/channels/plugins/contracts/channel-catalog.contract.test.ts src/commands/auth-choice.apply.plugin-provider.test.tspnpm test:serial src/plugins/install.test.ts src/plugins/provider-auth-choices.test.ts src/plugins/provider-install-catalog.test.ts src/commands/channel-setup/plugin-install.test.tspnpm exec oxfmt --check --threads=1 ...node scripts/run-oxlint.mjs ...cbx_6157440c9bbe/run_cbd813956eed:pnpm check:changedpassednpm:official id does not get provenance trust; hook fallback still gets catalog integrity; third-party WeCom catalog mock does not get official trust unless it comes from official external catalog.Review Conversations
Compatibility / Migration
Yes/No) YesYes/No) NoYes/No) NoRisks and Mitigations