OpenClaw merged a Gateway authorization fix for custom WebChat clients on July 18. PR #110931, fix(gateway): honor scopes for WebChat session mutations, landed at 19:48 UTC and closes issue #110930.
The bug sat at the boundary between client identity and operator permission. Custom WebChat clients with approved operator scopes could still be blocked from mutating sessions because WebChat identity was treated as a blanket restriction.
The Problem
Session mutation is a broad category. It includes actions such as patching, deleting, compacting, branching, restoring, rewinding, forking, switching, dispatching, and reclaiming sessions.
Those operations should be governed by approved operator scopes. Before this fix, custom WebChat clients could have the right scopes but still fail because the WebChat restriction acted like a second authorization layer.
The PR notes a practical side effect: this encouraged clients to impersonate the Control UI just to reach operations they were already authorized to perform.
The Fix
OpenClaw now routes these session mutations through its centralized method-scope policy. That includes parameter-aware checks for patch and delete operations.
The important shift is that client ID and mode no longer grant or remove mutation authority. Instead, the existing scope policy is the single decision point for whether a client can perform a specific session operation.
The PR also keeps the surrounding security model intact. Connection admission, device pairing, scope approval, and the gateway.controlUi.dangerouslyDisableDeviceAuth setting are unchanged.
Why It Matters
This is not just a compatibility tweak for third-party clients. It tightens the model by making authorization easier to reason about.
When identity checks and scope checks overlap, operators have to understand both layers, and clients may work around one of them in unsafe ways. A centralized scope decision gives OpenClaw a cleaner contract:
- approved WebChat clients can manage sessions with their negotiated scopes;
- lower-scope clients receive structured missing-scope errors;
- rejected operations leave session state unchanged;
- Control UI identity is not used as a workaround for missing permissions.
For anyone building custom dashboards or embedded OpenClaw chat surfaces, that is a meaningful improvement.
Evidence
The PR reports a Blacksmith Testbox run covering server.sessions.permissions-hooks and method-scopes, with 132 of 132 tests passing. A broader pnpm check:changed run also passed core typechecks, formatting, core lint, import-cycle checks, plugin boundaries, and security guards.
The Gateway integration coverage verifies read-scoped WebChat rejection across the formerly identity-blocked mutations. It also checks that rejected mutations do not change session state and that admin-scoped WebChat clients can persist branch and delete mutations.
Operator Takeaway
OpenClaw's WebChat authorization now follows the same scope language as the rest of the Gateway. Third-party clients get the access they were approved for, and clients without that access fail with normal structured permission errors.