pllan devices

Manage device pairing requests and device-scoped tokens.

Commands

pllan devices list

List pending pairing requests and paired devices.
pllan devices list
pllan devices list --json
Pending request output includes the requested role and scopes so approvals can be reviewed before you approve.

pllan devices remove <deviceId>

Remove one paired device entry.
pllan devices remove <deviceId>
pllan devices remove <deviceId> --json

pllan devices clear --yes [--pending]

Clear paired devices in bulk.
pllan devices clear --yes
pllan devices clear --yes --pending
pllan devices clear --yes --pending --json

pllan devices approve [requestId] [--latest]

Approve a pending device pairing request. If requestId is omitted, Pllan automatically approves the most recent pending request. Note: if a device retries pairing with changed auth details (role/scopes/public key), Pllan supersedes the previous pending entry and issues a new requestId. Run pllan devices list right before approval to use the current ID.
pllan devices approve
pllan devices approve <requestId>
pllan devices approve --latest

pllan devices reject <requestId>

Reject a pending device pairing request.
pllan devices reject <requestId>

pllan devices rotate --device <id> --role <role> [--scope <scope...>]

Rotate a device token for a specific role (optionally updating scopes).
pllan devices rotate --device <deviceId> --role operator --scope operator.read --scope operator.write

pllan devices revoke --device <id> --role <role>

Revoke a device token for a specific role.
pllan devices revoke --device <deviceId> --role node

Common options

  • --url <url>: Gateway WebSocket URL (defaults to gateway.remote.url when configured).
  • --token <token>: Gateway token (if required).
  • --password <password>: Gateway password (password auth).
  • --timeout <ms>: RPC timeout.
  • --json: JSON output (recommended for scripting).
Note: when you set --url, the CLI does not fall back to config or environment credentials. Pass --token or --password explicitly. Missing explicit credentials is an error.

Notes

  • Token rotation returns a new token (sensitive). Treat it like a secret.
  • These commands require operator.pairing (or operator.admin) scope.
  • devices clear is intentionally gated by --yes.
  • If pairing scope is unavailable on local loopback (and no explicit --url is passed), list/approve can use a local pairing fallback.

Token drift recovery checklist

Use this when Control UI or other clients keep failing with AUTH_TOKEN_MISMATCH or AUTH_DEVICE_TOKEN_MISMATCH.
  1. Confirm current gateway token source:
pllan config get gateway.auth.token
  1. List paired devices and identify the affected device id:
pllan devices list
  1. Rotate operator token for the affected device:
pllan devices rotate --device <deviceId> --role operator
  1. If rotation is not enough, remove stale pairing and approve again:
pllan devices remove <deviceId>
pllan devices list
pllan devices approve <requestId>
  1. Retry client connection with the current shared token/password.
Related: