cli@3.75.0
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-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: Auto-update or dynamic fetch configuration; Access to sensitive file paths; Auto-update or dynamic fetch configuration. 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.'.env',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const result = await runStartupUpdateCheck({ autoUpdate: true });Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruflo eject --name my-harness --confirm # actually ejectFix: Pin versions and sources; vendor anything fetched at install time.// Force kill the existing processFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.'Jest: npx jest --coverage',Fix: 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.// #2448 — Detect and REGENERATE the runaway `npx @claude-flow/cli@latest`Fix: 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.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.export declare function proxyTokenPath(): string;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Keep Codex out of the CLI dependency graph so cold `npx ruflo --version`Fix: Pin versions and sources; vendor anything fetched at install time.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.// pre-fix code from the user's npx cache.Fix: 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.* npx ruflo tui --plain | head # one plain frame, exit 0 (scripts, CI)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.'Vitest: npx vitest --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.…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.* 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.// 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.// can run `npx skills add ruvnet/ruflo --all` themselves.Fix: 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 function proxyTokenPath() {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.'.env.*.local',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 # dry-run planFix: Pin versions and sources; vendor anything fetched at install time.'nyc: npx nyc npm test',Fix: 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.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.* Run auto-update check on startupFix: 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.…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.command: 'npx ruflo eject --name my-harness --confirm',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.* npx ruflo eject --name my-harness --target /abs/out --confirmFix: 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.// use the runaway `npx @claude-flow/cli@latest hooks <sub>` form. These fireFix: 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.* This allows: echo '{"jsonrpc":"2.0",...}' | npx @claude-flow/cliFix: 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.* 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.// Auto-update if enabledFix: Pin versions and sources; vendor anything fetched at install time.{ 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.* 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.{ 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.* 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.'.env.local',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.npx ruflo initFix: Pin versions and sources; vendor anything fetched at install time.return true; // Can't inspect, fall back to kill checkFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* 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.// Force kill if still runningFix: 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.* Write CLAUDE.md with swarm guidanceFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// 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.* 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.// 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.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.75.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 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.