You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Normal group sender access falls back from group allowlists to DM `allowFrom`| Pass `policy.groupAllowFromFallbackToAllowFrom: false` to the shared ingress resolver and pass the explicit group sender allowlist the channel will use. |`groupAllowFromFallbackToAllowFrom: false`|`channels.<id>.groupAllowFrom`|
780
+
| Group command senders fall back to DM or group sender allowlists | Pass `command.commandGroupAllowFromFallbackToAllowFrom: false` and pass `command.commandGroupAllowFrom` when the channel has a command-specific sender allowlist. |`commandGroupAllowFromFallbackToAllowFrom: false`|`channels.<id>.commandGroupAllowFrom`|
781
+
| Group command owners fall back to DM `allowFrom`| Pass `command.groupOwnerAllowFromFallbackToAllowFrom: false` and pass `command.groupOwnerAllowFrom` when the channel has a command-owner allowlist. |`groupOwnerAllowFromFallbackToAllowFrom: false`|`channels.<id>.groupOwnerAllowFrom`|
782
+
| Text command authorization falls back to channel `allowFrom`| Make command authorization use explicit `commands.allowFrom` entries for this provider and keep the prepared doctor capability available to the auto-reply command path. |`commandAllowFromFallbackToAllowFrom: false`|`commands.allowFrom.<channel-id>`|
783
+
| Elevated authorization falls back to channel `allowFrom`| Stop using the channel elevated `allowFromFallback` hook, or let shared elevated auth skip it through the prepared doctor capability. |`elevatedAllowFromFallbackToAllowFrom: false`|`tools.elevated.allowFrom.<channel-id>`|
784
+
785
+
Before setting any fallback flag to `false`, verify that:
786
+
787
+
- the target config key is accepted by that channel schema
788
+
- the channel runtime reads that key on the relevant ingress or command path
789
+
-`openclaw doctor --fix` can preserve existing access without broadening
790
+
account scope
791
+
- synthetic open-DM wildcards are not being used as the source of the migration
792
+
793
+
Command-only migrations must target command-specific allowlists:
794
+
`commandGroupAllowFrom`, `groupOwnerAllowFrom`, or provider maps under
795
+
`commands.allowFrom` and `tools.elevated.allowFrom`. Do not use normal group
796
+
sender targets to preserve command authorization fallback.
| Normal group sender fallback |`policy.groupAllowFromFallbackToAllowFrom: false`|`groupAllowFrom` or a route sender allowlist that replaces the legacy fallback. |
84
+
| Group command-sender fallback |`command.commandGroupAllowFromFallbackToAllowFrom: false`|`command.commandGroupAllowFrom`, unless command authorization is intentionally covered by explicit `groupAllowFrom`. |
85
+
| Group command-owner fallback |`command.groupOwnerAllowFromFallbackToAllowFrom: false`|`command.groupOwnerAllowFrom`, or an intentional no-owner mode such as the legacy `"none"` sentinel. |
86
+
87
+
Provider-wide command fallback and elevated fallback are not ingress resolver
88
+
inputs. Those paths read prepared channel capability metadata, so the channel PR
89
+
must ensure the command or elevated authorization path already has an explicit
90
+
target before declaring the fallback disabled.
91
+
92
+
After the runtime consumes the explicit target, set the corresponding
93
+
`package.json#openclaw.channel.doctorCapabilities` fields described in
94
+
[Plugin manifest](/plugins/manifest#disable-fallback-in-a-channel-pr). Doctor
95
+
infers the copy target from the disabled fallback flag, so channel PRs should
96
+
only set the fallback metadata after the target config key is accepted by that
97
+
channel schema and read by that channel runtime.
98
+
61
99
## Result
62
100
63
101
Bundled plugins should consume modern projections directly:
0 commit comments