Your OpenClaw agent reads your messages, remembers your conversations, holds your keys, and acts on your behalf. That power is exactly what attackers want to borrow: one poisoned message or one malicious skill can quietly turn your agent against you.
ClawSecCheck is a security check-up for your agent. It examines your setup, grades it AβF, and explains β in plain language, right in your chat β what is risky and why. It only reports: it never changes anything, needs no API key, and the scanner itself makes no network calls β no telemetry, no uploads, ever.
π Start in one minute β no terminal needed
1. Tell your agent:
Install the clawseccheck skill from ClawHub.
β¦or with a command: openclaw skills install @gl0di/clawseccheck Β· skill page on ClawHub
2. Then ask:
Audit my OpenClaw setup with clawseccheck.
3. Your grade and the most urgent problems appear right in the chat. Done.
What you'll see β a real report against a deliberately vulnerable test setup:
π¬ You talk β it audits
No flags, no commands. Everything works as a conversation:
| You say | You get |
|---|---|
| "Audit my OpenClaw setup" | Your AβF grade + the urgent problems, most dangerous first |
| "Is this skill safe to install?" | A pre-install risk verdict with the reasons β flags suspicious and dangerous skills before you enable them |
| "Am I vulnerable to prompt injection?" | An optional canary self-test you run against your own agent, alongside the static audit |
| "Watch my setup for changes" | Alerts when something changes β a new skill, config drift, a dropped score |
| "What's the most important thing to look at?" | A prioritised next-steps list based on your findings |
| "Share my grade" | A badge with the grade only β your findings stay private |
| "I think I've been hacked" | An evidence-preservation bundle for investigation |
π What it checks
| Area | The question it answers |
|---|---|
| π Exposure & network | Can strangers reach your agent β open gateway, open DMs, missing TLS? |
| β‘ Privilege & execution | Could one injected message run commands or write files on your machine? |
| π§© Installed skills & plugins | Is anything you installed malicious β hidden payloads, credential theft, supply-chain traps? |
| π Prompt-injection surface | Can untrusted text steer your agent through chat context or bootstrap files? |
| π Secrets & data at rest | Are your tokens, keys, and conversations lying around readable? |
| π‘ Monitoring & readiness | Would you even notice a compromise β and could you investigate it? |
On top of the 143 individual checks, a risk engine hunts for deadly combinations β chains like "untrusted input β reachable secrets β outbound tool" that make an attack trivial. Full list: check catalog.
π Why ClawSecCheck
- Private by architecture. Unlike scanners that upload your configuration for analysis, ClawSecCheck's engine runs entirely on your machine. No account, no API key β and the scanner contains no telemetry client and makes no network requests.
- Sees what the built-in audit misses. OpenClaw's own audit doesn't inspect
your bootstrap files (
SOUL.md,AGENTS.md, β¦) β the ones injected straight into the model as trusted context. ClawSecCheck checks them for injection. It also runs the native audit for you and folds the results into one report. - Protects you before it's too late. After the ClawHavoc wave of credential-stealing skills, "check before install" matters: ask it to vet any skill, plugin, or MCP server before you enable it.
- Honest by design. What it can't determine is reported as
UNKNOWNβ never quietly counted as safe. An open CRITICAL finding hard-caps your score: you can never get a pretty "A" with a real hole in it. - Built like it matters. 6,237 automated tests run on every change, a false alarm is treated as a release-blocking bug, and every release is cryptographically signed.
- Free and readable. MIT-licensed, pure Python standard library, zero dependencies β the entire engine is source you can read.
π Safe to run
The tool that audits your agent survives an audit itself: it is read-only
with respect to your OpenClaw setup (it never touches your config, skills, or
bootstrap files), its engine is offline by design, and it writes only its
own local history under ~/.clawseccheck/ β removable any time by asking your
agent to "purge the clawseccheck data".
One honest nuance: when you use it through OpenClaw chat, the report text becomes part of your conversation and is handled by whatever model provider your agent already uses β the scanner itself adds no channel of its own. Details: security model Β· FAQ.
Every release ships a SHA256SUMS.txt signed with keyless
cosign; clawseccheck --verify-self
prints your copy's digest to compare.
# Get the release assets (adjust the version):
curl -LO https://github.com/gl0di/clawseccheck/releases/download/vX.Y.Z/SHA256SUMS.txt
curl -LO https://github.com/gl0di/clawseccheck/releases/download/vX.Y.Z/SHA256SUMS.txt.bundle
cosign verify-blob \
--bundle SHA256SUMS.txt.bundle \
--certificate-identity-regexp "^https://github.com/gl0di/clawseccheck/" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
SHA256SUMS.txt
A passing verification proves the reference digest was produced by this repo's release workflow and hasn't been altered since.
ClawSecCheck is also a full standalone CLI (zero dependencies, Python 3.9+):
pipx install "git+https://github.com/gl0di/[email protected]" # pin a release tag (recommended)
pipx install git+https://github.com/gl0di/clawseccheck # or track the latest source
clawseccheck # audits ~/.openclaw by default
clawseccheck --json # machine-readable result
clawseccheck --sarif results.sarif # SARIF 2.1.0 for GitHub Code Scanning
clawseccheck --html report.html # standalone HTML report (private)
clawseccheck --fail-under 70 # CI gate: exit 1 if score < 70
The User guide covers the modes and recipes β vetting engines,
drift monitoring, attestation, red-team self-tests. clawseccheck --help is the
complete flag list.
[!IMPORTANT] An honest limit: a clean report means "no known attack pattern matched" β not "provably safe." Most checks are static: they bound what your agent can do, not how it behaves under a live attack. The optional self-tests exercise selected live paths but are graded by your own agent, so they can't prove safety against arbitrary attacks either.
UNKNOWNis always shown asUNKNOWN, never hidden. The full, unvarnished list of limitations is in the User guide.
π Documentation
| Document | What it covers |
|---|---|
| User guide | Recipes, monitoring modes, and trust details |
| Check catalog | All 143 checks: what they verify and how to remediate |
| Threat coverage | OWASP LLM Top 10 / Agentic threat mapping |
| Output schema | The frozen --json / SARIF contract |
| FAQ | Common questions, incl. the compromised-host protocol |
| Security model | ClawSecCheck's own capability surface and self-defense |
| Contributing | Dev setup, tests, how to author a new check |
π Feedback, security, license
- Something looks wrong? Open an issue β false alarms are treated as bugs.
- Found a vulnerability? Report privately via SECURITY.md.
- License: MIT. Maintained by gl0di.
No comments yet
Be the first to share your take.