Skip to main content

ClawShield

PyPI version Python versions CI PyPI downloads

ClawShield detects high-risk misconfigurations in OpenClaw agents before they become exposed attack surfaces.

It is the first release under the PolicyGate umbrella — a runtime policy enforcement framework for AI agents.

Why This Exists

AI agents are often deployed:

  • Publicly bound to 0.0.0.0
  • With authentication disabled
  • Inside privileged or root containers
  • With API keys sitting in .env files
  • Without file permission hardening

These are not theoretical risks — they are common misconfigurations.

ClawShield surfaces them deterministically and exits non-zero in CI when thresholds are exceeded.

What ClawShield Checks

Network Exposure

  • Public bind address (0.0.0.0, ::)
  • Authentication disabled while publicly exposed

Container Posture

  • Containers running as root
  • Containers running in privileged mode

Secrets Handling

  • API keys present in .env files
  • API key references inside config files

File Permissions

  • World-writable config files
  • World-readable or world-writable .env files

What ClawShield Does NOT Check

  • Runtime exploitability
  • Kernel vulnerabilities
  • Docker daemon hardening
  • Firewall configuration
  • Intrusion detection
  • Secrets entropy analysis
  • Cloud IAM posture

ClawShield is a static audit tool, not a runtime protection system.

Quick Start (Users)

pip install clawshield

Run audit:

clawshield path/to/openclaw.yaml

JSON mode:

clawshield --json path/to/openclaw.yaml

Fail CI on severity threshold:

clawshield --fail-on high path/to/openclaw.yaml

Severity ranking:

low < medium < high < critical

Exit Codes

Code Meaning
0 No findings at or above threshold
1 Findings at or above threshold

Example JSON Output

{
  "meta": {
    "schema_version": "0.1",
    "tool_version": "0.3.0",
    "policy_path": "clawshield/policies/vps_public.yaml"
  },
  "facts": [
    {
      "key": "network.bind_address",
      "value": "0.0.0.0",
      "source": "openclaw_config:openclaw.yaml"
    },
    {
      "key": "runtime.auth_enabled",
      "value": false,
      "source": "openclaw_config:openclaw.yaml"
    }
  ],
  "findings": [
    {
      "rule_id": "NET-001",
      "title": "Public bind address with authentication disabled",
      "severity": "critical",
      "confidence": "high",
      "evidence": [],
      "recommended_actions": ["ACT-ENABLE-AUTH"],
      "autofix_available": true
    }
  ]
}

JSON output is deterministic and schema-versioned. Golden tests lock the schema to prevent drift.

Architecture

ClawShield consists of:

  • Scanners — Collect facts from runtime and configuration
  • Policy Engine — Evaluates YAML rules against collected facts
  • Structured Output — Designed for automation and CI pipelines

Scanners are modular and isolated from the engine core.

Roadmap

  • Continuous monitoring mode
  • Additional runtime adapters
  • Expanded Docker hardening checks
  • Policy bundles
  • Advanced secrets detection
  • Signed policy packs

Status

Early release. Actively evolving.

Feedback and contributions welcome.

License

Apache 2.0

Security Disclaimer

ClawShield surfaces rule-based misconfigurations according to the active policy set. It does not guarantee system security.

Metadata

Release files for clawshield 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clawshield 0.4.1
File Size Uploaded
clawshield-0.4.1.tar.gz 28.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for clawshield 0.4.1
File Interpreter ABI Platform
clawshield-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 50.7 kB

Release files / clawshield-0.4.1.tar.gz

Download URL clawshield-0.4.1.tar.gz
Size 28.6 kB
Tags Source
SHA-256 checksum
How to use checksums
baccfb73f2c7165828ea749ae49e7f5101902faf2ba8c06d7147be1b0ec10823
BLAKE2b-256 checksum
How to use checksums
54702b5e31acc74efbba82198d8cf6e2d56e34ac8ca8d4c72b244724af95c693
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / clawshield-0.4.1-py3-none-any.whl

Download URL clawshield-0.4.1-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a743d747c2deed62517bfbdfa64ce79343dc4926c836eb8994415114fcd0c89f
BLAKE2b-256 checksum
How to use checksums
87f37aeb010aedd37d4f50d0d4a6214bdb6162b135dfdc5ff80fb37fd230e60b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page