Back to skill
Skillv1.0.3

ClawScan security

cryptofolio · ClawHub's context-aware review of the artifact, metadata, and declared behavior.

Scanner verdict

SuspiciousMar 9, 2026, 3:27 PM
Verdict
suspicious
Confidence
medium
Model
gpt-5-mini
Summary
The skill's code and instructions mostly match the described portfolio manager, but there are multiple small inconsistencies and configuration choices (undeclared env vars, a hard-coded default worker token, CORS='*', and a likely path bug for the local web UI) that warrant caution before installing or running.
Guidance
Before installing/running: 1) Review the bundled scripts (scripts/cryptofolio.mjs and serve.mjs) locally — the skill will execute these Node scripts. 2) If you use cloud sync, deploy the Cloudflare Worker only after changing the default TOKEN to a strong secret; otherwise the default token is insecure. 3) Be aware the worker template enables CORS '*' and exposes an unauthenticated /api/health endpoint — a leaked token could let others read/overwrite your KV. 4) The skill stores sensitive data in ~/.openclaw/data/cryptofolio.json and an optional config file; consider encrypting backups and do not put private keys or exchange API keys there. 5) Note a probable web-server path bug (serve.mjs expects a web/ folder) — test locally before relying on the UI. If you are not comfortable reviewing or running the bundled Node code, do not install.

Review Dimensions

Purpose & Capability
noteThe name/description match the included files: a CLI (scripts/cryptofolio.mjs), a local web server (scripts/serve.mjs) and an optional Cloudflare Worker backend. These components are appropriate for a crypto portfolio manager. Minor mismatch: registry metadata declares no required env vars, yet the CLI supports CRYPTOFOLIO_API_URL and CRYPTOFOLIO_TOKEN via environment variables (and the README/README.md suggests adding them to OpenClaw config).
Instruction Scope
noteSKILL.md instructs the agent to run the bundled node scripts and to store data under ~/.openclaw/data/cryptofolio.json — which the code does. Cloud sync is explicitly optional and uses a user-provided Cloudflare Worker URL/token. Points to review: the Cloudflare worker/template uses CORS: '*' and has an unauthenticated /api/health endpoint; the README and worker.js include a default/hard-coded TOKEN placeholder that must be changed by the user. No instructions ask the agent to read unrelated system files or other credentials.
Install Mechanism
noteThere is no install spec (instruction-only), but the skill includes executable JS files. That means the skill will run local Node scripts provided in the package when invoked — expected, but you should inspect the bundled scripts before running. Implementation bug: serve.mjs expects a 'web' directory (join(__dirname, '..', 'web')) but the provided index.html is at the repository root; the local server may fail to serve the UI unless files are placed where the server expects.
Credentials
concernThe registry lists no required credentials, yet the CLI can read CRYPTOFOLIO_API_URL and CRYPTOFOLIO_TOKEN from environment variables and the README suggests storing them in OpenClaw config. The Cloudflare worker template contains a hard-coded TOKEN value by default (placeholder 'your-secret-token'); if someone deploys without changing it, that weak/known token could be abused. The worker also sets Access-Control-Allow-Origin: '*' which increases exposure of the endpoint if the token is leaked.
Persistence & Privilege
okThe skill is not always-enabled and is user-invocable. It stores data under ~/.openclaw/data (its own area) and writes its own config file there; it doesn't request system-wide privileges or alter other skills. Autonomous invocation is allowed by default but not a new privilege here.