superpowers
- Type
- Plugin
- Scanned
- Oct 29, 2026
- Version
- 2ce8aa15d05b
- Files read
- 227
Superpowers is a multi-harness plugin and skills library that guides AI coding agents through structured workflows for brainstorming, planning, test-driven development, subagent delegation, code review, and debugging. The primary risk is that its workflows instruct the agent to run project setup, build, and test commands and to execute multi-task implementation plans autonomously without pausing between tasks.
What it can reach
- Files
- Reads and writes project files, creates git worktrees under .worktrees/, stores plan and brainstorming state under .superpowers/ or /tmp, and reads local agent session transcripts (such as ~/.claude/projects and ~/.codex/sessions) when the diagnosing-superpowers skill is invoked.
- Shell commands
- Executes session-start hooks, workspace and git helper scripts, Graphviz diagram rendering (dot), and instructs the coding agent to run project dependency installation (npm install, pip install, cargo build, go mod download) and test suites.
- Network
- Starts a local HTTP and WebSocket server (bound to 127.0.0.1 by default) for the optional brainstorming visual companion, loads a versioned branding image from primeradiant.com unless telemetry is disabled, and can query or file issues on GitHub when diagnosing sessions.
- Browser
- Can automatically open the user's default web browser to display the local brainstorming visual companion when started with --open.
Findings
-
LowPredictable /tmp directory name when --project-dir is omitted
skills/brainstorming/scripts/start-server.sh:123
When start-server.sh is invoked without --project-dir, it constructs a predictable directory path in /tmp using the process ID and current timestamp ($$-$(date +%s)) and creates it with mkdir -p rather than mktemp -d. On a shared multi-user system, another local user could pre-create the directory before mkdir -p runs to access session state or plant files.
Fix: Use mktemp -d "${TMPDIR:-/tmp}/brainstorm.XXXXXX" when creating temporary session directories in /tmp.
-
LowDouble-quoted URL passed to shell in BRAINSTORM_OPEN_CMD
skills/brainstorming/scripts/server.cjs:92
When the optional BRAINSTORM_OPEN_CMD environment variable is set, the server passes JSON.stringify(url) to child_process.exec(). Because JSON.stringify wraps the string in double quotes, POSIX shells will still evaluate $(...) or backtick expressions if an untrusted value is passed via --url-host.
Fix: Pass the URL as a positional argument to sh -c (for example, execFile('sh', ['-c', process.env.BRAINSTORM_OPEN_CMD + ' "$1"', 'open', url])) or escape single quotes instead of relying on JSON.stringify.
-
InfoOutbound version telemetry via remote logo image in visual companion
skills/brainstorming/scripts/server.cjs:106
By default, the optional brainstorming visual companion embeds an external logo image from primeradiant.com with the Superpowers version in the query string (?v=...). Although documented in the README and sent with referrerpolicy="no-referrer", this causes the user's browser to make an outbound request when viewing local mockups unless SUPERPOWERS_DISABLE_TELEMETRY or DISABLE_TELEMETRY is set.
Fix: Set SUPERPOWERS_DISABLE_TELEMETRY=1 in environments where external network requests are undesirable, or make the remote logo opt-in.