#Whatsapp group instead of notes to self

1 messages ยท Page 1 of 1 (latest)

shy sage
#

Quick question about WhatsApp setup:

Is it possible to keep the self-chat free (for personal notes-to-self) and centralize all Clawdbot WhatsApp conversations in a group instead?

Use case: I want to use the Mac app when at home, WhatsApp group when on the go, and keep my self-chat available for my own notes.

Any recommended config for this? Thanks! ๐Ÿ™

jagged nestBOT
#

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

mighty lightBOT
# shy sage Quick question about WhatsApp setup: Is it possible to keep the self-chat free ...

Based on the documentation, this setup is definitely possible! Here's how to configure it:

Key insight: Clawdbot naturally separates DMs (self-chat) from groups โ€” they use different session keys:

  • Self-chat: agent:main:whatsapp:main
  • Groups: agent:main:whatsapp:group:<jid>

Recommended config:

{
  channels: {
    whatsapp: {
      // Keep self-chat working normally
      allowFrom: ["+15551234567"],
      
      // Configure group behavior
#
      groupPolicy: "allowlist",
      groupAllowFrom: ["+15551234567"],  // only you can trigger
      groups: {
        "*": { requireMention: true }  // require @mention in groups
      }
    }
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          mentionPatterns: ["@?clawdbot", "\\+?15555550123"],
          historyLimit: 50
        }
#
      }
    ]
  }
}

How it works:

  1. Self-chat stays exactly as-is โ€” your personal notes-to-self are untouched
  2. Group chat gets its own isolated session (commands like /new or /verbose only affect the group, not self-chat)
  3. You need to @mention Clawdbot in the group to trigger responses
  4. Only you (+15551234567) can trigger replies in the group

To set up the group:

  1. Create a WhatsApp group and add yourself (your WhatsApp account)
  2. Send /status in the group to verify it's working
  3. Use /activation mention (default) or /activation always to control wake-up behavior
shy sage
#

Follow-up questions on the same setup:

  1. Notes-to-self are still being routed to agent:main:main (webchat) even with selfChatMode: false and allowFrom: []. Is there a way to completely block them?

  2. Is it possible to unify the WhatsApp group session with the webchat? Goal: use WhatsApp group on mobile + webchat on desktop, same conversation in both places.

mighty lightBOT
# shy sage Follow-up questions on the same setup: 1. Notes-to-self are still being routed ...

Based on the documentation, here's what I found:

1. Blocking Self-Chat Completely

Unfortunately, there's no built-in way to completely block self-chat when running on your personal WhatsApp number. From the docs:

"Self messages are always allowed" โ€” even with selfChatMode: false and empty allowFrom, self-messages are recognized and processed.

The only workaround:

  • Don't run Clawdbot on your personal number โ€” use a dedicated number (eSIM, prepaid)
  • This way, your notes-to-self WhatsApp chat stays completely separate from Clawdbot

2. Unifying WhatsApp Group with WebChat

This isn't possible due to session key architecture:

| Channel | Session Key |

#

|---------|-------------|
| WhatsApp group | agent:main:whatsapp:group:<jid> |
| WebChat | agent:main:web:main |

These are fundamentally different session types. The session.identityLinks feature only works for DM sessions (dmScope: "per-peer"), not groups.

Your options:

  1. Use a dedicated WhatsApp group for Clawdbot โ€” context stays in the group, accessible from both mobile and desktop WhatsApp
  2. Use WebChat exclusively on desktop, keep WhatsApp for mobile-only personal use
  3. Accept two sessions โ€” group chat has its own context, WebChat has its own

Suggested config for your use case:

{
  channels: {
#
    whatsapp: {
      selfChatMode: false,  // don't use self-chat
      allowFrom: ["+15551234567"],  // only you can trigger
      dmPolicy: "allowlist",
      groupPolicy: "allowlist",
      groupAllowFrom: ["+15551234567"],
      groups: {
        "123456789@g.us": { requireMention: true }  // your Clawdbot group
      }
    },
    webchat: {
      allowFrom: ["+15551234567"]  // allow same number
    }
  },
  session: {
shy sage
#

Follow-up: Is it possible to use bindings to route self-chat (messages from my own number to myself) to a dummy agent that ignores them? That way the main session stays clean.

Something like:
{
bindings: [
{ match: { channel: "whatsapp", peer: { kind: "dm", id: "+34676975326" } }, agentId: "ignore" }
]
}

Goal: keep agent:main:main clean for Mac app / webchat use.

mighty lightBOT
#
  },
  bindings: [
    // Route your self-chat DMs to the ignore agent
    { 
      agentId: "ignore-self", 
      match: { channel: "whatsapp", peer: { kind: "dm", id: "+34676975326" } } 
    },
    // Everything else to main
    { agentId: "main", match: { channel: "whatsapp" } }
  ],
  channels: {
    whatsapp: {
      selfChatMode: false,  // disable self-chat mode
      dmPolicy: "allowlist",
      allowFrom: ["+34676975326"]  // allow yourself
#
    }
  }
}

How it works:

  • Self-messages (DM from your number to yourself) โ†’ routed to ignore-self agent
  • Your WebChat/Mac app โ†’ uses agent:main:main (stays clean)
  • WhatsApp group โ†’ still routes to agent:main:whatsapp:group:<jid> (separate session)

Important notes:

  1. peer.kind: "dm" only matches DMs, not group messages, so your group chats still work
  2. Create the ignore agent first: clawdbot agents add ignore-self
  3. Put the more specific binding first (peer match before channel match)
  4. The ignore agent will have its own session, but it stays empty/clean
#

Alternative "cleaner" ignore agent:

{
  agents: {
    list: [
      {
        id: "ignore-self",
        workspace: "~/clawd-ignore",
        // Completely silent - no workspace files needed
        model: "minimax/MiniMax-M2.1"  // cheap model for literally doing nothing
      }
    ]
  },
  // No bindings needed if you want it to just accept and discard
}