Security Audit (Sona)

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If this wrapper is used, the audit result may depend on code outside the installed skill, so the user cannot verify from this package alone what will execute.

Why it was flagged

The included wrapper does not call the packaged scripts/run_audit_json.sh. It changes into a hard-coded external workspace and executes ./scripts/audit/run_audit_json.sh, which is not included in the supplied skill manifest. That creates a provenance gap and could run unreviewed local code.

Skill content
cd /home/virta/.openclaw/workspace/hybrid_orchestrator
REPORT=$(./scripts/audit/run_audit_json.sh "$TARGET")
Recommendation

Change the wrapper to call the bundled script by a path relative to the skill directory, or clearly remove/document the external dependency and include it in the reviewed package.

What this means

Running the wrapper without a target can inspect a much larger workspace than intended and may surface secrets or findings from unrelated projects.

Why it was flagged

The convenience wrapper defaults to scanning the whole OpenClaw workspace rather than requiring the user-specified repository path emphasized in SKILL.md. For a secrets/SAST audit, that is a broader local read scope than the primary documented command.

Skill content
TARGET="/home/virta/.openclaw/workspace"
Recommendation

Require an explicit target path by default, or prominently warn before scanning the whole workspace and keep the scan within the declared target scope.

What this means

A user or automation could mistakenly believe an audit passed because the command exited successfully.

Why it was flagged

The skill is advertised as fail-closed, but this wrapper always exits successfully even when findings exist. The JSON .ok field preserves the signal, but automated callers that rely on process status could treat a failed audit as passed.

Skill content
# Note: run_audit_json.sh uses exit code 10 for findings. We intentionally
# swallow non-zero exit codes here so callers always get a JSON payload.
...
# OpenClaw treats non-zero as tool failure. So we always exit 0.
# (Callers should read `.ok` in the JSON.)
exit 0
Recommendation

Make the fail-open wrapper behavior very prominent in user-facing docs, prefer the main runner for gating, and ensure any promotion/install workflow checks the JSON .ok field rather than only the exit code.

What this means

Audit output files or logs may reveal secrets discovered in the scanned repository.

Why it was flagged

The audit intentionally includes trufflehog secret-scan output in the JSON report. This is purpose-aligned, but those reports may contain sensitive credential findings from the scanned target.

Skill content
trufflehog filesystem "$TARGET" --no-update --json --log-level=-1 >"$TRUFFLE_OUT" 2>/dev/null || true
...
trufflehog: $truffle
Recommendation

Treat audit reports as sensitive, store them in restricted locations, avoid sharing them broadly, and redact secret values before posting results elsewhere.