Install
openclaw skills install @rushingai/openclaw-permissionsThis skill should be used when the user wants to audit, review, or list the permissions and access rights held by OpenClaw. Use it for requests like "check openclaw permissions", "show openclaw access", "what can openclaw access", "openclaw permission list", "review openclaw capabilities", "what APIs does openclaw use", "which channels is openclaw connected to", "what models does openclaw use", or "openclaw access audit". Produces a structured Markdown report covering API credentials, channel access, gateway configuration, tool execution rules, command permissions, device identity, and internal hooks — with all sensitive values masked.
openclaw skills install @rushingai/openclaw-permissionsRead OpenClaw configuration files and produce a structured permissions report showing what access rights OpenClaw currently holds, which services it is connected to, and what capabilities are allowed or denied.
Attempt to read the following files in order. If a file does not exist, mark all its fields as ⚠️ not configured in the report — do not silently skip it.
~/.openclaw/openclaw.json — main configuration~/.openclaw/exec-approvals.json — tool execution approvals~/.openclaw/identity/device-auth.json — device authentication~/.openclaw/identity/device.json — device identityExtract and report the following dimensions:
A. AI Model API Access
openclaw.json → auth.profiles, list each configured provider by name (e.g., anthropic, kimi-coding). Do not show credentials.openclaw.json → env, list the key names of API keys only. Never show values.openclaw.json → agents.defaults.model, show the default primary model and any configured fallbacks.B. Channel / Communication Access
openclaw.json → channels, for each channel entry show:
channels.<channel>.guilds[guildId].users[] — navigate to that path, not a top-level users key.C. Gateway Access
openclaw.json → gateway, show:
D. Tool Execution Permissions
openclaw.json → tools.profile, show the profile name.exec-approvals.json → agents, list per-agent tool approval rules by agent name and rule summary.exec-approvals.json → defaults, list the default tool approval rules.socket field from exec-approvals.json. It contains an IPC auth token and an absolute socket path. Skip it entirely.E. Command Permissions
openclaw.json → commands, show the allowFrom sources and whether restart is permitted.openclaw.json → session.dmScope, show the DM session scope value.F. Device Identity & Auth
identity/device-auth.json, show: first 8 chars of device ID only, whether a token is present (✅/❌) at tokens.operator, operator role at tokens.operator.role, operator scopes at tokens.operator.scopes.identity/device.json, show whether a public key is present (✅/❌). Do not output or acknowledge privateKeyPem in any way. Show key algorithm from publicKeyPem header only if identifiable without exposing key bytes.G. Internal Hooks
openclaw.json → hooks.internal.entries, list each hook entry by name and enabled status. Navigate to the .entries sub-key, not the parent hooks.internal object.Output as Markdown tables and grouped lists. Example structure:
## OpenClaw Permissions Report
### AI Model API
| Provider | Profile | Auth Mode | Status |
|----------|---------|-----------|--------|
| anthropic | anthropic:default | api_key | ✅ configured |
| kimi-coding | kimi-coding:default | api_key | ✅ configured |
Env API Keys: EXAMPLE_API_KEY ✅
Default model: provider/model-id
Fallback: provider/model-id
### Channel Access
| Channel | Status | Policy | Authorized Users | Streaming |
|---------|--------|--------|-----------------|-----------|
| Discord | ✅ enabled | allowlist | 1 user (XXXX...) | off |
Authorized guilds: 1
### Gateway
| Item | Value |
|------|-------|
| Mode | local |
| Port | XXXXX |
| Bind | loopback |
| Auth | token ✅ |
| Tailscale | off |
Denied commands: camera.snap · camera.clip · screen.record · ...
### Tool Permissions
- Permission profile: full
- Default approval rules: (none configured)
- Agent-specific rules: (none configured)
### Command Permissions
- Native commands: auto
- Native skills: auto
- Allow restart: ✅
- Commands allowed from Discord: ✅ (1 user)
- Session DM scope: per-channel-peer
### Internal Hooks
| Hook | Status |
|------|--------|
| boot-md | ✅ enabled |
| command-logger | ✅ enabled |
| session-memory | ✅ enabled |
| bootstrap-extra-files | ✅ enabled |
### Device Identity
- Device ID: XXXXXXXX... (configured)
- Public key: ✅ present (Ed25519)
- Operator token: ✅ present
- Operator role: operator
- Operator scopes: operator.admin
Never output:
privateKeyPem from device.json, treat it as equivalent to a password~/.openclaw/ notation, never /Users/<username>/...Safe to output:
Default rule for unrecognized fields: If a config file contains a field not covered by these rules, apply the most restrictive default — show existence only (✅ / ❌), never the value.
⚠️ not configured(empty)⚠️ unreadable