Skip to content

[Bug] 2026.2.19 upgrade breaks tool connections — missing operator.write and operator.read scopes on existing paired devices #23006

@mariovallereyes

Description

@mariovallereyes

Summary

After upgrading from 2026.2.15 to 2026.2.19 (or 2026.2.19-2 npm), all gateway tool connections enter an infinite pairing loop with error:

\
gateway closed (1008): pairing required
\\

Agents are unable to spawn subagents, list sessions, or use any gateway-dependent tools. The gateway itself runs fine and Telegram/channel connections work — only tool-level gateway calls fail.


Root Cause

The 2026.2.19 security hardening introduced two new scopes: \operator.write\ and \operator.read. Existing paired devices only carry the legacy scope set:

\
operator.admin, operator.approvals, operator.pairing
\\

When a tool call requires \operator.write\ or \operator.read, the gateway issues a scope-upgrade warning and rejects the connection with \1008: pairing required. The client then re-initiates a repair request, which gets approved — but the cycle repeats for the next required scope, creating an infinite loop.

Gateway log evidence:
\
[gateway] security audit: device access upgrade requested reason=scope-upgrade
device=
scopesFrom=operator.admin,operator.approvals,operator.pairing
scopesTo=operator.write
code=1008 reason=pairing required

[gateway] security audit: device access upgrade requested reason=scope-upgrade
scopesFrom=operator.admin,operator.approvals,operator.pairing,operator.write
scopesTo=operator.read
code=1008 reason=pairing required
\\


Affected Versions

  • From: 2026.2.15
  • To: 2026.2.19, 2026.2.19-1, 2026.2.19-2
  • Also present in: 2026.2.21 (no fix shipped yet)
  • Platform: Windows (confirmed), likely all platforms

Reproduction Steps

  1. Have OpenClaw running on 2026.2.15 with paired devices
  2. Update to 2026.2.19+ via npm (
    pm install -g openclaw)
  3. Gateway restarts
  4. Any agent tool call that uses gateway (sessions_list, sessions_spawn, etc.) fails with \1008: pairing required\
  5. Approving the repair request loops back to step 4 with the next missing scope

Workaround (Manual Fix)

Run for each paired device (CLI + Control UI):

\\�ash

Find device IDs

openclaw devices list --json

Rotate token with full scope set

openclaw devices rotate
--device
--role operator
--scope operator.admin
--scope operator.approvals
--scope operator.pairing
--scope operator.write
--scope operator.read
\\

Repeat for all paired devices. No restart required after rotation.


Expected Behavior

When upgrading, openclaw doctor --fix (or the update process itself) should detect devices missing the new scopes and auto-rotate their tokens with the full current scope set. Users should not need to manually rotate tokens after a routine update.


Environment

  • OS: Windows 11
  • Node: v23.7.0
  • OpenClaw before: 2026.2.15
  • OpenClaw after: 2026.2.19-2
  • Install method: npm global (
    pm install -g openclaw)
  • Gateway mode: local, loopback, token auth

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions