pumpclaw-agent
The skill generates a legitimate Telegram+web payment template but contains an undocumented deposit-wallet pattern that stores private keys in SQLite, plus unused treasury keypair code creating shadow surface.
Why this conclusion was reached
1/4 dimensions flagged1 undeclared or violating capabilities were inferred.
10 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
4 dependency or supply-chain issues need attention.
What drove the risk score up
SKILL.md safety rule 'Never handle private keys' conflicts with template storing deposit wallet secrets in SQLite; no explicit documentation of this design decision
server.js:40-43 and server.cjs:72-75 create a treasury Keypair from TREASURY_SECRET_KEY_BASE58 that is never used in any transaction flow
SKILL.md 'Never sign transactions on behalf of the user' conflicts with server signing invoices from deposit keypairs (server.js:116-124, server.cjs:210-225)
Most important evidence
Deposit wallet private keys stored in plaintext SQLite
The template generates per-user deposit keypairs and stores the base58-encoded secret key (deposit_secret_b58) in a SQLite database. This directly contradicts SKILL.md safety rule 'Never handle private keys / secret key material' and creates severe risk if the database file is accessed.
assets/template/src/server.js:77 Unused treasury keypair created from environment secret
Both server.js and server.cjs decode TREASURY_SECRET_KEY_BASE58 into a Keypair and assign it to a 'treasury' variable that is never used in any subsequent code path. This creates shadow attack surface for credential harvesting.
assets/template/src/server.js:40 Transaction signing not declared in SKILL.md
SKILL.md states 'Never sign transactions on behalf of the user', but the template server signs invoice transactions from deposit keypairs (server-controlled wallets). While technically not user keys, this operational behavior is not declared.
assets/template/src/server.js:116 Native module dependency without explicit security controls
better-sqlite3 is a native Node.js module that reads/writes binary database files. If the module or its build artifacts are compromised, the entire database including stored secrets could be exposed.
assets/template/package.json:12 Declared capability vs actual capability
SKILL.md stamps assets/template/ to customer folder scripts/stamp_template.sh uses tar/bash Solana RPC URL for payment verification better-sqlite3 stores deposit wallets and balances Skill generates project; doesn't execute template deposit_secret_b58 stored in SQLite without encryption Suspicious artifacts and egress
http://127.0.0.1:3033 assets/template/README-FAST.md:4
http://127.0.0.1:3033/health assets/template/README.md:19
https://opencollective.com/fastify assets/template/package-lock.json:111
https://paulmillr.com/funding/ assets/template/package-lock.json:275
https://www.patreon.com/feross assets/template/package-lock.json:758
https://feross.org/support assets/template/package-lock.json:762
https://opencollective.com/express assets/template/package-lock.json:987
https://dotenvx.com assets/template/package-lock.json:1079
3j5fMGzUMCxWBJ3dV3a7Wz8y2f assets/template/package-lock.json:1141
https://paypal.me/kozjak assets/template/package-lock.json:1768
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| @pump-fun/agent-payments-sdk | 3.0.0 | npm | No | Major version only; supply chain risk for SDK |
| @solana/web3.js | ^1.98.0 | npm | No | Pinned to major version |
| better-sqlite3 | ^12.6.2 | npm | No | Native module; database contains plaintext private keys |
| fastify | ^5.8.2 | npm | No | Pinned to major version |
| grammy | ^1.41.1 | npm | No | Pinned to major version |
| zod | ^4.3.6 | npm | No | Pinned to major version |
File composition
references/PUMP_TOKENIZED_AGENTS.md assets/template/package-lock.json assets/template/src/server.js assets/template/README-FAST.md assets/template/README.md assets/template/package.json