Control UI error: missing scope: operator.read (LAN/IP access)
Work around a regression where the Control UI works on localhost but fails via LAN/IP with 'missing scope: operator.read'.
Symptoms
- Opening the Control UI via a LAN/IP URL (for example,
http://<gateway-ip>:18789/) shows Connected on the overview, but other pages show:Error: missing scope: operator.read
- Opening the same gateway via
http://127.0.0.1:18789/works normally. - Older 2026.2-era reports tied this to specific LAN/IP upgrade regressions; current stable users should first verify tokenized loopback/dashboard access and pairing/origin behavior.
Cause
In some versions, the Control UI’s auth/scope check can break when the UI is accessed via a non-loopback origin (LAN/IP), even though the gateway is reachable and otherwise healthy. The UI then fails RBAC checks and reports a missing operator.read scope.
Fix
1) Use the loopback URL (recommended)
Open the UI using the tokenized link from:
openclaw dashboard
If the gateway is on another machine, tunnel it and use the loopback URL locally:
ssh -N -L 18789:127.0.0.1:18789 user@host
Then open:
http://127.0.0.1:18789/?token=...
2) If this started after an update: use generic rollback discipline
If loopback/tunnel access and pairing checks still fail and you need to roll back, do not jump to a historical pin. Follow the generic last-working-version flow in /guides/updating-and-migration, and pin only a version you have personally validated as working in your environment.
Verify
- Open the Control UI and navigate to pages that previously failed (for example, Operators / Sessions / Settings).
- The UI loads data without
missing scope: operator.read.
Related
- GitHub issue: #16862