cli@3.76.1
CAUTION· install onlyPublisher claims: "Ruflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- second launch with the clock 45 days ahead · every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-12 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: Auto-update or dynamic fetch configuration; Auto-update or dynamic fetch configuration; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
this.output.writeln(this.output.dim(`Updates available: ${nonAutoUpdates.map(u => `${u.package}@${u.latestVersion}`).join(', ')}`));Fix: Pin versions and sources; vendor anything fetched at install time.autoUpdate: { ...DEFAULT_CONFIG.autoUpdate, patch: autoUpdate },Fix: Pin versions and sources; vendor anything fetched at install time.'.env.*.local',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* This allows: echo '{"jsonrpc":"2.0",...}' | npx @claude-flow/cliFix: Pin versions and sources; vendor anything fetched at install time.// 2. stdin is being piped AND args are "mcp start" (explicit, e.g. npx claude-flow@alpha mcp start)Fix: Pin versions and sources; vendor anything fetched at install time.export function proxyTokenPath() {Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.{ command: 'npx ruflo eject --name my-harness', description: 'Dry-run; prints what would happen' },Fix: Pin versions and sources; vendor anything fetched at install time.: options.autoUpdate === true;Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo eject --name my-harness --target /abs/out --confirmFix: Pin versions and sources; vendor anything fetched at install time.// Auto-update if enabledFix: Pin versions and sources; vendor anything fetched at install time.// under common timeout windows (npx default, MCP stdio 30 s). ResolveFix: Pin versions and sources; vendor anything fetched at install time.export declare function proxyTokenPath(): string;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* npx ruflo eject --name my-harness --confirm # actually ejectFix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo eject --name my-harness # dry-run planFix: Pin versions and sources; vendor anything fetched at install time.command: 'npx ruflo eject --name my-harness --confirm',Fix: Pin versions and sources; vendor anything fetched at install time.'.env.local',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Run auto-update check on startupFix: Pin versions and sources; vendor anything fetched at install time.const autoUpdate = options.autoUpdate === undefinedFix: Pin versions and sources; vendor anything fetched at install time.' - Or pre-download: npx agentdb',Fix: Pin versions and sources; vendor anything fetched at install time.'.env',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// #2777 — earlier versions shelled out to `npx --yes skills add ruvnet/rufloFix: Pin versions and sources; vendor anything fetched at install time.// Keep Codex out of the CLI dependency graph so cold `npx ruflo --version`Fix: Pin versions and sources; vendor anything fetched at install time.…w\` (umbrella), and \`@claude-flow/cli\` (implementation). Users invoke it as \`npx ruflo <command>\`. ## When to invoke ruflo Suggest ruflo when the task involves any…Fix: Pin versions and sources; vendor anything fetched at install time.// pre-fix code from the user's npx cache.Fix: Pin versions and sources; vendor anything fetched at install time.* Write CLAUDE.md with swarm guidanceFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// can run `npx skills add ruvnet/ruflo --all` themselves.Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo tui --view swarm # start on the Swarm page (keys 1-6 or o c s e m a switch pages)Fix: Pin versions and sources; vendor anything fetched at install time.// Force kill if still runningFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// #2448 — Detect and REGENERATE the runaway `npx @claude-flow/cli@latest`Fix: Pin versions and sources; vendor anything fetched at install time.description: 'Force restart (kill existing server first)',Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* `kill -0`, and isProcessRunning()'s process-name check on top of it, onlyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.'nyc: npx nyc npm test',Fix: Pin versions and sources; vendor anything fetched at install time.'Jest: npx jest --coverage',Fix: Pin versions and sources; vendor anything fetched at install time.' - Or pre-download: npx agentdb', // line 56Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo tui --plain | head # one plain frame, exit 0 (scripts, CI)Fix: Pin versions and sources; vendor anything fetched at install time.…dog } from '../runtime/parent-death-watchdog.js'; import { getServerManager, getMCPServerStatus, resolveMcpHttpAuthToken, ensureDefaultMcpToken, isUnauthenticatedHttpAllowed, isLoopbackHost, filterAdvertisedMcpTools, parseMcpToolSelection,…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.* chmod fails silently on Windows, where POSIX modes don't apply — that'sFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.'Jest: npx jest --coverage',Fix: Pin versions and sources; vendor anything fetched at install time.* Plain `kill -0` returns true for any process with the same owner,Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.output.writeln(output.dim('Expected files: coverage/coverage-summary.json, coverage/lcov.info, coverage/coverage-final.json, or .nyc_output/out.json'));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.'Vitest: npx vitest --coverage',Fix: Pin versions and sources; vendor anything fetched at install time.* chmod fails silently on Windows, where POSIX modes don't apply — that'sFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// Force kill the existing processFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* npx ruflo tui | cat # not a terminal and no --plain: a hint on stderr, exit 2Fix: Pin versions and sources; vendor anything fetched at install time.// Matches any invocation of `claude-flow hooks statusline` — either via npxFix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo tui # interactive, in a terminal (mouse on: click a page in the bar, scroll with the wheel)Fix: Pin versions and sources; vendor anything fetched at install time.// optionalDependency of the CLI and lands in the npx cache — unreachableFix: Pin versions and sources; vendor anything fetched at install time.// If we can't inspect the process (macOS, Windows, permissions), fall back to kill checkFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.{ command: 'claude-flow mcp start -f', description: 'Force restart (kill existing)' }Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// Also write/append global ~/.claude/CLAUDE.md so ruflo tools are used automatically (#1497).Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.return true; // Can't inspect, fall back to kill checkFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.output.writeln(output.dim('Expected files: coverage/coverage-summary.json, coverage/lcov.info, coverage/coverage-final.json, or .nyc_output/out.json'));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* Plain `kill -0` returns true for any process with the same owner,Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.npx ruflo initFix: Pin versions and sources; vendor anything fetched at install time.'c8: npx c8 npm test',Fix: Pin versions and sources; vendor anything fetched at install time.// use the runaway `npx @claude-flow/cli@latest hooks <sub>` form. These fireFix: Pin versions and sources; vendor anything fetched at install time.// (`npx [--prefer-offline] [@]claude-flow[/cli][@<tag>] hooks statusline …`)Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo tui --no-mouse # keyboard only, if SGR mouse reporting fights your terminal's text selectionFix: Pin versions and sources; vendor anything fetched at install time.* `kill -0`, and isProcessRunning()'s process-name check on top of it, onlyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.output.writeln(output.dim('Expected files: coverage/coverage-summary.json, coverage/lcov.info, coverage/coverage-final.json, or .nyc_output/out.json'));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
No advisories in OSV for @claude-flow/cli@3.76.1 as of 39 h 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 claude-flow: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- 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.
- Credential pass-through configuration≈ +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.