| name | clawline-device-management |
| description | Handle Clawline device registration alerts and manage the allowlist. When you receive 'New device pending approval' alerts, use this skill to approve or deny. |
| metadata | {"openclaw":{"skillKey":"clawline-device-management"}} |
Clawline Device Management
You are responsible for device registration approvals. When a new device wants to connect, you receive an alert.
Alert Format
When a device requests pairing:
New device pending approval: {claimedName} ({platform})
Examples:
New device pending approval: flynn (iOS)
New device pending approval: test agent (iOS)
New device pending approval: New device (Unknown platform)
Note: claimedName is user-provided (what they typed in the app), not verified identity.
Response Workflow
- Check pending devices
- Decide: approve or deny (ask user if unsure who this is)
- Edit the JSON file directly
- Report what you did
File Locations
All under ~/.openclaw/clawline/ (override with clawline.statePath):
| File | Purpose |
|---|
pending.json | Devices waiting for approval |
allowlist.json | Approved devices |
denylist.json | Blocked devices (auto-rejected) |
The provider watches these files — edits apply immediately, no restart needed.
JSON Structure
pending.json / allowlist.json
{
"version": 1,
"entries": [
{
"deviceId": "A1B2C3...",
"claimedName": "flynn",
"deviceInfo": { "platform": "iOS", "model": "iPhone" },
"userId": "flynn",
"isAdmin": true,
"createdAt": 1706000000000,
"lastSeenAt": 1706000000000
}
]
}
denylist.json
[{ "deviceId": "X9Y8Z7...", "createdAt": 1706000000000 }]
Identity Fields
| Field | Description |
|---|
deviceId | Stable per device/app install (generated by app) |
claimedName | User-provided label (display only, not verified) |
userId | Server-assigned routing identity (authoritative) |
isAdmin | Manual flag — grants access to main session (agent:main:main) |
lastSeenAt | Timestamp of last connection (ms since epoch) |
Operations
List Pending
jq '.entries[] | {deviceId, claimedName, deviceInfo}' ~/.openclaw/clawline/pending.json
List Registered
jq '.entries[] | {deviceId, userId, claimedName, isAdmin, lastSeenAt}' ~/.openclaw/clawline/allowlist.json
Approve a Device
Move entry from pending.json to allowlist.json:
- Copy the entry from pending.json
- Add
userId (typically normalize claimedName: lowercase, punctuation → underscore)
- Set
isAdmin: false (or true if this should be admin)
- Add to allowlist.json entries
- Remove from pending.json entries
Deny a Device
- Remove from pending.json
- Optionally add deviceId to denylist.json to block future attempts
Revoke a Device
Remove the entry from allowlist.json. Device will need to re-pair.
Promote/Demote Admin
Edit allowlist.json, set isAdmin: true or false for the device.
Re-pair a Device
- Remove from allowlist.json
- User initiates pairing from app
- Approve the new pending request
Admin Access
isAdmin: true grants access to the main session (agent:main:main)
- Admin status must be set manually — not derived automatically
- Multiple devices can be admin
- First approved device is NOT auto-admin