Skip to main content
Access groups let you name a set of senders once and reference it from any channel — one definition, one revoke point.

Quick Start

1

Define a group, use it in a channel

gateway.yaml
2

Nest groups and share across channels

gateway.yaml

How It Works

Expansion happens once at config load, before validation and admission, so every channel admits from the same definition.

Configuration

Each group value can take three shapes.

Fail-Closed Behaviour

A bad reference stops the gateway instead of silently widening or narrowing access.
On hot-reload, a bad reference keeps the last-known-good config.
Access groups control who can talk to your agent. Review the full posture in Bot Security.

Common Patterns

Reference group:team from Telegram, Discord and Slack. Remove a person from team once and they lose access everywhere.
Keep ids out of the file with admins: ["${ADMINS}"] and set ADMINS=111,222.
Put group:admins inside team so admins are automatically team members.

Scope

expand_access_groups (Python)

Pure, zero-dependency expansion used by the gateway loader.

Best Practices

Never re-paste raw ids into each channel — they drift.
Lowercase names such as admins or on_call are easy to spot in reviews.
Build hierarchies like admins ⊂ oncall ⊂ team.
Pair groups with unknown_user_policy: "deny". See Channel Security.

Bot Gateway

Channel Security settings

Bot Security

Broader security posture

Channels Gateway

Shared allowlist surface

Gateway Config Migration

Gateway keys inventory