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---56# OpenClaw Security Audit Skill78Local-only skill that audits `~/.openclaw/openclaw.json`, runs 15+ security9checks, and generates a detailed report using the user's existing LLM10configuration. No external APIs or keys required.1112## When to Use This Skill1314- 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.1718## How It Works19201. 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.2526## Inputs2728- target_config_path (optional): Path to OpenClaw config file.29 - default: ~/.openclaw/openclaw.json3031## Outputs3233- 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 config37 - Prioritized remediation roadmap3839## Security Checks (15+)40411. API keys hardcoded in config (vs environment variables)422. Weak or missing gateway authentication tokens433. 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 enabled477. Missing rate limits on channels488. Secrets potentially exposed in logs499. Outdated OpenClaw version5010. Insecure WhatsApp configuration5111. Insecure Telegram configuration5212. Insecure Discord configuration5313. Missing audit logging for privileged actions5414. Overly permissive file system access scopes5515. Unrestricted webhook endpoints5616. Insecure default admin credentials5758## Data Handling Rules5960- 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.6465## Example Findings Object (Redacted)6667```json68{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```8788## Report Format8990The report must include:9192- Overall risk score (0-100)93- Severity buckets: Critical, High, Medium, Low94- Each finding: description, why it matters, how to fix, example config95- Prioritized remediation roadmap9697## Skill Flow (Pseudo)9899```text100read_config_path = input.target_config_path || ~/.openclaw/openclaw.json101raw_config = cat(read_config_path)102json = jq parse raw_config103metadata = extract_security_metadata(json)104findings = build_findings(metadata)105report = openclaw.agent.analyze(findings, format=markdown)106return report107```108109## Notes110111- Uses the user's existing OpenClaw LLM configuration (Opus, GPT, Gemini, and112 local models).113- No external APIs or special model access are required.