diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d1a2a8e537..f1a14664918 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Docs: https://docs.openclaw.ai - GitHub Copilot/onboarding: default GitHub Copilot setup to `claude-opus-4.6` and keep the bundled default model list aligned, so new Copilot setups no longer start on the older `gpt-4o` default. (#69207) Thanks @obviyus. - Gateway/status: separate reachability, capability, and read-probe reporting so connect-only or scope-limited sessions no longer look fully healthy, and normalize SSH targets entered as `ssh user@host`. (#69215) Thanks @obviyus. - Slack: fix outbound replies failing with "unresolved SecretRef" for accounts configured via `file` or `exec` secret sources; the send path now tolerates the runtime snapshot retaining an unresolved channel SecretRef when a boot-resolved token override is already available. (#68954) Thanks @openperf. +- Control UI/device pairing: explain scope and role approval upgrades during reconnects, and show requested versus approved access in the Control UI and `openclaw devices` so broader reconnects no longer look like lost pairings. (#69221) Thanks @obviyus. ## 2026.4.19-beta.2 diff --git a/docs/channels/pairing.md b/docs/channels/pairing.md index dd768686d34..2ea8b0faeda 100644 --- a/docs/channels/pairing.md +++ b/docs/channels/pairing.md @@ -100,6 +100,12 @@ If the same device retries with different auth details (for example different role/scopes/public key), the previous pending request is superseded and a new `requestId` is created. +Important: an already paired device does not get broader access silently. If it +reconnects asking for more scopes or a broader role, OpenClaw keeps the +existing approval as-is and creates a fresh pending upgrade request. Use +`openclaw devices list` to compare the currently approved access with the newly +requested access before you approve. + ### Node pairing state storage Stored under `~/.openclaw/devices/`: