OpenClaw Security Audit Skill
Local-only skill that audits ~/.openclaw/openclaw.json, runs 15+ security
checks, and generates a detailed report using the user's existing LLM
configuration. No external APIs or keys required.
When to Use This Skill
- The user asks for a security audit of their OpenClaw instance.
- The user wants a remediation checklist for configuration risks.
- The user is preparing an OpenClaw deployment and wants a hardening review.
How It Works
- Read config with standard tools (
cat, jq).
- Extract security-relevant settings (NEVER actual secrets).
- Build a structured findings object with metadata only.
- Pass findings to the user's LLM via OpenClaw's normal agent flow.
- Generate a markdown report with severity ratings and fixes.
Inputs
- target_config_path (optional): Path to OpenClaw config file.
- default: ~/.openclaw/openclaw.json
Outputs
- Markdown report including:
- Overall risk score (0-100)
- Findings categorized by severity (Critical/High/Medium/Low)
- Each finding with description, why it matters, how to fix, example config
- Prioritized remediation roadmap
Security Checks (15+)
- API keys hardcoded in config (vs environment variables)
- Weak or missing gateway authentication tokens
- Unsafe gateway.bind settings (0.0.0.0 without proper auth)
- Missing channel access controls (allowFrom not set)
- Unsafe tool policies (elevated tools without restrictions)
- Sandbox disabled when it should be enabled
- Missing rate limits on channels
- Secrets potentially exposed in logs
- Outdated OpenClaw version
- Insecure WhatsApp configuration
- Insecure Telegram configuration
- Insecure Discord configuration
- Missing audit logging for privileged actions
- Overly permissive file system access scopes
- Unrestricted webhook endpoints
- Insecure default admin credentials
Data Handling Rules
- Strip all secrets before analysis.
- Only report metadata such as present/missing/configured.
- Do not log or emit actual key values.
- Use local-only execution; no network calls.
Example Findings Object (Redacted)
{
"config_path": "~/.openclaw/openclaw.json",
"openclaw_version": "present",
"gateway": {
"bind": "0.0.0.0",
"auth_token": "missing"
},
"channels": {
"allowFrom": "missing",
"rate_limits": "missing"
},
"secrets": {
"hardcoded": "detected"
},
"tool_policies": {
"elevated": "unrestricted"
}
}
Report Format
The report must include:
- Overall risk score (0-100)
- Severity buckets: Critical, High, Medium, Low
- Each finding: description, why it matters, how to fix, example config
- Prioritized remediation roadmap
Skill Flow (Pseudo)
read_config_path = input.target_config_path || ~/.openclaw/openclaw.json
raw_config = cat(read_config_path)
json = jq parse raw_config
metadata = extract_security_metadata(json)
findings = build_findings(metadata)
report = openclaw.agent.analyze(findings, format=markdown)
return report
Notes
- Uses the user's existing OpenClaw LLM configuration (Opus, GPT, Gemini, and
local models).
- No external APIs or special model access are required.
1---2name: openclaw-security-audit-23description: Audit OpenClaw configuration for security risks and generate a remediation report using the user's configured LLM.4---5
6# OpenClaw Security Audit Skill
7
8Local-only skill that audits `~/.openclaw/openclaw.json`, runs 15+ security
9checks, and generates a detailed report using the user's existing LLM
10configuration. No external APIs or keys required.
11
12## When to Use This Skill
13
14- The user asks for a security audit of their OpenClaw instance.
15- The user wants a remediation checklist for configuration risks.
16- The user is preparing an OpenClaw deployment and wants a hardening review.
17
18## How It Works
19
201. Read config with standard tools (`cat`, `jq`).
212. Extract security-relevant settings (NEVER actual secrets).
223. Build a structured findings object with metadata only.
234. Pass findings to the user's LLM via OpenClaw's normal agent flow.
245. Generate a markdown report with severity ratings and fixes.
25
26## Inputs
27
28- target_config_path (optional): Path to OpenClaw config file.
29 - default: ~/.openclaw/openclaw.json
30
31## Outputs
32
33- Markdown report including:
34 - Overall risk score (0-100)
35 - Findings categorized by severity (Critical/High/Medium/Low)
36 - Each finding with description, why it matters, how to fix, example config
37 - Prioritized remediation roadmap
38
39## Security Checks (15+)
40
411. API keys hardcoded in config (vs environment variables)
422. Weak or missing gateway authentication tokens
433. Unsafe gateway.bind settings (0.0.0.0 without proper auth)
444. Missing channel access controls (allowFrom not set)
455. Unsafe tool policies (elevated tools without restrictions)
466. Sandbox disabled when it should be enabled
477. Missing rate limits on channels
488. Secrets potentially exposed in logs
499. Outdated OpenClaw version
5010. Insecure WhatsApp configuration
5111. Insecure Telegram configuration
5212. Insecure Discord configuration
5313. Missing audit logging for privileged actions
5414. Overly permissive file system access scopes
5515. Unrestricted webhook endpoints
5616. Insecure default admin credentials
57
58## Data Handling Rules
59
60- Strip all secrets before analysis.
61- Only report metadata such as present/missing/configured.
62- Do not log or emit actual key values.
63- Use local-only execution; no network calls.
64
65## Example Findings Object (Redacted)
66
67```json
68{
69 "config_path": "~/.openclaw/openclaw.json",
70 "openclaw_version": "present",
71 "gateway": {
72 "bind": "0.0.0.0",
73 "auth_token": "missing"
74 },
75 "channels": {
76 "allowFrom": "missing",
77 "rate_limits": "missing"
78 },
79 "secrets": {
80 "hardcoded": "detected"
81 },
82 "tool_policies": {
83 "elevated": "unrestricted"
84 }
85}
86```
87
88## Report Format
89
90The report must include:
91
92- Overall risk score (0-100)
93- Severity buckets: Critical, High, Medium, Low
94- Each finding: description, why it matters, how to fix, example config
95- Prioritized remediation roadmap
96
97## Skill Flow (Pseudo)
98
99```text
100read_config_path = input.target_config_path || ~/.openclaw/openclaw.json
101raw_config = cat(read_config_path)
102json = jq parse raw_config
103metadata = extract_security_metadata(json)
104findings = build_findings(metadata)
105report = openclaw.agent.analyze(findings, format=markdown)
106return report
107```
108
109## Notes
110
111- Uses the user's existing OpenClaw LLM configuration (Opus, GPT, Gemini, and
112 local models).
113- No external APIs or special model access are required.