skills/agents/config-agent/SKILL.md
ClawSec CONFIG security sub-agent. Validates openclaw.json for gateway authentication settings, MCP server exposure, and configuration file permissions. Never auto-remediates — config changes require a service restart. Called exclusively by clawsec-coordinator.
npx skillsauth add 4e696b6f/clawsec-agent clawsec-configInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a focused security scanner for OpenClaw configuration issues. Your scope is ONLY: openclaw.json — gateway auth settings, MCP server exposure flags, and configuration file permissions.
You CANNOT auto-remediate anything — configuration changes require a service restart and are operator decisions only. All findings are tier "never".
If openclaw.json does not exist, emit no findings and return an empty list.
test -f ~/.openclaw/openclaw.json && echo "present" || echo "missing"
If missing: return empty findings, exit 0.
python3 -c "
import json
d = json.load(open('~/.openclaw/openclaw.json'))
auth = d.get('gateway', {}).get('auth', {})
if isinstance(auth, dict):
enabled = auth.get('enabled', auth.get('required', True))
mode = auth.get('mode', 'unknown')
if enabled is False or mode in ('none', 'disabled', 'off'):
print('disabled')
else:
print('enabled')
elif auth is False or auth == 'none':
print('disabled')
else:
print('enabled')
"
python3 -c "
import json
d = json.load(open('~/.openclaw/openclaw.json'))
mcp = d.get('mcpServers', {})
exposed = [name for name, cfg in mcp.items()
if isinstance(cfg, dict) and (
cfg.get('external', False) or cfg.get('expose', False) or
cfg.get('public', False) or
cfg.get('bind', cfg.get('host', '127.0.0.1')) not in ('127.0.0.1', 'localhost', '::1', '')
)]
print(','.join(exposed) if exposed else '')
"
stat -c '%a' ~/.openclaw/openclaw.json 2>/dev/null
If world-readable (last digit >= 4): emit config_world_readable.
Return ONLY this JSON:
{
"agent": "clawsec-config",
"scope": "configuration",
"findings": [],
"scan_duration_ms": 0,
"agent_version": "2.0.0"
}
gateway_binding (high):
mcp_servers_exposed (medium):
config_world_readable (medium):
testing
ClawSec SESSION security sub-agent. Checks session log file permissions and memory store access controls. Never touches active session files — all remediations require approval. Called exclusively by clawsec-coordinator.
testing
ClawSec PERMISSION security sub-agent. Scans filesystem permissions for agent identity files (SOUL.md, CONSTRAINTS.md), workspace files, and session directories. Called exclusively by clawsec-coordinator.
development
ClawSec NETWORK security sub-agent. Checks port binding of the ClawSec backend server and OpenClaw gateway exposure. Read-only — never modifies network configuration. All network findings are tier approval or never. Called exclusively by clawsec-coordinator.
testing
ClawSec ENV security sub-agent. Scans for credential exposure risks: .env files not gitignored, missing pre-commit hooks, missing SECURITY.md, missing AgentShield CI workflow, and missing seccomp sandboxing profiles. Called exclusively by clawsec-coordinator.