Skip to content

Signal channel schema missing groups config — requireMention silently drops all group messages #20397

@skillz-xx

Description

@skillz-xx

Summary

Signal group messages are silently dropped because requireMention defaults to true, but Signal does not support native @mentions. The channels.signal.groups config property (which would allow setting requireMention: false per-group) is missing from the Signal channel schema, even though:

  1. The runtime code reads and respects it (resolveChannelGroupRequireMention in dock-BoYjClAF.js)
  2. Telegram and WhatsApp channels both expose groups in their schemas
  3. There is no other schema-valid way to set requireMention: false specifically for Signal groups

Steps to Reproduce

  1. Configure Signal channel with group bindings
  2. Set groupPolicy: "open" and valid groupAllowFrom
  3. Send a message in a bound Signal group
  4. Expected: Agent receives and responds
  5. Actual: Message silently dropped. No error in main logs. Only visible at trace level as logInboundDrop with reason: "no mention"

Root Cause

In the signal message handler (subagent-registry-*.js):

const requireMention = isGroup && resolveChannelGroupRequireMention({...});
const canDetectMention = mentionRegexes.length > 0;
if (isGroup && requireMention && canDetectMention && mentionGate.shouldSkip) {
    logInboundDrop({ reason: "no mention" });
    return;
}

resolveChannelGroupRequireMention returns true by default (line 87 in dock-BoYjClAF.js). Since Signal has no native @mention support, every group message fails the mention gate.

Attempting config.patch with channels.signal.groups.*.requireMention: false is rejected by schema validation (Unrecognized key: "groups").

Workaround

Set empty mentionPatterns globally to make canDetectMention = false:

{
  "messages": {
    "groupChat": {
      "mentionPatterns": []
    }
  }
}

This bypasses the mention gate but affects all channels/groups globally, not just Signal.

Proposed Fix

Either:

  1. Add groups to the Signal channel schema (matching Telegram/WhatsApp):
groups?: Record<string, {
    requireMention?: boolean;
    tools?: GroupToolPolicyConfig;
    toolsBySender?: GroupToolPolicyBySenderConfig;
}>;
  1. Or change requireMention default to false for Signal specifically, since Signal lacks native mention support.

Environment

  • OpenClaw: 2026.2.17
  • signal-cli: 0.13.24
  • macOS (Apple Silicon)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions