Skip to content
WhatsApp·6 min read·English

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.

Tag Claude in WhatsApp: the install guide

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

  1. 01.What it does
  2. 02.How it works
  3. 03.What you need
  4. 04.The short way: Claude Code installs it
  5. 05.Two ways to connect to WhatsApp
  6. 06.Manual install without Docker
  7. 07.The first test
  8. 08.What to ask it
  9. 09.Safety
  10. 10.What it does not do
PART 01

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:

Copy
@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 sending

Most 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.

PART 02

How it works

  1. Every two seconds a small server on your computer checks the newest messages you sent.
  2. A message that starts with @claude becomes a task. If you swipe-replied to a message, its text goes along as context.
  3. It starts Claude Code with five tools: find a chat, read a chat, send, ask for approval, and delete your message.
  4. 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.

PART 03

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.
PART 04

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.

Copy
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.
Open the code on GitHub

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:

Copy
claude setup-token

Second, 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.

PART 05

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.
PART 06

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:

Copy
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 pair

The 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:

Copy
sh -c '. ~/.config/whatsapp-claude-tag/env.sh; node src/cli.mjs check'
deploy/install-launchd.sh

Every line of the check must start with ok. For Linux, the install guide has a ready service file.

PART 07

The first test

Open your chat with yourself in WhatsApp and send:

Copy
@claude what day is it today? one line

The 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:

Copy
@claude summarize today's messages here and send it to me privately

No answer? In order:

  1. Run the check, node src/cli.mjs check, from the tool's folder. Every line must start with ok.
  2. A line saying the number is not connected: the phone unlinked the device. Pair again with node src/cli.mjs pair.
  3. A line saying Claude is not logged in: the token is missing. Go back to claude setup-token.
  4. All ok and still silent: the service is not running. The log at ~/Library/Logs/whatsapp-claude-tag/out.log should have a watching line per number.
PART 08

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 yes or no. What you approved is exactly what goes out.
  • Clean up after it. "then delete this message" deletes your @claude message 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.

PART 09

Safety

  • Only your messages trigger it. Someone else in a group who types @claude gets 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.
PART 10

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.

@danielthegoldman
Daniel Goldman

AI-native products, workshops, and automations. Built from everywhere.

© 2026 Daniel Goldman