storyshot@0.10.0
CAUTION· startup onlyPublisher claims: "Ask your coding agent for a video of your web app: promo clips, narrated tutorials, lessons and docs GIFs from a YAML storyboard." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-10 and scored it 70/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Privileged sudo command; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 32 s · 2 scenarios · 0 deviationsStatic findings
if (has('dnf')) return 'sudo dnf install -y ffmpeg';Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Also check (without printing it) whether `.env` has `ELEVENLABS_API_KEY`.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.ElevenLabs, best quality, key found in .env)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (!process.env[env]) errors.push(`voice provider ${cfg.voice.provider} needs ${env} (environment or a .env file next to the storyboard) — or render with draft mode to use the free local voice`);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Load API keys (ELEVENLABS_API_KEY, OPENAI_API_KEY) from .env next to the storyboardFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.lines.push(process.env.ELEVENLABS_API_KEY ? '✔ ELEVENLABS_API_KEY set' : '· ELEVENLABS_API_KEY not set — optional, for the best voice (put it in .env)');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (has('pacman')) return 'sudo pacman -S --noconfirm ffmpeg';Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const head = `<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=${encodeURIComponent(font)}:wght@400;500;600;700&display=block">`;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const f = path.join(d, '.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (has('apt-get')) return 'sudo apt-get install -y ffmpeg';Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`npx storyshot <cmd>`, or `node <checkout>/bin/storyshot.mjs <cmd>`.Fix: Pin versions and sources; vendor anything fetched at install time.'Ubuntu/Debian: sudo apt install python3.12 python3.12-venv · any OS: uv python install 3.12 — or set STORYSHOT_PYTHON to one. ' +Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const head = cjk ? '' : `<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=${encodeURIComponent(fontName)}:wght@400;700&display=block">`;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.todo.push(process.platform === 'linux' ? 'npx playwright install --with-deps chromium' : 'npx playwright install chromium');Fix: Pin versions and sources; vendor anything fetched at install time.// so no client-side tool timeout can kill them.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if (/Executable doesn't exist/.test(e.message)) console.error(' run: npx playwright install chromium');Fix: Pin versions and sources; vendor anything fetched at install time.(what.includes('venv') && process.platform === 'linux' ? '\n (Debian/Ubuntu: sudo apt install python3-venv, or the python3.X-venv package for your version)' : ''));Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// Installed from npm → `npx -y storyshot mcp`; running from a checkout → node <abs path>.Fix: Pin versions and sources; vendor anything fetched at install time.// (http://10.1.2.3:8080 → 10-1-2-3-8080, http://localhost:3000 → localhost-3000)Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for storyshot@0.10.0 as of 4d ago. This is the package itself, not its dependencies.
What would make this Verified
10 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim boheling: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.