#Using 2 agents (not sub-agents). Using WhatsApp "selfChatMode" true

1 messages · Page 1 of 1 (latest)

bitter mantle
#

Is there a way to silent an agent if I don't mention it? I want no "ack" at all, unless I explicitly call it.
Here is an example of a behavior I want to avoid:
Me: (at)Agent1, change your emoji.
[openclaw] Agent1 replies....
[openclaw] Agent2 replies...

I'm using broadcast.strategy:parallel. I'm also using whatsapp.groups.*.requireMention true, but it has no effect.

zealous waveBOT
#

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

silent marshBOT
#

With Broadcast Groups (broadcast: { <peerId>: ["agent1","agent2"] }) the behavior you’re seeing is currently expected: once a message is eligible to be processed in that peer, OpenClaw will run all agents in the broadcast list. There isn’t (yet) a config knob like “only run the agent that was mentioned”.

Two important clarifications for your setup:

  1. requireMention only applies to WhatsApp groups, not DMs/self-chat
    If you’re using WhatsApp with selfChatMode: true, that’s a direct chat, so channels.whatsapp.groups.*.requireMention will have no effect.

  2. Make sure the config path is correct: it’s under channels.whatsapp.groups
    Not whatsapp.groups.... Example from the config reference:

{
  channels: {
    whatsapp: {
      groups: { "*": { requireMention: true } }
    }
  }
#
}

Docs: https://docs.openclaw.ai/gateway/configuration-reference#whatsapp

Practical workaround: make the “other” agent return NO_REPLY

If your goal is “Agent2 produces no visible ack unless explicitly called”, the simplest workaround is to tell Agent2 to respond with exactly NO_REPLY unless it sees its own call-sign in the message text.

Put something like this in Agent2’s AGENTS.md / system prompt:

You are Agent2. Only respond when the user explicitly addresses you with @Agent2 (or Agent2:). If not addressed, respond with ONLY: NO_REPLY.

Then you message in WhatsApp like:

  • @Agent1 change your emoji → Agent1 replies, Agent2 sends nothing.

This won’t stop Agent2 from running (so it can still cost tokens), but it will stop the extra chat message.

#

Relevant docs:

If you need “Agent2 shouldn’t even run unless mentioned”

That’s not supported with Broadcast Groups right now. The only way today is to not use broadcast for that peer and instead:

  • route the chat to a single “router” agent (bindings), and have it delegate (agent-to-agent or subagents), or
  • use separate peers/groups per agent.

If you tell me whether this is (a) a WhatsApp DM/self-chat or (b) a WhatsApp group JID broadcast, I can suggest the cleanest pattern for your exact layout.