Ai Bill Clawhub
Analysis
The skill is a plausible billing dashboard, but it reads OpenClaw session data, runs persistent services, and exposes or changes billing data through weakly protected web/API paths.
Findings (7)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
app.get('/api/vault', ... res.json(vault)); ... app.post('/api/setup', ... fs.writeFileSync(vaultPath, JSON.stringify(data, null, 2));The HTTP API reads and overwrites vault.json from request data without authentication, authorization, CSRF protection, or a visible confirmation step.
# Usage: curl -fsSL [URL] | bash ... wget -q https://github.com/fumabot16-max/project-bill/archive/refs/heads/master.zip -O master.zip ... npm install --silent
The installer pattern executes a remote shell workflow, downloads a mutable master branch, and runs dependency installation rather than pinning a reviewed release or commit.
execSync('npm install', { stdio: 'inherit' });The setup script automatically runs npm install when node_modules is missing; this is related to setup, but it executes package-manager behavior from the project environment.
calculateUsage(); setInterval(calculateUsage, 27000);
The collector continuously polls usage data in the background, which is expected for real-time monitoring but important for users to understand.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
sudo cp systemd/*.service /etc/systemd/system/ sudo systemctl enable ai-bill ai-bill-collector sudo systemctl start ai-bill ai-bill-collector
The installer can modify system-level service configuration and start privileged persistent services, but the registry metadata declares no required binaries, config paths, or install spec.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
const WEB_LIVE_PATH = '/var/www/html/bill/usage_live.json'; ... fs.writeFileSync(WEB_LIVE_PATH, jsonStr);
The collector copies usage data into a standard web-root path outside the app directory, while SKILL.md only declares managed files inside app/.
const SESSION_PATH = '/root/.openclaw/agents/main/sessions/sessions.json'; ... sessionsRaw = fs.readFileSync(SESSION_PATH, 'utf8');
The collector reads the local OpenClaw agent session store to calculate token usage; this is purpose-aligned, but session stores can contain sensitive task metadata.
