Use Developer Controlled Wallets

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill is mostly aligned with Circle wallet management, but it includes unsafe examples that may print sensitive recovery-file data and omit transaction idempotency safeguards.

Use this only if you intend to build Circle developer-controlled wallet software. Before using it with real funds, remove any recovery-file logging, keep API keys and entity secrets in a secrets manager, add idempotency keys to all mutating calls, require explicit human confirmation for every transfer, default to testnets, and pin the Circle SDK dependency.

Findings (4)

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

Sensitive wallet recovery data could be exposed in logs, increasing the risk that someone else could compromise or recover controlled wallets.

Why it was flagged

The snippet writes a Circle recovery file and then prints `response.data?.recoveryFile`. The same artifact describes the recovery file as sensitive, so this could place custody recovery material in terminal, tool, or chat logs.

Skill content
recoveryFileDownloadPath: path.join(os.homedir(), ".circle", "recovery-file.json"), ... console.log(response.data?.recoveryFile);
Recommendation

Remove the `console.log(response.data?.recoveryFile)` line. Store the recovery file only in secure storage, show at most a safe path or checksum, and avoid sending recovery material through agent or terminal logs.

What this means

If copied directly, retrying or partially failing a transfer workflow could create duplicate or unreliable fund-movement behavior.

Why it was flagged

The transfer example is a mutating fund-movement call but does not include an idempotency key, despite SKILL.md stating that all mutating requests require a UUID v4 idempotency key.

Skill content
const transferResponse = await circleDeveloperSdk.createTransaction({ walletId: "<source-wallet-id>", tokenId: "<token-id>", destinationAddress: "<destination-wallet-address>", amounts: ["0.01"], fee: { type: "level", config: { feeLevel: "MEDIUM" } } });
Recommendation

Add a UUID v4 `idempotencyKey` to every wallet creation and transaction call, and keep an explicit user-confirmation gate for destination, amount, token, and network before any transfer.

What this means

Users may not receive an install-time warning that the skill expects sensitive Circle custody credentials.

Why it was flagged

The registry metadata does not declare credentials, while the skill instructions require `CIRCLE_API_KEY` and `ENTITY_SECRET` for a high-impact custody wallet integration.

Skill content
Required env vars: none; Env var declarations: none; Primary credential: none
Recommendation

Declare `CIRCLE_API_KEY` and `ENTITY_SECRET` in the skill metadata or clearly warn users before any workflow that needs them.

What this means

A future package update or dependency issue could affect wallet-management code that users build from these instructions.

Why it was flagged

The skill asks users to install an external npm package without pinning a version. This is purpose-aligned for the Circle SDK, but dependency provenance and version drift still matter.

Skill content
npm install @circle-fin/developer-controlled-wallets
Recommendation

Pin the SDK version, use a lockfile, install from trusted registries, and review package updates before using them with real funds.