Blog

How to Integrate ClawAudit's Security API Into Your AI Agent Workflow

March 8, 2026 · 8 min read · By 4Worlds

OpenClaw's registry has over 19,000 skills. Any skill can request shell access, read your files, or make network requests. There's no built-in review process. If your agent installs a skill, it runs with whatever permissions the skill asks for.

ClawAudit provides a free REST API that performs static security analysis on any OpenClaw skill. No API key required, no rate limits beyond 60 requests per minute. You get back a trust score, a tier rating, specific findings, compound threat detection, and a capability breakdown.

This guide covers how to integrate it into your workflow: single skill checks, CI/CD gates, agent self-auditing, and bulk scanning.

The API in 30 seconds

One endpoint. Pass an OpenClaw slug, get back a full security report.

GET request

curl https://api.clauwdit.4worlds.dev/audit/author/skill-name

POST request

curl -X POST https://api.clauwdit.4worlds.dev/audit \
  -H "Content-Type: application/json" \
  -d '{"skill": "author/skill-name"}'

Both return the same JSON response. Results are cached for 24 hours.

Reading the response

Here's what a clean skill looks like:

{
  "trust": {
    "tier": "Trusted",
    "score": 90,
    "description": "Low risk — minimal permissions, no red flags detected"
  },
  "scores": {
    "security": 10,
    "transparency": 9,
    "maintenance": 7,
    "overall": 9
  },
  "capabilities": [],
  "compoundThreats": [],
  "findings": [],
  "summary": { "total": 0, "critical": 0, "high": 0 }
}

And here's a skill with problems:

{
  "trust": {
    "tier": "Dangerous",
    "score": 20,
    "description": "Critical risks detected — do not install"
  },
  "compoundThreats": [
    {
      "id": "remote_code_execution",
      "severity": "critical",
      "description": "Fetches from network AND uses eval/Function"
    }
  ],
  "capabilities": ["network_out", "dynamic_eval", "credential_access"],
  "summary": { "total": 8, "critical": 3, "high": 2 }
}

Key fields to check

  • trust.tier: Trusted, Caution, Risky, or Dangerous. Anything Dangerous should not be installed without manual review.
  • trust.score: 0 to 100. Below 40 means multiple red flags.
  • compoundThreats: Multi-signal attack patterns. A skill that reads files AND makes network requests AND accesses credentials is flagged as potential data exfiltration, not just three separate findings.
  • capabilities: What the skill actually does in its code blocks: network_out, file_read, process_exec, dynamic_eval, credential_access, etc.
  • permissionIntegrity: Mismatches between what a skill declares and what it actually does. A skill that makes network requests but doesn't declare curl in its required binaries is suspicious.

Use case 1: Check before install

The simplest integration. Before your agent installs a skill, hit the API and check the tier.

async function isSkillSafe(slug) {
  const res = await fetch(
    `https://api.clauwdit.4worlds.dev/audit/${slug}`
  );
  const report = await res.json();

  if (report.trust.tier === 'Dangerous') {
    console.warn(`Blocked: ${slug} scored ${report.trust.score}/100`);
    return false;
  }

  if (report.summary.critical > 0) {
    console.warn(`Warning: ${slug} has ${report.summary.critical} critical findings`);
    return false;
  }

  return true;
}

Use case 2: CI/CD security gate

If your project depends on OpenClaw skills, add a security check to your CI pipeline. This script reads a list of skill slugs and fails the build if any are Dangerous.

#!/bin/bash
# .github/scripts/audit-skills.sh
SKILLS="author/skill-one author/skill-two author/skill-three"
FAILED=0

for slug in $SKILLS; do
  tier=$(curl -sf "https://api.clauwdit.4worlds.dev/audit/$slug" \
    | jq -r '.trust.tier')
  echo "$slug: $tier"
  if [ "$tier" = "Dangerous" ]; then
    echo "BLOCKED: $slug is Dangerous"
    FAILED=1
  fi
done

exit $FAILED

Add this to your GitHub Actions workflow as a step that runs before deployment. Skills are cached server-side, so repeat calls are fast.

Use case 3: Agent self-auditing

If you're building an AI agent that installs OpenClaw skills on its own, you can give the agent a tool that checks ClawAudit before installation. This is the most important use case. An agent that blindly installs skills from a registry is a supply chain attack waiting to happen.

// Tool definition for an AI agent framework
{
  "name": "audit_skill",
  "description": "Check an OpenClaw skill for security risks before installing it",
  "parameters": {
    "slug": { "type": "string", "description": "OpenClaw skill slug (author/name)" }
  },
  "handler": async ({ slug }) => {
    const res = await fetch(
      `https://api.clauwdit.4worlds.dev/audit/${slug}`
    );
    const report = await res.json();
    return {
      safe: report.trust.tier !== 'Dangerous',
      score: report.trust.score,
      tier: report.trust.tier,
      threats: report.compoundThreats.length,
      critical: report.summary.critical,
      capabilities: report.capabilities
    };
  }
}

The agent gets a structured response it can reason about. "This skill scores 20/100, has 3 critical findings, and fetches from the network while using eval. Don't install it."

Use case 4: Bulk scanning with Python

If you need to audit many skills at once, here's a Python script that respects the rate limit (60/min) and outputs a CSV.

import requests, time, csv, sys

API = "https://api.clauwdit.4worlds.dev/audit"
slugs = ["author/skill-one", "author/skill-two"]  # your list

writer = csv.writer(sys.stdout)
writer.writerow(["slug", "score", "tier", "critical", "threats", "capabilities"])

for i, slug in enumerate(slugs):
    if i > 0 and i % 55 == 0:
        time.sleep(60)  # stay under rate limit
    r = requests.get(f"{API}/{slug}")
    d = r.json()
    writer.writerow([
        slug,
        d["trust"]["score"],
        d["trust"]["tier"],
        d["summary"]["critical"],
        len(d.get("compoundThreats", [])),
        ",".join(d.get("capabilities", []))
    ])

What the analyzer detects

ClawAudit's static analyzer runs 115 detection patterns across multiple categories. It's not just regex matching. The analyzer parses the skill's markdown into semantic zones (code blocks, prose, frontmatter, headings) and weights findings by context. A mention of eval() in a security warning section is suppressed. The same pattern in a code block the agent would execute is full severity.

Detection categories

  • Code execution: eval, Function constructor, subprocess, os.system, child_process, dynamic imports
  • Shell injection: pipe-to-bash, curl|sh, command injection patterns
  • Obfuscation: base64 payloads, Unicode homoglyph evasion, zero-width character insertion, bracket notation eval
  • Network: fetch, requests, urllib, bare IP addresses, webhook callbacks
  • Credential theft: env var access, cloud credential paths (.aws, .gcloud, .kube), /proc/self/environ
  • Prompt injection: instruction override attempts, identity redefinition, covert action directives
  • Privilege escalation: sudo references, setuid, history clearing, sensitive file access
  • Supply chain: runtime package installation, opaque dependencies, pip/npm/apt install in code

On top of individual patterns, 20 compound threat rules detect multi-signal attacks. A skill that reads files, encodes data, and sends it to an external server isn't just three medium findings. It's flagged as "obfuscated data exfiltration" at critical severity.

Registry-wide numbers

We've scanned every skill on OpenClaw. Here's the current breakdown of 19,461 skills:

  • 43.3% Trusted (8,433 skills): No red flags, minimal or well-declared permissions
  • 23.6% Caution (4,599 skills): Some capabilities, minor findings
  • 25.0% Risky (4,874 skills): Significant capabilities or findings that warrant review
  • 8.0% Dangerous (1,555 skills): Critical findings, compound threats, or known attack patterns

You can browse the full results on our registry page or query any skill directly through the API.

Rate limits and caching

The API allows 60 requests per minute per IP address. Results are cached for 24 hours server-side, so hitting the same skill twice costs nothing. There's no authentication required and no usage tiers. The API is free.

If you need higher throughput for bulk operations, space your requests at ~1 per second and you'll stay well within limits.

Get started

Try it now:

curl https://api.clauwdit.4worlds.dev/audit/potdealer/exoskeletons

Or use the search on our homepage to look up any skill by name. Full API documentation here.

For more on the threats the API detects, read about prompt injection in AI agent skills or see our guide on how to audit a skill before installing.