Files
openclaw/docs/channels/pairing.md

104 lines
3.3 KiB
Markdown
Raw Normal View History

2026-01-06 19:30:30 +01:00
---
summary: "Pairing overview: approve who can DM you + which nodes can join"
read_when:
- Setting up DM access control
- Pairing a new iOS/Android node
2026-01-30 03:15:10 +01:00
- Reviewing OpenClaw security posture
title: "Pairing"
2026-01-06 19:30:30 +01:00
---
# Pairing
2026-01-30 03:15:10 +01:00
“Pairing” is OpenClaws explicit **owner approval** step.
2026-01-06 19:30:30 +01:00
It is used in two places:
2026-01-31 21:13:13 +09:00
1. **DM pairing** (who is allowed to talk to the bot)
2. **Node pairing** (which devices/nodes are allowed to join the gateway network)
2026-01-06 19:30:30 +01:00
2026-01-07 02:04:02 +01:00
Security context: [Security](/gateway/security)
2026-01-06 19:30:30 +01:00
## 1) DM pairing (inbound chat access)
2026-01-13 07:15:57 +00:00
When a channel is configured with DM policy `pairing`, unknown senders get a short code and their message is **not processed** until you approve.
2026-01-06 19:30:30 +01:00
2026-01-07 02:04:02 +01:00
Default DM policies are documented in: [Security](/gateway/security)
2026-01-06 19:30:30 +01:00
2026-01-07 05:06:04 +01:00
Pairing codes:
2026-01-31 21:13:13 +09:00
2026-01-07 05:06:04 +01:00
- 8 characters, uppercase, no ambiguous chars (`0O1I`).
- **Expire after 1 hour**. The bot only sends the pairing message when a new request is created (roughly once per hour per sender).
2026-01-13 07:15:57 +00:00
- Pending DM pairing requests are capped at **3 per channel** by default; additional requests are ignored until one expires or is approved.
2026-01-07 05:06:04 +01:00
2026-01-06 19:30:30 +01:00
### Approve a sender
```bash
2026-01-30 03:15:10 +01:00
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
2026-01-06 19:30:30 +01:00
```
Supported channels: `telegram`, `whatsapp`, `signal`, `imessage`, `discord`, `slack`, `feishu`.
2026-01-06 19:30:30 +01:00
### Where the state lives
2026-01-30 03:15:10 +01:00
Stored under `~/.openclaw/credentials/`:
2026-01-31 21:13:13 +09:00
2026-01-13 07:15:57 +00:00
- Pending requests: `<channel>-pairing.json`
- Approved allowlist store: `<channel>-allowFrom.json`
2026-01-06 19:30:30 +01:00
Treat these as sensitive (they gate access to your assistant).
2026-01-22 22:02:00 +00:00
## 2) Node device pairing (iOS/Android/macOS/headless nodes)
2026-01-06 19:30:30 +01:00
2026-01-22 22:02:00 +00:00
Nodes connect to the Gateway as **devices** with `role: node`. The Gateway
creates a device pairing request that must be approved.
2026-01-06 19:30:30 +01:00
### Pair via Telegram (recommended for iOS)
If you use the `device-pair` plugin, you can do first-time device pairing entirely from Telegram:
1. In Telegram, message your bot: `/pair`
2. The bot replies with two messages: an instruction message and a separate **setup code** message (easy to copy/paste in Telegram).
3. On your phone, open the OpenClaw iOS app → Settings → Gateway.
4. Paste the setup code and connect.
5. Back in Telegram: `/pair approve`
The setup code is a base64-encoded JSON payload that contains:
- `url`: the Gateway WebSocket URL (`ws://...` or `wss://...`)
- `token`: a short-lived pairing token
Treat the setup code like a password while it is valid.
2026-01-22 22:02:00 +00:00
### Approve a node device
2026-01-06 19:30:30 +01:00
```bash
2026-01-30 03:15:10 +01:00
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
2026-01-06 19:30:30 +01:00
```
2026-02-06 09:35:57 -05:00
### Node pairing state storage
2026-01-06 19:30:30 +01:00
2026-01-30 03:15:10 +01:00
Stored under `~/.openclaw/devices/`:
2026-01-31 21:13:13 +09:00
2026-01-06 19:30:30 +01:00
- `pending.json` (short-lived; pending requests expire)
2026-01-22 22:02:00 +00:00
- `paired.json` (paired devices + tokens)
2026-01-06 19:30:30 +01:00
2026-01-22 22:02:00 +00:00
### Notes
2026-01-06 19:30:30 +01:00
2026-01-30 03:15:10 +01:00
- The legacy `node.pair.*` API (CLI: `openclaw nodes pending/approve`) is a
2026-01-22 22:02:00 +00:00
separate gateway-owned pairing store. WS nodes still require device pairing.
2026-01-06 19:30:30 +01:00
## Related docs
2026-01-07 02:04:02 +01:00
- Security model + prompt injection: [Security](/gateway/security)
- Updating safely (run doctor): [Updating](/install/updating)
2026-01-13 07:15:57 +00:00
- Channel configs:
- Telegram: [Telegram](/channels/telegram)
- WhatsApp: [WhatsApp](/channels/whatsapp)
- Signal: [Signal](/channels/signal)
iMessage: promote BlueBubbles and refresh docs/skills (#8415) * feat: Make BlueBubbles the primary iMessage integration - Remove old imsg skill (skills/imsg/SKILL.md) - Create new BlueBubbles skill (skills/bluebubbles/SKILL.md) with message tool examples - Add keep-alive script documentation for VM/headless setups to docs/channels/bluebubbles.md - AppleScript that pokes Messages.app every 5 minutes - LaunchAgent configuration for automatic execution - Prevents Messages.app from going idle in VM environments - Update all documentation to prioritize BlueBubbles over legacy imsg: - Mark imsg channel as legacy throughout docs - Update README.md channel lists - Update wizard, hubs, pairing, and index docs - Update FAQ to recommend BlueBubbles for iMessage - Update RPC docs to note imsg as legacy pattern - Update Chinese documentation (zh-CN) - Replace imsg examples with generic macOS skill examples where appropriate BlueBubbles is now the recommended first-class iMessage integration, with the legacy imsg integration marked for potential future removal. * refactor: Update import paths and improve code formatting - Adjusted import paths in session-status-tool.ts, whatsapp-heartbeat.ts, and heartbeat-runner.ts for consistency. - Reformatted code for better readability by aligning and grouping related imports and function parameters. - Enhanced error messages and conditional checks for clarity in heartbeat-runner.ts. * skills: restore imsg skill and align bluebubbles skill * docs: update FAQ for clarity and formatting - Adjusted the formatting of the FAQ section to ensure consistent bullet point alignment. - No content changes were made, only formatting improvements for better readability. * style: oxfmt touched files * fix: preserve BlueBubbles developer reference (#8415) (thanks @tyler6204)
2026-02-03 18:06:54 -08:00
- BlueBubbles (iMessage): [BlueBubbles](/channels/bluebubbles)
- iMessage (legacy): [iMessage](/channels/imessage)
- Discord: [Discord](/channels/discord)
- Slack: [Slack](/channels/slack)