x402 Payment Protocol
WarnAudited by ClawScan on May 18, 2026.
Overview
This skill is clearly about crypto payments, but it can automatically sign USDC transfer authorizations from a wallet without built-in user confirmation, spending limits, or payee validation.
Review carefully before installing. If you use it, use a dedicated low-balance wallet, approve each payment amount and recipient yourself, and avoid exposing a main wallet private key to an autonomous agent.
Findings (3)
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.
A model or script using this helper could authorize a real USDC payment to a server-provided recipient whenever a chosen URL returns an x402 payment request.
After any supported 402 response, the helper automatically selects a provider-supplied payment option and signs it; the code does not enforce a spending cap, prompt for confirmation, or restrict the payee/asset beyond the network.
const requirement = requirements.accepts.find(
r => r.scheme === "exact" && SUPPORTED_NETWORKS[r.network]
);
...
const payment = await createPaymentSignature(account, requirement, requirements.x402Version);Only use this with explicit user-approved URLs and a dedicated low-balance wallet; add confirmation, max-spend, payee allowlist, and USDC contract validation before signing.
Anyone or anything that can access the configured private key can sign wallet transactions or payment authorizations.
The example can load a wallet private key from an environment variable or user-specified file; this is purpose-aligned for crypto payments, but it is high-privilege credential handling.
if (process.env.PRIVATE_KEY) {
return privateKeyToAccount(process.env.PRIVATE_KEY);
}
...
const wallet = JSON.parse(readFileSync(process.env.WALLET_PATH, "utf-8"));
return privateKeyToAccount(wallet.privateKey);Use a separate wallet with limited USDC, avoid main wallets, protect any wallet file with strict permissions, and do not expose PRIVATE_KEY to broader agent workflows.
Future installs may resolve to different dependency versions, which matters for code that handles wallet signing.
The crypto signing implementation relies on an external dependency using a version range rather than a pinned lockfile in the supplied artifacts.
"dependencies": {
"viem": "^2.0.0"
}Install from a trusted source, review the resolved dependency version, and prefer a lockfile or pinned dependency for production use.
