rotifer-self-evolving-agent
A legitimate, well-documented evolution framework skill with broad but necessary permissions, transparent telemetry disclosure, and properly scoped MCP tool access. The primary concern is the supply chain risk of downloading runtime code from npm.
Why this conclusion was reached
0/4 dimensions flaggedDeclared resources and inferred behavior are broadly aligned.
11 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
2 dependency or supply-chain issues need attention.
What drove the risk score up
Fetches @rotifer/[email protected] from npm on first use — standard MCP pattern but introduces supply chain dependency on remote code
SKILL.md documents 'npx -y @rotifer/playground' fallback without a pinned version — acknowledged in skill-card.md as a known risk
Tool name, Gene id, outcome, latency, and user id sent to Rotifer Cloud on every call while authenticated — disclosed in docs with opt-out
Prior to 2.4.3, declared permissions were narrower than actual behavior, and tools had 31 instead of 10 — both corrected in current version
Most important evidence
Runtime npm code fetch introduces supply chain dependency
The skill fetches @rotifer/[email protected] from npm on first use via npx. While the version is pinned, the package is not pre-installed — the actual binary is fetched at runtime. This is standard for MCP servers but introduces trust in the npm registry and the rotifer-protocol organization.
SKILL.md:11 Unpinned playground fallback for run-agent command
The run-agent command falls back to 'npx -y @rotifer/playground' without a version pin. This means the fallback resolves to whatever latest version exists at runtime, bypassing the pinned MCP server version.
SKILL.md:80 Historical permissions mismatch in versions prior to 2.4.3
SKILL.md acknowledges that versions before 2.4.3 had declared permissions narrower than actual behavior (network:outbound was the only declared permission, while filesystem and process:exec were already in use). Also, pre-2.4.0 exposed all 31 MCP tools instead of the restricted 10. Both issues are fixed in the current version.
SKILL.md:196 Usage telemetry transmitted to Rotifer Cloud when authenticated
When logged in, the MCP server sends each tool call's name, Gene id, outcome, latency, and Rotifer user id to Rotifer Cloud via fire-and-forget POST. Installing a Gene also bumps a public install counter (Gene id only). ROTIFER_TELEMETRY=0 disables all three.
SKILL.md:117 Declared capability vs actual capability
SKILL.md line: API queries to rotifer.dev, telemetry POSTs, npm registry checks, npm fetch SKILL.md line: Reads genes/ and .rotifer/agents/; writes installed Genes, Agent definitions, run logs, update cache SKILL.md line: npx -y @rotifer/[email protected] and rotifer CLI / npx -y @rotifer/playground fallback SKILL.md explicitly states 'It does not read your environment variables or other tools' secrets' No cross-skill invocation observed No clipboard access found in documentation No browser automation declared or observed Supabase accessed via public API with anon key (Row Level Security) — no direct DB access Suspicious artifacts and egress
https://www.npmjs.com/package/@rotifer/mcp-server README.md:56
https://rotifer.dev README.md:56
https://clawhub.ai/skill/rotifer-guide README.md:118
https://clawhub.ai/skill/rotifer-gene README.md:119
https://clawhub.ai/skill/rotifer-arena README.md:120
https://clawhub.ai/skill/rotifer-agent README.md:121
https://rotifer.ai README.md:126
https://rotifer.dev/docs README.md:127
https://www.npmjs.com/package/@rotifer/mcp-server/v/0.17.0 SKILL.md:142
https://clawhub.ai/user/xiaoba-dev skill-card.md:9
https://clawhub.ai/xiaoba-dev/skills/rotifer-self-evolving-agent skill-card.md:45
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| @rotifer/mcp-server | 0.17.0 | npm | No | Version pinned; fetched from npm at runtime via npx |
| @rotifer/playground | unpinned | npm | No | Used as fallback for run-agent; not version-pinned — known risk flagged in skill-card.md |
File composition
SKILL.md README.md skill-card.md