Chat Group Behavior
by @seanblanchfield
How to join, participate in, and leave group conversations on messaging platforms (WhatsApp, Signal, Telegram, etc.). Use when the owner tags the agent into...
clawhub install chat-group-behaviorπ About This Skill
name: chat-group-behavior description: How to join, participate in, and leave group conversations on messaging platforms (WhatsApp, Signal, Telegram, etc.). Use when the owner tags the agent into a group chat, when the agent needs to open or close the participation gate, or as a reference for correct group chat behavior.
Chat Group Behavior
This skill covers the full lifecycle of group chat participation: joining, behaving well while active, and leaving cleanly.
Prerequisites
channels., groupAllowFrom, and groups.*.requireMention are set so that only the owner can wake you in any group by default. Trigger phrases are defined in agents.list[main].groupChat.mentionPatterns. This applies to WhatsApp, Signal, Telegram, and other supported platforms.
Joining a Group
When the owner @mentions you in a group chat, follow these steps in order.
Step 1 β Capture context
From the inbound message metadata: platform (e.g. whatsapp, signal), group ID (the chat_id / from field), and duration (parse from the owner's message β default 30 minutes if unspecified).
Step 2 β Open the gate
Patch channels. to false in openclaw.json. The gateway file-watches the config and hot-reloads automatically β no restart needed.
Step 2b β Open the sender filter β οΈ Critical β easy to miss
groupAllowFrom controls not just *who can wake you* in a group, but also *which senders' messages are delivered to you* once active. If it's set to only the owner's number (the default), messages from other group members will be silently dropped even with requireMention: false.
Fix: patch channels. to ["*"] so all group members' messages are delivered.
This is safe because groupPolicy: "allowlist" still restricts *which groups* you are active in β opening the sender filter only affects groups you've explicitly joined.
Verify with openclaw doctor β config changes must pass schema validation.
Step 3 β Signal before going quiet
Before doing any work (research, lookups, etc.) triggered by a group message, send a brief acknowledgment first: *"On it, give me a moment ποΈ"* β then go do the work. Silence looks like a crash.
Step 4 β Introduce yourself
Say hi, introduce yourself briefly if it's a new group. Participate like a human β use judgment about when to contribute. Do not respond to every message.
Step 5 β Set a closing cron job
Create a one-shot cron job (kind: "at") for the parsed duration. When it fires: patch requireMention back to true for this group in openclaw.json, then send a brief goodbye. The gateway hot-reloads and the gate closes β no owner action needed.
Step 6 β Confirm to owner
Tell the owner the window is open and when it closes: _"Joined! I'll be here for 60 minutes β going quiet at 4:19 PM."_
Behavior While Active
Leaving a Group
Timed close (automatic):
When the closing cron fires: patch requireMention: true back for this group in openclaw.json, send a brief goodbye to the group. Gateway hot-reloads.
Early close (owner request):
Owner says @ / close β patch requireMention: true immediately, cancel the cron, say goodbye.
Extend (owner request):
Owner says @ β cancel existing cron, set a new one.
Troubleshooting
Messages from group members not reaching me:
Check groupAllowFrom β if it's restricted to the owner's number, non-owner messages are silently filtered. Set to ["*"] (see Step 2b).
"thinking/redacted_thinking blocks cannot be modified" errors:
This happens when the session has reasoning tokens in its history and a subsequent API call tries to re-process them. Fix: clear the session transcript file (find it via sessions.json in the agent sessions directory). The session will restart clean on the next message.
Notes
chat_id / from field)requireMention: true for the specific group entry (or remove it to fall back to the wildcard default)groupAllowFrom: ["*"] combined with groupPolicy: "allowlist" is the correct secure pattern β open sender filter, restricted group allowlistβοΈ Configuration
channels., groupAllowFrom, and groups.*.requireMention are set so that only the owner can wake you in any group by default. Trigger phrases are defined in agents.list[main].groupChat.mentionPatterns. This applies to WhatsApp, Signal, Telegram, and other supported platforms.
π Tips & Best Practices
chat_id / from field)requireMention: true for the specific group entry (or remove it to fall back to the wildcard default)groupAllowFrom: ["*"] combined with groupPolicy: "allowlist" is the correct secure pattern β open sender filter, restricted group allowlist