OpenClaw · Skill
Approve Pairing
Approve pending DM pairing requests by writing directly to OpenClaw credential files — no CLI required.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install madan-wego/approve-pairingClawHub installer
npx clawhub@latest install madan-wego/approve-pairingOpenClaw CLI
openclaw skills install madan-wego/approve-pairingDirect OpenClaw install
openclaw install madan-wego/approve-pairingWhat this skill does
Approve pending DM pairing requests by writing directly to OpenClaw credential files — no CLI required.
Why it matters
Bypasses CLI dependency entirely by operating on credential files directly, so pairing can be approved in any environment where file system access is available.
Typical use cases
- Approving a pairing request in a sandboxed CI environment
- Recovering pairing access when openclaw CLI is not in PATH
- Manually approving a sender on a remote server without elevated permissions
- Scripting bulk pairing approvals across multiple channels
- Unblocking a pairing request before the 1-hour code expiry
Source instructions
approve-pairing
Approve pending DM pairing requests by writing directly to OpenClaw credential files — no CLI required.
How It Works
Pairing state lives in two files under ~/.openclaw/credentials/:
<channel>-pairing.json— pending requests (sender ID, code, accountId)<channel>-<accountId>-allowFrom.json— approved senders allowlist
Approving = add sender ID to allowFrom file + remove code from pairing file.
Quick Approval (script)
python3 skills/approve-pairing/scripts/approve_pairing.py <channel> <code>
Example:
python3 skills/approve-pairing/scripts/approve_pairing.py telegram PWVW264M
The script:
- Reads
~/.openclaw/credentials/<channel>-pairing.json - Finds the request matching the code
- Appends the sender ID to the allowFrom file
- Removes the code from pending requests
Manual Steps (if script unavailable)
- Read
~/.openclaw/credentials/<channel>-pairing.jsonto getidandmeta.accountId - Write/update
~/.openclaw/credentials/<channel>-<accountId>-allowFrom.json:{ "version": 1, "allowFrom": ["<sender_id>"] } - Clear the pending request from
<channel>-pairing.json
Notes
- Codes expire after 1 hour — check
createdAtif approval fails - A gateway restart may be needed:
openclaw gateway restart - If
accountIdis"default"or empty, the file is<channel>-default-allowFrom.json - Pending requests capped at 3 per channel; old ones must expire before new ones are created