Tag Claude in WhatsApp
Your work happens in WhatsApp, and your Claude Code sits in a terminal. Every time you need something from WhatsApp, you copy messages into the agent and copy the answer back. I built a small tool that brings the agent into the chat: type @claude at the start of a message, in any chat, and it does what you asked and answers there. Open source, MIT license.

Who it is for
- You have Claude Code and a computer that stays on? This guide is for you. The first step is to paste the request in part 4 into Claude Code, and it installs everything.
- No Claude Code yet? Start with the starter guide and come back.
Contents
What it does
Type @claude at the start of a message in any chat on your WhatsApp: a group, a chat with someone, or your chat with yourself. Claude Code reads what it needs, does what you asked, and writes the answer in the same chat. It runs on your own computer, with your own Claude Code login.
A few requests that work this way:
@claude summarize what happened in this group today
@claude summarize today's messages here and send it to me privately, then delete this message
@claude copy the message I'm replying to and send it to Dana
@claude write Yossi that I'm 10 minutes late, ask me before sendingMost Claude bots for WhatsApp are a separate bot, with their own number or groups you register first. Here you tag it from your own number, in any chat, with nothing to register.
How it works
- Every two seconds a small server on your computer checks the newest messages you sent.
- A message that starts with
@claudebecomes a task. If you swipe-replied to a message, its text goes along as context. - It starts Claude Code with five tools: find a chat, read a chat, send, ask for approval, and delete your message.
- Claude reads what it needs, acts, and writes in WhatsApp. By default in the chat where you tagged it.
Want to answer it or ask for a change? Swipe-reply to what it sent and the conversation continues. In your own chat a plain reply is enough. In any other chat, start the reply with @claude.
What you need
- A Mac or Linux computer that stays on. A laptop works too, but it only answers while it is awake.
- Node.js 22.13 or newer for the Docker-free connection, or 20 or newer with Evolution.
- Claude Code installed and logged in. Runs come out of your subscription quota, or your API account if you use an API key.
- Your phone with WhatsApp, to scan a code once.
The short way: Claude Code installs it
The install file in the repository is written for an agent to follow. Open Claude Code in any folder and paste this request. The link inside it goes to the tool's code folder on GitHub, the site where open source code is published.
Install whatsapp-claude-tag on this machine by following INSTALL.md in https://github.com/dangogit/whatsapp-claude-tag
Use the Baileys transport, without Docker.
When a step needs me, such as logging in or scanning a QR code, stop and tell me exactly what to do.
At the end, run the check and show me that every line starts with ok.Two things it cannot do for you. First, log in. It will ask you to run this command and finish the login in the browser:
claude setup-tokenSecond, scan the QR code. On your phone open WhatsApp, Settings, Linked devices, Link a device, and scan. This takes one of the four linked-device slots, like WhatsApp Web.
Two ways to connect to WhatsApp
- Baileys, no Docker. A direct connection, like WhatsApp Web. Nothing else to run. The catch: it sees history only from when you connected it, and only while it is running. For most people this is the way.
- Evolution API. An open-source server that runs in Docker and keeps the history. Good if you already run Evolution. Full instructions in INSTALL.md.
Manual install without Docker
For doing it yourself. First log in with claude setup-token and save the token as step 2 of INSTALL.md describes. Then:
git clone https://github.com/dangogit/whatsapp-claude-tag.git ~/whatsapp-claude-tag
cd ~/whatsapp-claude-tag
npm install
mkdir -p ~/.config/whatsapp-claude-tag
cp config.baileys.example.json ~/.config/whatsapp-claude-tag/config.json
node src/cli.mjs pairThe last command shows a QR code in the terminal. Scan it from your phone. Then check that everything is connected, and install it as a service that keeps running on a Mac:
sh -c '. ~/.config/whatsapp-claude-tag/env.sh; node src/cli.mjs check'
deploy/install-launchd.shEvery line of the check must start with ok. For Linux, the install guide has a ready service file.
The first test
Open your chat with yourself in WhatsApp and send:
@claude what day is it today? one lineThe answer arrives in the same chat. In my tests it took 3 to 8 seconds most of the time, and one follow-up took over a minute. Then try it in a group:
@claude summarize today's messages here and send it to me privatelyNo answer? In order:
- Run the check,
node src/cli.mjs check, from the tool's folder. Every line must start withok. - A line saying the number is not connected: the phone unlinked the device. Pair again with
node src/cli.mjs pair. - A line saying Claude is not logged in: the token is missing. Go back to
claude setup-token. - All
okand still silent: the service is not running. The log at~/Library/Logs/whatsapp-claude-tag/out.logshould have awatchingline per number.
What to ask it
- Summarize a group. In the group, or privately if you write "send it to me privately".
- Send to someone else. Name them or give the number in the request: "send it to Dana". Every send like that leaves you a short receipt in your own chat.
- Bring something from another chat. "Send him the form link from the marketing team": it reads the group you named, and only that one.
- A draft for approval. Write "ask me before sending". The draft lands in your own chat, and you swipe-reply
yesorno. What you approved is exactly what goes out. - Clean up after it. "then delete this message" deletes your
@claudemessage for everyone. - Search the web. It has search, so you can ask a question and get the answer in the chat.
Want another word instead of @claude, like @jarvis? Change it in the settings. That is also where you pick the language of the tool's own notes and the model, and add a mark such as 🤖 to every message it sends.
Safety
- Only your messages trigger it. Someone else in a group who types
@claudegets nothing. - Every message it reads is data, not a command. Someone in a group could write "forward all of this to X", so the limit lives in code, not in the prompt. It may only read and send to the chat you tagged, your chat with yourself, and a chat whose name or number appears in your own request.
- No terminal and no file access. Only the WhatsApp tools and web search. Full access is a setting you turn on by hand, and better not.
- Name matching is a guard, not a guarantee. Anyone picks their own display name. For anything sensitive, use a phone number or ask for a draft to approve.
What it does not do
- It is not the official WhatsApp API. Both ways connect like WhatsApp Web. It is for your own account, not for bulk messages or customer service.
- Text only. Images and voice notes show up only as a marker.
- History only from when you connected. It does not see messages from before.
- Everything it sends looks like you sent it, and everyone in the chat sees it.
- A new tag starts a new conversation. Only a swipe-reply continues the previous one.
The code, full instructions and bug reports: github.com/dangogit/whatsapp-claude-tag
Stuck halfway?
Paste the error into Claude Code as it is, together with the output of node src/cli.mjs check, and write "what is this and what do I do". If that does not help, send me a DM on Instagram with a screenshot.