clawnedhub - Scan and Security your OpenClaw Instances
v1.0.1Security agent that inventories installed OpenClaw skills, analyzes them for threats, and syncs results to your Clawned dashboard.
Security Scan
OpenClaw
Benign
medium confidencePurpose & Capability
Name/description (security scanner for OpenClaw skills) aligns with requested items: python3 runtime and a CLAWNED_API_KEY for communicating with a Clawned server. The code only contacts the CLAWNED_SERVER endpoint and uses the API key; no unrelated cloud credentials or extra binaries are requested.
Instruction Scope
Runtime instructions and the script are mostly scoped correctly: 'sync' discovers skills and uploads metadata, 'scan --path' collects source files and sends them to the server. However SKILL.md omits one runtime behavior the code performs: the agent registers itself by sending hostname and OS to the server during first sync. The SKILL.md privacy statements about 'what is sent' should mention agent registration.
Install Mechanism
No install spec (instruction-only + Python script included). No remote installers, no downloads, no package manager operations. The risk surface comes from the included script executing on the host, not from an installer.
Credentials
Only CLAWNED_API_KEY (and optional CLAWNED_SERVER) are required. This is proportionate to a service that uploads metadata and scanned files. The skill does read ~/.openclaw/openclaw.json to locate extraDirs; that is plausible for its purpose but is flagged by detection rules as sensitive (see scan findings).
Persistence & Privilege
always:false and model invocation defaults are normal. The script writes a local state file (~/.openclaw/clawned_agent.json) to persist agent_id/last_sync; it does not attempt system-wide changes, cron modification, or alter other skills. No elevated privileges or persistence mechanisms are requested by the code.
Scan Findings in Context
[CRED-001] expected: The detection patterns flag reading openclaw.json as sensitive because it can contain API keys for other skills. The agent does read ~/.openclaw/openclaw.json, but the code only extracts skills.load.extraDirs and does not transmit the file contents. This behavior is consistent with locating skill directories, but reading that file is a privacy/safety-sensitive action and should be documented explicitly.
Assessment
This skill appears to implement what it claims: it discovers installed skills and uploads metadata during 'sync', and only uploads file contents when you explicitly run 'scan --path'. Before installing or enabling it: 1) Verify you trust the CLAWNED_SERVER (default https://api.clawned.io) — scanned files will be sent there on explicit scans. 2) Create a minimally-privileged CLAWNED_API_KEY and avoid putting other secrets in skill source files. 3) Note the agent will register itself (sends hostname and OS) and persist a small state file at ~/.openclaw/clawned_agent.json; decide whether you’re comfortable with that telemetry. 4) Review the remainder of scripts/agent.py (especially the full cmd_scan implementation) if you need stronger guarantees about exactly which files are uploaded. 5) If in doubt, run the agent in an isolated/test environment first or audit network traffic to the server to confirm behavior.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
🛡️ Clawdis
Binspython3
EnvCLAWNED_API_KEY
latest
Clawned — Security Agent for OpenClaw
Automatically discovers all installed skills, analyzes them for security threats, and syncs results to your Clawned dashboard.
Setup
Configure your API key in openclaw.json:
{
"skills": {
"entries": {
"clawned": {
"enabled": true,
"env": {
"CLAWNED_API_KEY": "cg_your_api_key_here",
"CLAWNED_SERVER": "https://api.clawned.io"
}
}
}
}
}
Commands
Sync all installed skills to dashboard
python3 {baseDir}/scripts/agent.py sync
Scan a single skill locally
python3 {baseDir}/scripts/agent.py scan --path <skill-directory>
List all discovered skills
python3 {baseDir}/scripts/agent.py inventory
Check agent status
python3 {baseDir}/scripts/agent.py status
Data & Privacy
During sync (default operation):
- Sends only skill metadata: name, owner, slug, version
- No file contents are uploaded
- No
.envfiles or secrets are ever read
During scan --path (explicit user action only):
- Reads source files (
.md,.py,.js, etc.) from the specified skill directory for analysis .envfiles are excluded from scanning- File contents are sent to the Clawned server for security analysis
Local config access:
- Reads
~/.openclaw/openclaw.jsononly to locate skill directories (extraDirs paths) - No credentials or secrets are read from config files
Automatic Sync
Schedule every 6 hours via OpenClaw cron:
{
"jobs": [
{
"schedule": "0 */6 * * *",
"command": "Run clawned sync to check all installed skills",
"description": "Security scan every 6 hours"
}
]
}
Comments
Loading comments...
