circle-wallet
Security checks across static analysis, malware telemetry, and agentic risk
Overview
This is a coherent Circle USDC wallet skill, but it gives an agent the power to send real funds using stored Circle credentials without documented approval limits or confirmation safeguards.
Only install this if you are comfortable giving an OpenClaw agent access to a Circle developer-controlled wallet. Keep it in sandbox/testnet unless you have strong approval controls, protect the local credential files, and require manual confirmation before any USDC send operation.
Static analysis
No static analysis findings were reported for this release.
VirusTotal
66/66 vendors flagged this skill as clean.
Risk analysis
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.
If invoked incorrectly or by a prompt-influenced agent, the skill could move USDC to an unintended address, including on production/mainnet wallets.
The source directly creates Circle wallet transactions that transfer USDC, and the provided artifacts do not document a separate confirmation step, allowlist, amount limit, or production safeguard before this high-impact action.
const response = await this.client.createTransaction({
walletId: params.fromWalletId,
tokenId,
destinationAddress: params.toAddress,
amount: [params.amount],
fee: { type: 'level', config: { feeLevel: 'MEDIUM' } }
});Require explicit user confirmation immediately before every send, show a transaction preview with amount, chain, from-wallet, and destination, and consider amount limits, address allowlists, and a separate production opt-in.
Anyone or any process that can read this config file may gain access to sensitive Circle wallet credentials.
The API key and entity secret are saved as a JSON config file in the skill's local directory. This is expected for a wallet CLI, but those credentials can authorize wallet operations and should be protected.
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json'); ... fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
Store the config directory with restrictive permissions, avoid sharing ~/.openclaw/circle-wallet/, and prefer OS keychain or encrypted secret storage for production funds.
Installing the package runs the package's build command on the local machine.
The documented npm install flow will execute a postinstall build script. This is consistent with a TypeScript CLI package, but it means install runs local build commands.
"scripts": {
"build": "tsc && chmod +x dist/cli.js",
"postinstall": "npm run build"Review the package source before installing, use the included lockfile or a reproducible install process, and install only from a trusted copy.
