mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-17 16:12:21 -06:00
22ab8e3c2c
* fix(gateway): stop a plugin dangerous flag from revoking desktop computer.act `resolveNodeCommandAllowlistInternal` subtracted every plugin-declared dangerous command from the composed allowlist, including core's own `PLATFORM_DEFAULTS` entries and including the pairing allowlist, where core's dangerous defaults are exempted. `computer.act` is both a desktop platform default (grant = node-local enablement + pairing approval) and a command that `registerComputerUseProvider` marks dangerous. Since `cua-computer` became enabled-by-default on darwin, every macOS-hosted Gateway stripped `computer.act` from both allowlists, so `normalizeDeclaredNodeCommands` dropped it from the node's declaration with no pairing upgrade, no prompt, and no record. The `computer` capability survived because caps were never allowlist-filtered, and the `computerUse` descriptor was then dropped for the missing command. Scope the plugin-dangerous subtraction to commands outside the platform-default base: the flag still keeps a plugin's own surface behind an explicit allow and still forces a registered invoke policy, but it no longer revokes a command core declares itself. Also make cap-without-command unrepresentable. `retainFulfilledNodeCapabilities` drops a capability when policy withheld commands from its family and admitted none, and the reconciler records the withheld commands so a refused declaration is never silent. * test(gateway): type the computer-use fixture against its contract