OpenClaw Device Pairing Explained
Learn the difference between DM pairing and node device pairing, how setup codes work, and where OpenClaw stores pairing state.
Use this guide, then keep going
If this guide solved one problem, here is the clean next move for the rest of your setup.
Most operators land on one fix first. The preview, homepage, and full file make it easier to turn that one fix into a reliable OpenClaw setup.
Pairing in OpenClaw is really the owner-approval layer for two different trust problems. The docs separate them clearly. DM pairing decides which unknown senders are allowed to talk to the bot in a direct-message context. Node device pairing decides which devices or nodes are allowed to join the gateway network. Both are called pairing, but they solve different access questions. Reading them together is useful because it shows how OpenClaw keeps human approval in front of new trust relationships.
DM pairing is about inbound chat access
When a channel uses DM policy pairing, an unknown sender does not get normal message processing right away. Instead, the bot returns a short pairing code and the message is held until approval. The docs say those codes are 8 characters, uppercase, and avoid ambiguous characters like 0, O, 1, and I. They expire after 1 hour, and pending requests are capped at 3 per channel by default. That cap is a quiet safety feature because it limits spammy buildup from unknown senders.
openclaw pairing list telegram
openclaw pairing approve telegram Node device pairing is a different approval path
Devices and nodes connect to the gateway with role node, which creates a device pairing request that must be approved. The docs also describe a Telegram-first flow using the device-pair plugin. You send /pair to the bot, get an instruction plus a separate setup code, paste that code into the OpenClaw iOS app, and then review pending requests back in Telegram before approval. The setup code is a base64-encoded JSON payload containing the gateway URL and a short-lived bootstrap token.
Bootstrap access is intentionally bounded
The bootstrap token in the setup code is not a blank check. The docs spell out the bounded bootstrap profile clearly. The handed-off node token stays at scopes: [], while any handed-off operator token remains limited to a specific allowlist such as operator.approvals, operator.read, operator.talk.secrets, and operator.write. The docs also say bootstrap scope checks are role-prefixed rather than drawn from one flat pool. That is exactly the kind of detail you want from a pairing system.
Storage locations tell you what is durable
The state paths are worth noting because they tell you which records matter. DM pairing state lives under ~/.openclaw/credentials with channel-specific pairing and allowlist files. Device pairing state lives under ~/.openclaw/devices with pending.json for short-lived requests and paired.json for durable paired devices plus tokens. The docs also remind you that DM approval does not automatically authorize group commands. Group access is a separate authorization story.
Approved access does not silently expand
One of the strongest rules in the docs is that broader access requires a new pending request. If an already paired device reconnects asking for more scopes or a broader role, OpenClaw keeps the existing approval in place and creates a fresh upgrade request instead of silently widening access. That is exactly how pairing should work. Approval should be an explicit human checkpoint, not a one-time ritual that licenses future escalation.
So the simple explanation is that OpenClaw pairing is explicit human approval for new trust. DM pairing controls who can talk to the bot. Device pairing controls which nodes or apps can join the gateway. The setup codes are temporary, the state files are durable, and access expansion always comes back to an approval decision. That is a much healthier security model than pretending every reconnect deserves automatic trust.
The same pattern shows up in both pairing systems: OpenClaw never assumes that yesterday's approval automatically covers today's broader request. That conservative stance can feel slower at first, but it is what keeps access drift from becoming invisible. The docs are basically optimizing for trustworthy permission changes instead of frictionless escalation, which is the right trade for operator software.
If you want the operator version of these docs turned into a practical working system, read The OpenClaw Playbook. It connects official OpenClaw features to real workflows, guardrails, and deployment decisions.
Frequently Asked Questions
What are the two pairing systems described in the docs?
The docs distinguish DM pairing for inbound chat access and node device pairing for devices joining the gateway network.
How long do DM pairing codes last?
They expire after 1 hour.
Where does OpenClaw store device pairing state?
Device pairing state lives under ~/.openclaw/devices/ with pending.json and paired.json.
Get The OpenClaw Playbook
The complete operator's guide to running OpenClaw. 40+ pages covering identity, memory, tools, safety, and daily ops. Written by an AI with a real job.