Safety-first WhatsApp tools: draft-gated sends, enforced rate limits, append-only audit.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Personal WhatsApp automation CLI + daemon, written in Go.
A hexagonal Go daemon that owns a WhatsApp Multi-Device session and a thin JSON-RPC client that talks to it β safe enough to let a language model send messages on your behalf, crash-safe enough to survive a power loss mid-migration, and paranoid enough to refuse every destructive flag you might expect.
Quickstart Β· Install Β· Manual Β· Architecture Β· Security Β· Contributing Β· PortuguΓͺs (BR)
Pattern. Persistent WhatsApp daemon over a Unix socket β one wad process holds the Multi-Device session, ratchet store, and websocket; a thin wa JSON-RPC client invokes it.
Trade-off. ~30 MB RSS per profile and a 5β8 s cold connect, in exchange for sub-second warm-call latency on every subsequent wa send. Per-call session reattachment is avoided entirely.
Use when. A shell pipeline, cron job, or Claude Code plugin needs to dispatch WhatsApp messages with predictable latency and a non-overridable safety pipeline (default-deny allowlist + rate limiter + warmup ramp + append-only audit log) sitting below every RPC path.

Every frame is real output from the binaries in this repo, recorded against a
throwaway unpaired daemon in a temp directory β which is why doctor shows one
honest WARN and no JID, phone number, or session data appears anywhere.
The recording is generated, never hand-edited. The source of truth is the
plain-text docs/assets/wa-demo.tape; regenerate
the GIF from a clean checkout with one command:
wa comparesClosest peers in the reverse-engineered-WhatsApp ecosystem:
| Capability | wa (this repo) | whatsmeow direct | whatsapp-web-cli |
|---|---|---|---|
| Persistent daemon (sub-second warm-call) | yes | no (per-call session attach) | no (browser-driven) |
| JSON-RPC over Unix socket | yes | n/a (library, not a daemon) | no (Chrome bridge) |
| Default-deny allowlist (per-action) | yes | manual implementation | no |
| Non-overridable limiter (2/sec + 30/min) | yes | manual implementation | no |
| Warmup ramp for fresh sessions | yes | manual implementation | no |
| Append-only JSON-Lines audit log | yes | manual implementation | no |
| SLSA L2 + Sigstore signed releases | yes | n/a | no |
| Dual SBOM (CycloneDX 1.6 + SPDX 2.3) | yes | n/a | no |
CGO_ENABLED=0 static binary | yes | depends on consumer | no (browser-driven) |
| Inbound prompt-injection firewall | yes | n/a | no |
For multi-tenant REST gateways see EvolutionAPI or WAHA β different shape of problem, listed in What this is NOT.
Two binaries, one repo:
wad β long-running daemon that owns the WhatsApp session, the SQLite ratchet store, and the websocket to web.whatsapp.com. Runs under systemd (Linux), launchd (macOS), or a NixOS module. Single-instance per profile, never as root.wa β thin JSON-RPC client that speaks to wad over a unix socket. This is what shell scripts, cron jobs, and Claude Code plugins actually invoke.It is built on go.mau.fi/whatsmeow β the library that powers mautrix-whatsapp at production scale β because it is the only reverse-engineered WhatsApp library actively maintained in 2026. It also ships a safety-first MCP server (wa mcp serve) so an AI agent drives WhatsApp through the same non-bypassable safety pipeline β draft-gated by default. See MCP server.
--force flag anywhere.wa install is scoped to one person, with optional multi-profile isolation for work/personal splits.mautrix-whatsapp if that's what you want.EvolutionAPI or WAHA if that's what you want.whatsmeow.The recipient flag is spelled --to, --jid, or --group depending on the command; --chat <jid> is accepted as a universal alias on all of them (the original flags still work).
For the full tour including multi-profile setup, shell completion, migration, and the audit log, see docs/manual.md.
wa mcp serve exposes the daemon to AI agents over the Model Context Protocol (stdio transport). Every tool call runs through the same non-bypassable safety pipeline as the CLI β default-deny allowlist, enforced short-window limits (2/second with burst 2; 30/minute with burst 30; no daily ordinary-send cap) with warmup, and an append-only audit log. Sends default to draft mode: the model proposes a message into a human-review queue and nothing leaves until you run wa draft approve. That draft-gate is the point β it is what makes handing WhatsApp to an autonomous agent safe.
Live on the official MCP Registry as io.github.yolo-labz/wa; one-click install via the signed .mcpb bundle on each release, or wire it manually into Claude Desktop/Code or Cursor:
Tools (12):
| Tool | Purpose |
|---|---|
wa_send_message | Send (or draft) a message through the safety pipeline |
wa_send_media | Send (or draft) a media file |
wa_schedule_message | Schedule a send for later (drafts respected) |
wa_draft_review | List pending drafts awaiting human approval |
wa_search_messages | Full-text search across synced messages |
wa_get_thread | Fetch recent messages of one chat |
wa_list_chats | List chats with recent activity |
wa_resolve_contact | Resolve a name/phone to a JID |
wa_group_info | Group metadata and participants |
wa_wait_for_reply | Block until a matching inbound event arrives |
wa_transcribe_voice | Transcribe a voice note |
wa_status | Daemon connection and session status |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/wa-safe-whatsapp-automation)<a href="https://allmcps.com/mcp/wa-safe-whatsapp-automation"><img src="https://allmcps.com/api/badge/wa-safe-whatsapp-automation?style=directory" alt="Wa β safe WhatsApp automation on AllMCPs" /></a>