From d3aee8449989a03f854078fb1f379f89175ea948 Mon Sep 17 00:00:00 2001 From: Yi Liu Date: Fri, 13 Feb 2026 01:56:35 +0800 Subject: [PATCH] fix(security): add --ignore-scripts to skills install commands (#14659) Skills install runs package manager install commands (npm, pnpm, yarn, bun) without --ignore-scripts, allowing malicious npm packages to execute arbitrary code via postinstall/preinstall lifecycle scripts during global installation. This is inconsistent with the security fix in commit 92702af7a which added --ignore-scripts to both plugin installs (src/plugins/install.ts) and hook installs (src/hooks/install.ts). Skills install was overlooked in that change. Global install (-g) is particularly dangerous as scripts execute with the user's full permissions and can modify globally-accessible binaries. --- src/agents/skills-install.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/agents/skills-install.ts b/src/agents/skills-install.ts index 5409c153ba..d1dd5b6bf4 100644 --- a/src/agents/skills-install.ts +++ b/src/agents/skills-install.ts @@ -147,13 +147,13 @@ function findInstallSpec(entry: SkillEntry, installId: string): SkillInstallSpec function buildNodeInstallCommand(packageName: string, prefs: SkillsInstallPreferences): string[] { switch (prefs.nodeManager) { case "pnpm": - return ["pnpm", "add", "-g", packageName]; + return ["pnpm", "add", "-g", "--ignore-scripts", packageName]; case "yarn": - return ["yarn", "global", "add", packageName]; + return ["yarn", "global", "add", "--ignore-scripts", packageName]; case "bun": - return ["bun", "add", "-g", packageName]; + return ["bun", "add", "-g", "--ignore-scripts", packageName]; default: - return ["npm", "install", "-g", packageName]; + return ["npm", "install", "-g", "--ignore-scripts", packageName]; } }