Reach

WarnAudited by ClawScan on May 10, 2026.

Overview

Reach is a very powerful autonomous browser skill with wallet, email, session, and CAPTCHA-solving powers, but the artifacts do not show enough controls around those high-impact actions.

Install only in an isolated environment after reviewing the source. Do not use a personal wallet, main email account, or personal browser cookies unless you fully trust the code and have set strict limits. Prefer test wallets, limited API keys, localhost-only servers, disabled CAPTCHA solving, and regular cleanup of the data directory.

Findings (8)

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

A mistaken prompt, tool call, or compromised agent workflow could sign messages or transactions, or send funds from the configured wallet.

Why it was flagged

The skill exposes signing and payment primitives backed by a wallet private key, but the provided instructions do not describe human confirmation, spend limits, recipient allowlists, or dry-run safeguards.

Skill content
`sign(payload)` | Crypto signing ... `pay(recipient, amount, opts)` | Send ETH/ERC-20/x402 payments ... `PRIVATE_KEY=0x... # Wallet private key for signing/payments`
Recommendation

Use only a test or tightly capped wallet unless the skill adds explicit per-transaction confirmation, network and spend limits, recipient allowlists, and auditable logs.

What this means

The wallet key may be exposed more broadly than the caller expects, especially if other plugins, tools, or dependencies run in the same Node process.

Why it was flagged

A private key passed in options is moved into the process-wide environment, making it available to other code running in the same process.

Skill content
if (options.wallet?.privateKey) { process.env.PRIVATE_KEY = options.wallet.privateKey; }
Recommendation

Avoid process-wide private-key storage; pass keys only to the signing/payment code path, support hardware or delegated wallets, and document credential scope clearly.

What this means

Saved cookies can keep the agent logged into user accounts and may expose those accounts if the local data directory is read or reused unexpectedly.

Why it was flagged

Browser session cookies are loaded and saved to local JSON files for reuse across runs.

Skill content
const cookiePath = path.join(SESSIONS_DIR, `cookies-${domain}.json`); ... await context.addCookies(cookies); ... fs.writeFileSync(cookiePath, JSON.stringify(cookies, null, 2));
Recommendation

Make session persistence opt-in per site, encrypt or protect cookie storage, provide clear cleanup commands, and warn users not to import personal browser sessions unless necessary.

What this means

The agent may bypass anti-bot controls on third-party sites, which can violate site rules, trigger account bans, or enable abuse if misused.

Why it was flagged

The browser is configured to hide automation signals and automatically invokes CAPTCHA solving on page load.

Skill content
`--disable-blink-features=AutomationControlled` ... Object.defineProperty(navigator, 'webdriver', { get: () => false }); ... await autoSolveCaptcha(page);
Recommendation

Disable automatic CAPTCHA solving by default, require explicit user approval per site, and avoid using stealth automation where it is not authorized.

What this means

A hostile website could have a larger impact on the local machine than expected if a browser exploit occurs.

Why it was flagged

The skill browses arbitrary web pages with Chromium sandboxing disabled, reducing containment if a malicious page exploits the browser.

Skill content
chromium.launch({ headless: true, args: [ ... '--no-sandbox', '--disable-setuid-sandbox', ... ] })
Recommendation

Run the skill in a VM/container, remove no-sandbox flags where possible, and avoid browsing untrusted sites from a privileged local environment.

What this means

Sensitive form entries, account details, or prior instructions could be stored and later replayed or reused in the wrong context.

Why it was flagged

The skill persists and reuses interaction history and form data, but the provided instructions do not define redaction, retention, site boundaries, or review controls.

Skill content
Session recording — Record and replay all interactions ... Form memory — Auto-fill forms on repeat visits ... `persist(key, value)` / `recall(key)` | State memory
Recommendation

Use explicit opt-in memory, redact passwords and secrets, separate memories per site/account, add TTLs, and provide simple review/delete controls.

What this means

Other agents or inbound webhook events could become part of workflows that read email, use sessions, or trigger sensitive actions if the server is exposed or misconfigured.

Why it was flagged

The skill can bridge high-impact primitives to an MCP server and inbound webhooks, but the provided skill instructions do not describe identity checks, origin validation, or permission boundaries.

Skill content
MCP server — Expose all primitives as Claude Code tools ... Webhook server — Receive inbound email, GitHub events, Stripe hooks
Recommendation

Bind services to localhost by default, authenticate MCP/webhook clients, validate webhook signatures, and expose only the minimum needed tools.

What this means

The package may fail at runtime or may depend on code that was not included in the reviewed artifacts.

Why it was flagged

These imported site skill files are not present in the provided file manifest, leaving the reviewed runnable surface inconsistent with the code.

Skill content
import code4rena from './sites/code4rena.js'; import upwork from './sites/upwork.js'; import immunefi from './sites/immunefi.js';
Recommendation

Publish a complete, version-consistent package with a known source/homepage and ensure all imported files are included in the reviewed manifest.