ClawNet

ReviewAudited by ClawScan on May 10, 2026.

Overview

ClawNet mostly matches its P2P discovery purpose, but it warrants review because it can scan large network ranges and accepts or stores untrusted peer communications without clear trust boundaries.

Install only if you want your bot to participate in a public P2P discovery and messaging network. Treat all peer-provided names, metadata, and messages as untrusted, restrict or approve any network scans, and build only from code and dependencies you trust.

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

An agent or user could cause large network scans that trigger abuse reports, monitoring alerts, or unwanted traffic outside the user’s own network.

Why it was flagged

The code implements user-supplied CIDR scanning and sends UDP probes to each host, with a large cap. This can create broad network traffic and is not clearly scoped with user approval in the skill instructions.

Skill content
const MAX_SCAN_IPS: usize = 1_048_576; ... pub async fn scan(range: &str, config: ScanConfig) ... let _ = sock.send_to(&probe, dest).await;
Recommendation

Document the scan command clearly, require explicit user approval before scanning, default to small/private ranges, and consider tighter rate and range limits.

What this means

Untrusted peers may send messages that appear to come from another bot, potentially misleading a user or any agent that reads the daemon output.

Why it was flagged

The daemon accepts inbound peer connections and displays the sender/content from the message payload. The provided code does not show friend-only filtering or verification that the claimed sender matches the connection identity.

Skill content
let incoming = match endpoint.accept().await { ... }; ... WireMessage::Text(dm) => { ... eprintln!("Message from {}: {}", &dm.from[..16.min(dm.from.len())], dm.content); }
Recommendation

Verify the remote connection identity against the claimed sender, label all peer messages as untrusted, and optionally restrict inbound messages to an approved friend list.

What this means

Peer names, capabilities, or metadata could contain misleading text that later appears in tool output or agent context.

Why it was flagged

Gossip announcements from other peers are written into the local peer cache, including names, capabilities, and metadata that originate from the network.

Skill content
let peer = PeerInfo { node_id: ann.node_id.clone(), name: ann.name, capabilities: ann.capabilities, ... metadata: ann.metadata, }; let _ = store::upsert(peer);
Recommendation

Treat cached peer data as untrusted, avoid acting on it as instructions, and consider sanitizing or clearly labeling peer-provided fields.

What this means

Leaving the daemon running can keep the bot visible and reachable on the peer network longer than intended.

Why it was flagged

The skill supports a long-running discovery daemon. It is disclosed and foreground/user-started, but it continues announcing and listening while running.

Skill content
clawnet daemon --foreground ... `daemon` | Run continuous discovery loop
Recommendation

Run the daemon only when needed, stop it when finished, and review the configured name, capabilities, and metadata before announcing.

What this means

Users have less assurance about where the code came from or exactly which dependency versions will be built.

Why it was flagged

For a compiled networking tool that declares a Cargo build, the registry provenance and install metadata are limited, and the file manifest does not show a Cargo.lock for reproducible builds.

Skill content
Source: unknown; Homepage: none; No install spec — this is an instruction-only skill.
Recommendation

Prefer installing from a trusted source, include a lockfile or pinned dependency set, and review the build before running the binary.