Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Channel ingress API
Channel ingress is the experimental access-control boundary for inbound channel events. Useopenclaw/plugin-sdk/channel-ingress-runtime for receive paths.
The older openclaw/plugin-sdk/channel-ingress subpath stays exported as a
deprecated compatibility facade for third-party plugins.
Plugins own platform facts and side effects. Core owns generic policy: DM/group
allowlists, pairing-store DM entries, route gates, command gates, event auth,
mention activation, redacted diagnostics, and admission.
Runtime Resolver
Result
Bundled plugins should consume modern projections directly:ingress: ordered gate decision and admissionsenderAccess: sender/conversation authorization onlyrouteAccess: route and route-sender projectioncommandAccess: command authorization; false when no command gate ranactivationAccess: mention/activation result
ingress.graph and the
decisive ingress.reasonCode; no separate event projection is emitted.
Deprecated third-party SDK helpers may rebuild older shapes internally. New
bundled receive paths should not translate modern results back into local DTOs.
Access Groups
accessGroup:<name> entries stay redacted. Core resolves static
message.senders groups itself and calls resolveAccessGroupMembership only
for dynamic groups that require a platform lookup. Missing, unsupported, and
failed groups fail closed.
Event Modes
authMode | Meaning |
|---|---|
inbound | normal inbound sender gates |
command | command gates for callbacks or scoped buttons |
origin-subject | actor must match the original message subject |
route-only | route gates only for route-scoped trusted events |
none | plugin-owned internal events bypass shared auth |
mayPair: false for reactions, buttons, callbacks, and native commands.
Routes And Activation
Use route descriptors for room, topic, guild, thread, or nested route policy:channelIngressRoutes(...) when a plugin has several optional route
descriptors; it filters disabled branches while keeping route facts generic and
ordered by each descriptor’s precedence.
Mention gating is an activation gate. A mention miss returns
admission: "skip" so the turn kernel does not process an observe-only turn.
Most channels should leave activation after sender and command gates. Public
chat surfaces that must quiet non-mentioned traffic before sender allowlist
noise can opt into activation.order: "before-sender" when text-command
bypass is disabled. Channels with implicit activation, such as replies in bot
threads, can pass activation.allowedImplicitMentionKinds; the projected
activationAccess.shouldBypassMention then reports when command or implicit
activation bypassed an explicit mention.