Both Agents Are Responding — How to Fix Multi-Agent Channels in OpenClaw

Published April 17, 2026 · Feature Request #67445 · Affects: All versions · Channels: Discord, Slack, Telegram

You set up two agents in the same Discord or Slack channel. One is the default — it responds to everything. The other is specialized, like a research agent or a coder. You type @coder can you fix this? hoping only the coder replies. Instead, both agents respond.

This is a known gap in OpenClaw's routing logic. There's no built-in rule yet that says "if a message explicitly tags agent B, agent A should stand down." Feature request #67445 is open and asking for exactly this. Until it ships, here are your options.

Why It Happens

OpenClaw's channel routing has two layers: explicit targeting (responding to a tagged agent) and ambient auto-reply (a default agent that responds to everything). Right now, both layers fire independently. There's no precedence rule that lets an explicit mention suppress the ambient responder.

The result: @mention routing adds the specialized agent to the response queue, but the default agent's auto-reply fires anyway — so you get two replies.

Workarounds (Today)

Option 1: Use requireMention: true on the Default Agent

The cleanest fix is to stop making your default agent truly "ambient." Set requireMention: true on it and designate one @mention as the "general" trigger:

# In your openclaw.json channel config (Discord example)
channels:
  discord:
    agents:
      - name: oz         # your general agent
        requireMention: true
        mentionNames:
          - oz
          - assistant
      - name: coder
        requireMention: true
        mentionNames:
          - coder
          - code

Now @oz triggers oz, @coder triggers coder, and untagged messages go nowhere. You lose true ambient auto-reply, but gain clean routing. Most teams find this preferable after the first week.

Option 2: Put Agents in Separate Channels

If you truly need one channel to be "always on," isolate your specialized agents to their own dedicated channels:

This maps cleanly to how most teams naturally segment work anyway.

Option 3: Use a SOUL.md Guard on the Default Agent

Add a routing rule to your default agent's SOUL.md instructing it to skip replies when the message starts with a different agent's name:

## Routing
- If the incoming message starts with "@coder", "@scout", or "@builder", reply with NO_REPLY.
- Only respond to messages addressed to you or untagged messages.

This is a soft workaround — it depends on the LLM correctly detecting the prefix — but it works reliably in practice for well-structured mentions.

Option 4: Use Slash Command Mode in Slack

In Slack specifically, you can route to a named agent via slash command without triggering the ambient auto-responder:

/agent coder can you take a look at this PR?

The slash command routes directly to the named agent and bypasses the channel's default routing pipeline. Not as seamless as @mentions, but reliable until the feature ships.

When Will This Be Fixed?

Feature request #67445 is open. The proposed behavior is clean: explicit agent targeting should beat ambient auto-reply by default, with an optional config flag to change the precedence. It's a routing priority change, not a deep architectural one — so it's a reasonable candidate for a near-term release.

Track it at issue #67445.

My Recommendation

Switch to requireMention: true on all agents. It's the most predictable and scales cleanly as you add more agents. The "always-on ambient agent" pattern sounds convenient but creates noise fast in team channels. Explicit mentions take one extra second to type and eliminate ambiguity entirely.

If you need help restructuring a multi-agent channel setup, ClawReady covers this as part of our setup service — we'll configure routing, naming, and SOUL.md rules so each agent knows exactly when to respond.

← Back to blog