Solana Connect

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

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

An agent using this skill may need access to a wallet private key, which could allow it to sign and send transactions from that wallet.

Why it was flagged

The skill claims private keys are never exposed to the agent, but the documented API passes a privateKey variable directly into the transaction function.

Skill content
"Private Key Protection" - Keys never exposed to agent ... const tx = await sendSol(privateKey, toAddress, 0.5, { dryRun: false, skipConfirmation: true });
Recommendation

Do not provide valuable wallet private keys directly to this skill. Prefer a wallet adapter, signing vault, hardware wallet, limited testnet key, or a design where the agent submits unsigned transactions for separate human approval.

What this means

A mistaken or autonomous invocation could send real SOL, including on mainnet, without a separate human confirmation step.

Why it was flagged

The human-confirmation guard is bypassed whenever skipConfirmation is true, and the code then submits a real signed transaction to the Solana RPC endpoint.

Skill content
if (amount >= REQUIRE_HUMAN_CONFIRMATION && !skipConfirmation && dryRun === false) { throw new Error(...) } ... const txSignature = await connection.sendRawTransaction(transaction.serialize());
Recommendation

Require explicit user approval outside the agent before dryRun is disabled, remove or tightly restrict skipConfirmation, and use low transaction limits, allowlisted recipients, and testnet-only keys by default.

What this means

Users may trust the skill more than they should and provide a real wallet key believing the agent cannot access or use it directly.

Why it was flagged

The documentation makes a strong safety claim, but the API reference shows the transaction function accepts the private key as an argument.

Skill content
**Private keys are NEVER exposed to the agent.** ... sendSol(privateKey, toAddress, amount, options)
Recommendation

Update the documentation to accurately describe private-key handling, declare the credential requirement, and clearly warn that the agent/runtime receives key material when these functions are used.

What this means

The RPC provider can observe queried wallet addresses and submitted signed transactions, which is expected for Solana use but still privacy-relevant.

Why it was flagged

The skill communicates with a configured external Solana RPC provider for balances, transaction history, simulation, and transaction submission.

Skill content
const DEFAULT_RPC = process.env.SOLANA_RPC_URL || 'https://api.testnet.solana.com'; ... return new Connection(rpcUrl, 'confirmed');
Recommendation

Use a trusted RPC endpoint, avoid querying sensitive wallets through untrusted providers, and keep mainnet and testnet configurations clearly separated.

What this means

A future dependency resolution could install newer package versions than the reviewed code was tested with if the lock file is not used.

Why it was flagged

The dependencies are purpose-aligned, but package.json uses semver ranges; users should ensure installation honors the reviewed lock file.

Skill content
"dependencies": { "@solana/web3.js": "^1.98.0", "bs58": "^6.0.0", "tweetnacl": "^1.0.3" }
Recommendation

Install from the reviewed package with its lock file, or pin exact dependency versions in the install metadata.