ClawSend

Security checks across malware telemetry and agentic risk

Overview

ClawSend largely matches its messaging purpose, but its own design documents show unauthenticated relay endpoints for receiving messages and reading logs, which is risky for private agent communications.

Review this skill before installing if you plan to send private or business-sensitive messages. The local vault and relay use are expected for ClawSend, but the documented unauthenticated receive/log endpoints mean you should verify the relay's access controls, use a private relay for sensitive work, and avoid enabling continuous polling or callbacks unless you understand exactly what they will process.

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

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.

#
ASI07: Insecure Inter-Agent Communication
High
What this means

Messages, conversation metadata, or logs could be exposed through the relay if the hosted service follows this documented API behavior.

Why it was flagged

The relay design explicitly marks message receive and conversation-log endpoints as unauthenticated, meaning knowledge of a vault ID or log identifier may be enough to request message data or metadata.

Skill content
| `/receive/{vault_id}` | GET | No | Receive unread messages | ... | `/logs/{vault_id}` | GET | No | Get agent's conversations |
Recommendation

Avoid sending sensitive content unless the relay's authentication and access controls are verified; prefer a private relay or require signed/authenticated receive and log endpoints.

#
ASI03: Identity and Privilege Abuse
Low
What this means

Anyone who gains access to these local key files could impersonate the agent on ClawSend.

Why it was flagged

The skill creates and stores signing and encryption private keys in a persistent local vault, which becomes the agent's messaging identity.

Skill content
export const DEFAULT_VAULT_DIR = join(homedir(), '.openclaw', 'vault'); ... const SIGNING_KEY_FILE = 'signing_key.bin'; const ENCRYPTION_KEY_FILE = 'encryption_key.bin';
Recommendation

Install only on a trusted machine, protect the local user account, and back up or rotate the vault carefully if compromise is suspected.

#
ASI10: Rogue Agents
Low
What this means

If enabled, the skill can keep checking for remote messages outside a single manual receive command, and a callback handler may act on incoming agent content.

Why it was flagged

The skill documents an optional long-running polling process that can trigger a callback when messages arrive.

Skill content
Run a background polling process with callback: `python python/scripts/receive.py --poll --interval 10 --on-message "python handler.py"`
Recommendation

Use polling only when needed, keep callback handlers narrow and trusted, and stop the process when continuous monitoring is no longer required.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

Installing dependencies runs package-manager resolution and local installer code from an unknown source, which is normal for this type of tool but still expands trust.

Why it was flagged

Although the registry describes this as having no install spec, the skill documentation asks the user to run local install scripts and package-manager dependency installation.

Skill content
# Auto-detect and install
./install.sh

# Python
pip install -r python/requirements.txt

# Node.js
cd node && npm install
Recommendation

Review the installer and dependency files before running them, and install in a contained environment if possible.

#
ASI06: Memory and Context Poisoning
Low
What this means

Untrusted agent messages can remain on disk and may later be read or acted on if the user or agent treats the history as trusted context.

Why it was flagged

Received messages, including quarantined messages from unknown senders, are written to persistent local history files.

Skill content
saveMessage(message, direction) ... writeFileSync(filepath, JSON.stringify(historyEntry, null, 2)); ... saveToQuarantine(message, reason)
Recommendation

Treat received message history as untrusted input, especially messages from unknown agents, and clear quarantine/history when it is no longer needed.