T08 · Insecure Dependencies
- Location
SKILL.md:18- Finding
Unpinned Remote Package Execution Through npx
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a disclosed image-generation helper, but it uses an unpinned `npx -y bun` runtime fallback and persistent configuration flows that deserve review before installation.
Review this before installing if you do not already trust the publisher or runtime path. Prefer installing and using a trusted local `bun` binary instead of allowing `npx -y bun`, choose project-scoped preferences unless you intentionally want cross-project defaults, and verify which API keys and reference images will be available to the selected provider.
SKILL.md:18Unpinned Remote Package Execution Through npx
Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.
${BUN_X} {baseDir}/scripts/main.ts --prompt "Make blue" --image out.png --ref source.png
# With reference images (explicit provider/model)
${BUN_X} {baseDir}/scripts/main.ts --prompt "Make blue" --image out.png --provider google --model gemini-3-pro-image-preview --ref source.png
# OpenRouter (recommended default model)
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider openrouter
The trigger text says to use the skill whenever the user asks to generate, create, or draw images, which is broad enough to match many ordinary requests and cause automatic invocation in contexts the user may not expect. Because this skill can read config files, consume API credentials, and invoke external providers, overbroad routing increases the chance of unintended external actions and data exposure.
The skill instructs the agent to execute npx -y bun when bun is not installed, which downloads and runs code from the package registry without a pinned version or integrity constraint. In an agent context this creates a supply-chain execution path where a compromised, replaced, or unexpectedly changed package version could lead to arbitrary code execution on the host.
The skill documents loading API keys and .env files from project and home directories, but it does not include a user-facing warning about accessing sensitive credentials or sending prompts/reference images to third-party services. In an agent setting, silent credential discovery combined with external network calls can violate user expectations and increase the risk of accidental secret handling or disclosure.
The documented flow explicitly creates or updates EXTEND.md and then continues operation, establishing persistent state across requests. Session persistence is risky here because saved defaults can influence future runs in ways the user may not expect, especially when stored in a user-wide location that affects multiple projects.
│ │
▼ ▼
┌─────────────────────┐ ┌──────────────────────┐
│ Create EXTEND.md │ │ Update EXTEND.md │
└─────────────────────┘ └──────────────────────┘
│ │
▼ ▼
The skill instructs the agent to create or write a project- or user-scoped EXTEND.md configuration file without an explicit warning, preview, or confirmation step before persisting changes. Because one save location is under $HOME, this can create lasting cross-project state and silently alter future behavior, which is risky even though the configuration content is not itself obviously malicious.
The update flow says to read and modify an existing EXTEND.md, or add a default_model section if missing, without requiring safeguards around overwriting existing configuration. This is dangerous because it can silently change established settings and persist altered defaults that affect subsequent image-generation operations beyond the current request.
No suspicious patterns detected.