Typhoon Starknet Account

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

The skill fits its Starknet wallet purpose, but it can sign high-impact transactions with local private keys and create persistent background watchers, with some under-disclosed or misleading secret handling.

Install only if you intentionally want an agent-controlled Starknet wallet. Use a dedicated wallet with limited funds, review every transaction before approving, inspect or disable cron watchers, and do not provide Typhoon notes or wallet files unless you trust the skill and its dependencies.

Findings (6)

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 invoked incorrectly or without careful confirmation, the skill could spend, approve, swap, or otherwise affect assets controlled by the local Starknet account.

Why it was flagged

The swap helper reads a local wallet private key and uses it as the signer for on-chain transactions, giving the skill direct authority over wallet funds.

Skill content
const privateKey = loadPrivateKeyByAccountAddress(accountAddress); ... const account = new Account({ provider, address: accountAddress, signer: privateKey });
Recommendation

Only use with a dedicated low-balance wallet, confirm every transaction plan, and verify that private-key access is explicitly declared and limited to the intended account.

What this means

A user or agent may underestimate the risk and believe swaps do not touch local secret material.

Why it was flagged

The script comment says it does not access secrets, but the code loads the private key from local storage, which is a material mismatch in security disclosure.

Skill content
This script receives account info via arguments - NO secrets access. ... const privateKey = loadPrivateKeyByAccountAddress(accountAddress);
Recommendation

Update the documentation to state that the script reads the local account private key, and require explicit user approval before any signing operation.

What this means

A mistaken or manipulated invocation could transfer tokens, approve spenders, or call arbitrary contract functions from the user's wallet.

Why it was flagged

The helper can sign and send a state-changing call to a user-supplied contract method with user-supplied arguments, without an internal confirmation gate in that script.

Skill content
const privateKey = loadPrivateKeyByAccountAddress(input.accountAddress); ... const result = await contract.invoke(input.method, args, { waitForTransaction: waitForTx });
Recommendation

Enforce confirmation, simulation, contract allowlists, and clear transaction previews inside the executable path, not only in higher-level instructions.

ConcernMedium Confidence
ASI10: Rogue Agents
What this means

The skill could keep running background monitoring jobs after the original task, consuming resources or triggering later actions if configured that way.

Why it was flagged

The event watcher can install a cron job that runs every minute, and the duration is optional, so scheduled watchers may persist indefinitely.

Skill content
"schedule": { // optional - creates cron job ... const cronEntry = `* * * * * ${shellPath} >> ${join(cronDir, `${jobName}.log`)} 2>&1`; ... this.durationMs = config.durationMs || null;
Recommendation

Require explicit opt-in for cron setup, require a finite duration by default, and provide clear list/remove commands for all watcher jobs.

What this means

Watched contract activity may be sent to a third-party or local webhook endpoint chosen in the configuration.

Why it was flagged

The watcher can forward event data to a configured webhook URL, which is purpose-aligned but creates an external data boundary.

Skill content
await fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), signal: controller.signal });
Recommendation

Use only trusted webhook URLs and avoid including sensitive off-chain context in event watcher payloads.

What this means

Future installs could resolve different dependency versions than the reviewer saw.

Why it was flagged

The skill depends on public npm packages with semver ranges; this is normal for the integration but not fully pinned in the provided artifacts.

Skill content
"dependencies": { "@avnu/avnu-sdk": "^4.0.1", "starknet": "^9.2.1", "typhoon-sdk": "^1.1.13", "ws": "^8.19.0" }
Recommendation

Use a lockfile or pinned versions and install only from trusted package registries.