openclaw/plugin-sdk/channel-ingress-runtime for new receive paths. The
older openclaw/plugin-sdk/channel-ingress subpath stays exported as a
deprecated compatibility facade for third-party plugins.
Runtime resolver
Result
Bundled plugins should consume modern projections directly:| Field | Meaning |
|---|---|
ingress | ordered gate decision and admission |
senderAccess | sender/conversation authorization only |
routeAccess | route and route-sender projection |
commandAccess | command authorization; requested: false when no command gate ran |
activationAccess | 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.