Cli

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill matches its payment-dispute purpose, but it gives an agent wallet private-key/payment authority through an unpinned CLI and lacks clear built-in payment approval limits.

Review carefully before installing. If you use it, use a dedicated low-balance wallet, pin and verify the CLI package version, confirm every merchant URL and payment amount yourself, avoid storing valuable private keys, and do not upload sensitive evidence unless you intend it to be externally stored.

Findings (5)

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.

What this means

If an agent invokes `pay` on the wrong or malicious merchant URL, the wallet can authorize an escrow payment without an additional human confirmation step.

Why it was flagged

After fetching payment requirements from a user/agent-supplied URL, the CLI signs a payment payload and immediately retries the request with payment headers. The artifacts do not show a confirmation prompt, amount cap, merchant allowlist, or other guardrail before funds are authorized.

Skill content
const paymentPayload = await httpClient.createPaymentPayload(paymentRequired); ... const res200 = await fetch(url, { headers: paymentHeaders });
Recommendation

Use only a dedicated low-balance wallet, verify the merchant URL and amount out-of-band, and require explicit user confirmation before any `pay` or `dispute` command that signs or submits transactions.

What this means

A stored or environment-provided private key could be used by the CLI to sign payments and on-chain dispute actions; plaintext local storage increases the consequence of local compromise or accidental sharing.

Why it was flagged

The CLI resolves a wallet private key from environment or config file and writes merged config to `~/.x402r/config.json`. That private key controls payment authority, while the registry metadata declares no primary credential or required env vars.

Skill content
privateKey: process.env.PRIVATE_KEY || file.privateKey, ... fs.writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2));
Recommendation

Do not use a primary wallet. Prefer a throwaway/test wallet with minimal funds, avoid storing long-lived private keys if possible, restrict `~/.x402r/config.json` permissions, and rotate the key if exposed.

What this means

A changed or compromised npm package could run with access to the supplied private key and the user's local environment.

Why it was flagged

The setup command runs an unpinned npm package with `--yes` auto-confirmation and passes a wallet private key. Because the registry source is unknown and no install spec pins the reviewed artifact, the executed package may not be the exact reviewed code.

Skill content
npx --yes @x402r/cli config --key <private-key> --arbiter-url https://www.moltarbiter.com/arbiter
Recommendation

Pin an exact package version or audited source, verify package provenance before use, and avoid supplying a valuable wallet key to an unpinned remote CLI.

What this means

Evidence details or attached file contents may be uploaded to an external pinning service and referenced on-chain by CID.

Why it was flagged

Dispute evidence is sent to Pinata/IPFS when a Pinata JWT is configured. This is aligned with the dispute workflow, but evidence may include user-provided text or file attachments and can become externally stored/persistent.

Skill content
await fetch("https://api.pinata.cloud/pinning/pinJSONToIPFS", { ... Authorization: `Bearer ${config.pinataJwt}`, body: JSON.stringify({ pinataContent: data, ... }) })
Recommendation

Review evidence files carefully before submission, avoid including secrets or unrelated personal data, and understand the retention/publicity implications of IPFS pinning.

What this means

Running the test file can execute CLI commands with the current environment, including wallet-related variables.

Why it was flagged

Shell execution is present in the integration test harness to run CLI commands. It is not part of the registered CLI command workflow shown in `bin/x402r.ts`, but it would execute local commands if a user runs the tests.

Skill content
return execSync(cmd, { cwd: PROJECT_ROOT, env: cliEnv, encoding: "utf-8", timeout: 120000, });
Recommendation

Do not run test scripts with production private keys or unrestricted environments.