Skip to content

Signal: group added at creation-time is never auto-approved (only post-creation invites are) #102

Description

@juniperbevensee

Summary

The Signal group auto-approve path only fires when the agent receives a group-invite envelope (a groupV2 update with no dataMessage). If an approved admin adds the agent as a member during group creation, no invite envelope is delivered, the handler never runs, and the group is never added to the allowlist — so all group messages (including /sethome) are silently dropped.

Evidence

Observed live: Matilde (deployed agent) was added to a group "message bus (matilde)" at creation. She received the messages but never responded; SIGNAL_GROUP_ALLOWED_USERS stayed empty (groups=disabled). Her gateway.log contained zero group invit* / auto-accept / joinGroup lines — confirming no invite envelope ever arrived. Manually adding the group ID to SIGNAL_GROUP_ALLOWED_USERS fixed it.

Code

gateway/platforms/signal.py:647-715 — auto-accept is gated on:

data_message_raw = envelope_data.get("dataMessage")
if not data_message_raw:
    group_v2_invite_id = (envelope_data.get("groupV2") or {}).get("groupId") ...
    if group_v2_invite_id:
        # approved-only: inviter must be an approved user
        ...
        await self._rpc("joinGroup", ...)
        self.group_allow_from.add(group_v2_invite_id)   # auto-approve

There is no handler for the creation-membership case (being a member in the initial group state rather than receiving a standalone invite).

Proposed fix (options)

  1. Docs/UX: document the supported path — create the group, then invite the agent (don't add-at-creation). Surface this in HSM's group UI.
  2. Code: also detect creation-membership (agent appears as a new member in a groupV2 update for a group it isn't yet in) and run the same approved-inviter check + joinGroup + allowlist-add.

Impact

Low-severity but high-confusion: the agent looks "broken/offline" in a group when it's actually just unapproved. Bit us during Matilde bring-up (2026-06-19).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions