OpenClaw WhatsApp

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.

ConcernMedium Confidence
ASI05: Unexpected Code Execution
What this means

A maliciously crafted WhatsApp name or message could potentially alter the local command invocation if the bridge runs this through a shell or weak command parser.

Why it was flagged

The documented command template places WhatsApp-supplied name/message values into a shell-style command string. The bridge executor code is not provided, so safe escaping cannot be verified.

Skill content
agent: mode: "command"; command: "/usr/local/bin/wa-notify.sh '{name}' '{message}' '{chat_jid}' '{message_id}'"
Recommendation

Use an argument-vector, JSON/stdin handoff, or strict placeholder escaping; review the bridge binary/source before enabling command mode.

ConcernHigh Confidence
ASI01: Agent Goal Hijack
What this means

A remote WhatsApp sender can try to prompt-inject the auto-reply agent into ignoring instructions, sending unintended replies, or using available tools.

Why it was flagged

Untrusted WhatsApp messages and chat history are inserted into the prompt sent to the main OpenClaw agent.

Skill content
Latest incoming message:
"$msg"
...
timeout 45s openclaw agent --agent main --session-id "$sid" --message "$prompt"
Recommendation

Treat inbound messages as untrusted data, use a restricted no-tools reply agent, and require approval for anything beyond a simple reply.

What this means

Remote contacts could cause the agent to send WhatsApp replies or, if configured, perform calendar or messaging actions in connected services.

Why it was flagged

The documented workflow lets inbound WhatsApp messages drive agent actions, and the customization example encourages external account/tool mutations without showing per-action approval.

Skill content
WhatsApp DM → Bridge → wa-notify-worker.sh ... → openclaw agent ... → openclaw-whatsapp send <JID> <reply>; Book via: mcporter call composio.GOOGLECALENDAR_CREATE_EVENT ... Notify team via: message action=send channel=telegram ...
Recommendation

Default to an allowlist, disable unrelated tools for the WhatsApp agent, and require user confirmation for calendar, team-message, payment, or other account mutations.

What this means

The skill can act through the linked WhatsApp identity and may respond to anyone who DMs the account by default.

Why it was flagged

QR pairing delegates a WhatsApp account to the bridge, and the documented allowlist behavior means auto-replies can cover all DMs unless the user restricts it.

Skill content
Open QR page: `http://localhost:8555/qr` ... WhatsApp → Settings → Linked Devices → Link a Device ... allowlist: ["971586971337"]  # only these (empty = all)
Recommendation

Use a dedicated WhatsApp account if possible, configure a strict allowlist before enabling auto-reply, and know how to stop the service and unlink the device.

What this means

Running this command executes whatever code is served from that URL at install time.

Why it was flagged

The setup uses an unpinned remote installer from a mutable GitHub branch, and that installer is not included in the reviewed artifacts.

Skill content
curl -fsSL https://raw.githubusercontent.com/0xs4m1337/openclaw-whatsapp/main/install.sh | bash
Recommendation

Review the installer first, pin to a trusted commit or release, and prefer a packaged install with checksums.

What this means

Sensitive chat content and agent instructions may remain on disk and could be readable by other local users or processes depending on system permissions.

Why it was flagged

The relay queues WhatsApp message content, JIDs, message IDs, and the system prompt in a /tmp directory by default without explicit private permissions or retention controls.

Skill content
DATA_DIR="${OC_WA_AGENT_DATA_DIR:-/tmp/openclaw-wa-agent}" ... "message": msg, "jid": jid, "message_id": message_id, "system_prompt": system_prompt
Recommendation

Set OC_WA_AGENT_DATA_DIR to a private directory, chmod the directory/files to 700/600, and add retention/cleanup for queues and logs.

What this means

This is expected bridge plumbing, but any local process able to reach the API may be able to interact with sensitive WhatsApp functions if the implementation has no auth.

Why it was flagged

The documented local API exposes WhatsApp send, message-search, and contact-list operations; the reference does not describe an authentication token or caller boundary.

Skill content
Base URL: `http://localhost:8555`; POST /send/text; GET /messages/search?q=keyword; GET /contacts
Recommendation

Keep the service bound to localhost, add an auth token if supported, and avoid exposing port 8555 beyond the local machine.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

The WhatsApp bridge and auto-reply behavior can continue running after setup until the user stops, disables, or unlinks it.

Why it was flagged

The skill clearly documents a persistent user service that restarts automatically.

Skill content
ExecStart=/usr/local/bin/openclaw-whatsapp start -c %h/.openclaw-whatsapp/config.yaml; Restart=always; systemctl --user enable openclaw-whatsapp.service
Recommendation

Only enable the service if continuous operation is intended; document stop/disable/logout steps for users.