#Error: Unsupported channel: whatsapp

1 messages · Page 1 of 1 (latest)

hot flickerBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

flint orioleBOT
#

That error happens before it even tries to do a QR login — it means your openclaw CLI doesn’t have a channel plugin registered under the id whatsapp, so channels login can’t resolve the string "whatsapp" to a known channel.

In a normal/current install, WhatsApp is supported and this works:

Most common reasons

  1. You’re on an older OpenClaw build (or an install from before WhatsApp was bundled/registered the way the docs expect).
  2. You’re running a different openclaw binary than you think (multiple installs via nvm/global npm/pnpm, Docker vs host, etc).

Quick checks (paste output)

which openclaw
openclaw --version
openclaw channels list
#

If openclaw channels list doesn’t show WhatsApp, upgrade/reinstall OpenClaw (and make sure you’re running the updated binary). After upgrading, retry:

openclaw channels login --channel whatsapp
# (some docs also show: openclaw channels login whatsapp)
sharp frost
#
totem@Totem:~/.openclaw$ which openclaw
/home/totem/.nvm/versions/node/v24.14.0/bin/openclaw
totem@Totem:~/.openclaw$ openclaw --version
OpenClaw 2026.3.12 (6472949)
totem@Totem:~/.openclaw$ openclaw channels list

🦞 OpenClaw 2026.3.12 (6472949) — I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.

Chat channels:
- Telegram default: configured, token=config, enabled

Auth providers (OAuth + API keys):
- openrouter:default (api_key)

│
â—‡  
Usage: no provider usage available.

Docs: gateway/configuration

I already upgraded OC, it's the updated version

flint orioleBOT
#

Your version is fine — what’s happening is plugin enablement, not an outdated CLI.

In 2026.3.x, most chat channels (including WhatsApp) ship as bundled plugins under openclaw/extensions/…, and bundled plugins start disabled by default. When the WhatsApp plugin is disabled, the CLI literally can’t resolve "whatsapp" as a known channel id, so you get:

Unsupported channel: whatsapp

That matches your openclaw channels list output too: you only have Telegram enabled/configured right now.

Fix

Enable the bundled WhatsApp plugin, then re-run login:

openclaw plugins enable whatsapp
openclaw channels login --channel whatsapp --verbose

(Optional sanity checks)

sharp frost
#

ok it works now, ive paired OC with my whatsapp, how do I speak to my bot thru whatsapp now?

flint orioleBOT
#

Now that the QR/device link works, you “talk to the bot” by just sending WhatsApp messages to the linked WhatsApp account — but whether OpenClaw will answer depends on your DM policy.

1) Make sure the Gateway is running

If the gateway/service isn’t running, nothing will reply.

2) DM the linked WhatsApp account from your phone

  • If you paired a separate bot number: message that number.
  • If you paired your personal number: use WhatsApp’s “Message yourself” chat (self-chat).

3) If you left the default dmPolicy: "pairing" (common)

Your first DM won’t get a reply yet. It creates a pairing request that you must approve on the gateway host:

openclaw pairing list whatsapp
openclaw pairing approve whatsapp <CODE>
#

If you tell me whether you paired a separate number or your personal number, I can tell you the cleanest config for that setup.

sharp frost
#

I have created a group within whatsapp and invited someone else (and me, which is the bot) and i'm trying to get it to answer without mention

 openclaw config set channels.whatsapp.requireMention false

🦞 OpenClaw 2026.3.12 (6472949) — I'm the assistant your terminal demanded, not the one your sleep schedule requested.

Error: Config validation failed: channels.whatsapp: Unrecognized key: "requireMention"
flint orioleBOT
#

requireMention isn’t a top-level WhatsApp key. It’s a per-group setting under channels.whatsapp.groups.

If you want “no mention required” for all WhatsApp groups, set the wildcard group config:

openclaw config set 'channels.whatsapp.groups["*"].requireMention' false --strict-json
# then restart the gateway

If you only want it for one specific group, use that group’s JID instead of "*" (it looks like 1234567890@g.us):

openclaw config set 'channels.whatsapp.groups["1234567890@g.us"].requireMention' false --strict-json

Important: turning off mention-gating doesn’t bypass sender auth. If you want your friend to be able to trigger it too, make sure your group policy/allowlist allows them (e.g. groupPolicy + groupAllowFrom), otherwise their messages will still be silently ignored.

sharp frost
#

ok it works. But for some reason I cannot invoke a skill in my whatsapp group. I tried /skill my-skill and the bot says it does have a skill named "my-skill" it its current configuration

flint orioleBOT
#

WhatsApp groups can run skills — that error is almost always “the Gateway can’t see (or enable) that skill”, not a WhatsApp limitation.

Things to check:

1) Is the skill actually loaded + eligible on the gateway?

On the gateway host, run:

openclaw skills list
openclaw skills list --eligible
openclaw skills info my-skill
openclaw skills check

If it’s not eligible, skills check/info will usually tell you why (missing env var, missing binary, missing required config, etc).

2) Is it in the right place?

#

OpenClaw only loads skills from (highest → lowest precedence):

  • <workspace>/skills/<skill>/SKILL.md (per-agent)
  • ~/.openclaw/skills/<skill>/SKILL.md (shared)
  • bundled skills

If you installed it into some random ./skills folder outside the active workspace, the gateway won’t pick it up.

3) Name mismatch / sanitization

The /skill <name> argument matches the skill frontmatter name:. Also, command names get sanitized (my-skill often becomes my_skill). Try both:

  • /skill my-skill
  • /skill my_skill

4) You may need a new session after installing skills

Skills added to the workspace are typically picked up “next session”. In the WhatsApp group, send:

#
  • /reset (or /new)

If you paste the output of openclaw skills info my-skill (and where the skill folder lives), I can tell you exactly what’s missing.

sharp frost
#

you're right, the skill does not appear in the skills list. How do I recreated it properly?

flint orioleBOT
#

To make a skill show up in openclaw skills list, it needs to be in a recognized skills directory and have a valid SKILL.md with YAML frontmatter.

Quick “known-good” way (shared skill, works for all agents)

  1. Create the skill folder:
mkdir -p ~/.openclaw/skills/my_skill
  1. Create ~/.openclaw/skills/my_skill/SKILL.md:
---
name: my_skill
description: Describe what this skill does in one line.
user-invocable: true
#
---

# My Skill

When the user runs `/skill my_skill`, do the thing.
Be explicit about which tools to use and what output to produce.
  1. Verify OpenClaw sees it:
openclaw skills list | rg my_skill
openclaw skills info my_skill
  1. Restart / refresh:
#
  • Restart the gateway (however you run it), or start a new chat session (/reset in WhatsApp).

Then in WhatsApp:

  • /skill my_skill

Common gotchas

  • File must be named exactly SKILL.md (caps).
  • Frontmatter must include at least name: + description:.
  • Prefer name with a-z0-9_ (underscores). Hyphens often lead to “I typed the wrong name” confusion.

Docs: https://docs.openclaw.ai/tools/creating-skills and https://docs.openclaw.ai/tools/skills

If you tell me where you originally created the skill (path) I can point out why it wasn’t being picked up.

sharp frost
#

ok it's working. But on another hand something weird is happening. here is my config

    "whatsapp": {
      "enabled": true,
      "dmPolicy": "pairing",
      "groupPolicy": "open",
      "debounceMs": 0,
      "mediaMaxMb": 50,
      "groups": {
        "xxx@g.us": {
          "requireMention": false
        }
      }
    },

it works but then I noticed that when someone sent me a private message on whatsapp I received this in the same conversation

OpenClaw: access not configured.

Your WhatsApp phone number: +33xxx (phone number of the person that sent the message)

Pairing code: xxxx

Ask the bot owner to approve with:
openclaw pairing approve whatsapp xxx

how come?

flint orioleBOT
#

That’s the DM pairing flow doing exactly what you configured.

  • You have: dmPolicy: "pairing"
  • So any new/unknown sender who DMs the bot’s WhatsApp account gets an automatic reply with a pairing code, and their message is not processed until you approve them.

That pairing message is sent in the same DM chat with that person (because the bot is logged into that WhatsApp account and is replying there).

What to do (pick what you want)

A) You actually want that person to be able to DM the bot
Approve the code you saw:

openclaw pairing approve whatsapp <CODE>
# (or: openclaw pairing list whatsapp)
#

B) You do NOT want the bot replying to random DMs (common if this is your personal number)
Switch DMs to allowlist (or disable DMs), so strangers don’t get pairing prompts:

{
  channels: {
    whatsapp: {
      dmPolicy: "allowlist",
      allowFrom: ["+YOUR_NUMBER"]
      // or dmPolicy: "disabled"
    }
  }
}

Docs:

#

If you tell me whether this WhatsApp account is your personal number or a dedicated bot number, I’ll suggest the safest/least-annoying DM settings.

sharp frost
#

what if I only want the bot to answer if its inside a group (ie the one I created and that I have the id)

flint orioleBOT
#

Set DMs to disabled and allowlist the one group.

Minimal config (only respond in that group, ignore all WhatsApp DMs):

{
  channels: {
    whatsapp: {
      enabled: true,

      // âś… no bot replies in private chats
      dmPolicy: "disabled",

      // âś… group handling
      groupPolicy: "open", // anyone in the allowed group can trigger
      groups: {
#
        "xxx@g.us": {
          requireMention: false, // optional: reply without @mention
        },
      },
    },
  },
}

If you don’t want “anyone in the group can trigger”, switch to allowlist mode:

{
  channels: {
    whatsapp: {
#
      dmPolicy: "disabled",
      groupPolicy: "allowlist",
      groupAllowFrom: ["+33...your_number", "+33...friend_number"],
      groups: { "xxx@g.us": { requireMention: false } },
    },
  },
}

Restart the gateway after changing config.

sharp frost
#

Ok, will I be able to speak to it myself inside the "chat with myself" still? also, with the dmPolicy disabled, are my conversations with my contacts private?

flint orioleBOT
#

If you set dmPolicy: "disabled":

1) Can you still talk to it in “chat with myself”?

No — self-chat is a DM, and dmPolicy: "disabled" means all inbound WhatsApp DMs are ignored (including “message yourself”).

If you want group-only + still allow self-chat, use allowlist instead of disabled:

{
  channels: {
    whatsapp: {
      dmPolicy: "allowlist",
      allowFrom: ["+33...YOUR_NUMBER"],
      selfChatMode: true, // recommended if this is your personal WA number
      groupPolicy: "open",
      groups: { "xxx@g.us": { requireMention: false } },
#
    },
  },
}

That way: you can DM yourself, but everyone else’s DMs get silently dropped (no pairing prompt, no bot reply).

2) With DMs disabled, are your chats with contacts “private”?

They’re private in the sense that OpenClaw will not process them / send them to the model / continue a session (it should drop them at the policy gate).

But: because you linked WhatsApp Web, the Gateway is effectively a linked device on your account — it receives the message events. So for “I don’t even want my bot host to be able to see my personal chats”, the real answer is: use a dedicated WhatsApp number for the bot (best practice), or don’t run the WhatsApp channel on your personal account.

sharp frost
#

what is selfChatMode used for? should I set it to true AND allowFrom with my number and allowList as dmPolicy? what if I only set selfChatMode without the allowFrom or vice versa?

about the privacy thing: that means every messages I receive on whatsapp goes to the gateway but they stop there? my current setup is a local machine so it says private or does it go somehow to the llm provider or something like that?

flint orioleBOT
#

What selfChatMode is for

channels.whatsapp.selfChatMode is not an access-control switch. It’s a set of safety/UX tweaks for the “I paired OpenClaw to my personal WhatsApp number” scenario, mainly to avoid weird self-chat edge cases:

  • skips read receipts for self-chat turns
  • avoids some “mention”/identity behaviors that can get weird when you are the bot
  • adjusts default response prefix in self-chat if you didn’t set one

So: it doesn’t grant permission by itself — it just changes behavior when the chat is with yourself / your own number.

Should you set selfChatMode: true + dmPolicy: "allowlist" + allowFrom: ["+your#"]?

If you want only you to be able to DM the bot (including “chat with myself”), then yes, that’s the cleanest, most predictable setup:

channels: {
  whatsapp: {
    dmPolicy: "allowlist",
#
    allowFrom: ["+33...YOUR_NUMBER"],
    selfChatMode: true,
  }
}
  • Only selfChatMode without allowFrom: does not reliably “open” access; it just enables the self-chat safeguards.
  • Only allowFrom without selfChatMode: access works, but on a personal-number setup you may hit more annoying self-chat behavior. (It’s fine on a dedicated bot number.)

Privacy / “does it go to the LLM provider?”

Because WhatsApp Web linking makes the Gateway a linked device, the Gateway process will still receive message events for that WhatsApp account.

But whether anything leaves your machine depends on policy:

  • If a DM is blocked (dmPolicy: "disabled" or allowlist doesn’t match), OpenClaw should drop it at the access gate → no model call (so nothing is sent to OpenAI/Anthropic/etc) and it shouldn’t be written into your chat session history.
  • If a message is allowed (your allowlist, paired sender, or allowed group), then it will be processed, which typically means it will be sent to whatever LLM provider you configured.