Enforce least privilege and report host, network, and compliance violations with evidence and mitigations.
Security
Cyber Security Engineer
Govern OpenClaw privileged execution and report local port, egress, and compliance violations.
What it does
Enforces approval-first, least-privilege execution for OpenClaw with command policies, session scoping, audit logs, and a 30-minute idle timeout. It checks local listening ports and outbound connections against reviewed baselines, then produces JSON findings, a structured summary, and an HTML compliance dashboard mapped to ISO 27001 and NIST.
When to use it
- Guarding OpenClaw sudo commands
- Auditing listening ports and egress
- Reviewing ISO 27001 and NIST control gaps
- Generating a local compliance dashboard
The skill document
Cyber Security Engineer
Requirements
Required tools:
python3(>= 3.8)openclawCLI (installed vianpmduring bootstrap, or pre-installed)npm(only needed for bootstrap ifopenclawis not already installed)- One of
lsof,ss, ornetstatfor port/egress checks stat,readlink(standard on macOS/Linux, used by the runtime hook installer)
Env vars (all optional, documented for configuration):
OPENCLAW_REQUIRE_POLICY_FILES— set to1to block privileged execution when policy files are missingOPENCLAW_REQUIRE_SESSION_ID— set to1to require a task session id for each privileged actionOPENCLAW_TASK_SESSION_ID— per-task session id (used whenOPENCLAW_REQUIRE_SESSION_ID=1)OPENCLAW_APPROVAL_TOKEN— if set, requires this token during the approval stepOPENCLAW_UNTRUSTED_SOURCE— set to1to flag the current content source as untrustedOPENCLAW_VIOLATION_NOTIFY_CMD— absolute path to a notifier binary (must also be allowlisted)OPENCLAW_VIOLATION_NOTIFY_ALLOWLIST— JSON array of allowed argv arrays, or comma-separated absolute pathsOPENCLAW_REAL_SUDO— override path to the real sudo binary (used by the runtime hook shim)OPENCLAW_PYTHON3— override path to python3 (used by the runtime hook shim)OPENCLAW_CYBER_SKILL_DIR— override path to the skill directory (used by the runtime hook shim)OPENCLAW_ALLOW_NONINTERACTIVE_SUDO— set to1to allow non-interactive sudo through the shim (default: blocked)OPENCLAW_PRIV_REASON— human-readable reason passed to the guarded execution wrapperOPENCLAW_VIOLATION_NOTIFY_STATE— override path to the notification state fileOPENCLAW_SKIP_PLIST_CONFIRM— set to1to skip the interactive confirmation before modifying the macOS LaunchAgent plist
Policy files (admin reviewed):
~/.openclaw/security/approved_ports.json~/.openclaw/security/command-policy.json~/.openclaw/security/egress_allowlist.json~/.openclaw/security/prompt-policy.json
Implement these controls in every security-sensitive task:
- Keep default execution in normal (non-root) mode.
- Request explicit user approval before any elevated command.
- Scope elevation to the minimum command set required for the active task.
- Drop elevated state immediately after the privileged command completes.
- Expire elevated state after 30 idle minutes and require re-approval.
- Monitor listening network ports and flag insecure or unapproved exposure.
- Monitor outbound connections and flag destinations not in the egress allowlist.
- If no approved baseline exists, generate one with
python3 scripts/generate_approved_ports.py, then review and prune. - Benchmark controls against ISO 27001 and NIST and report violations with mitigations.
Runtime Hook (sudo shim)
The script scripts/install-openclaw-runtime-hook.sh installs an opt-in sudo
shim at ~/.openclaw/bin/sudo. This shim shadows the system sudo binary by
prepending ~/.openclaw/bin to PATH in the OpenClaw gateway process.
What it does:
- Intercepts
sudoinvocations and routes them throughguarded_privileged_exec.py - Requires explicit interactive user approval before running any privileged command
- Enforces command policy allow/deny rules, audit logging, and a 30-minute idle timeout
- Blocks non-interactive sudo by default (prevents automated abuse)
- Passes through harmless flags (
-h,--version,-k,-l) directly to real sudo
What it does NOT do:
- It does not replace or modify the system sudo binary
- It does not grant itself any elevated permissions
- It only affects processes whose
PATHincludes~/.openclaw/binbefore/usr/bin
Opt-in: The hook is not installed by default. To enable it, run bootstrap with
ENFORCE_PRIVILEGED_EXEC=1. On macOS, the installer will prompt for confirmation
before modifying the gateway LaunchAgent plist. The shim can be removed at any time
by deleting ~/.openclaw/bin/sudo.
File Writes
This skill writes only to ~/.openclaw/ and the assessments/ directory inside the
skill folder. No files are written outside these two trees.
Under ~/.openclaw/ (user config/state):
~/.openclaw/security/approved_ports.json— generated port baseline (bygenerate_approved_ports.py)~/.openclaw/security/root-session-state.json— elevated session state (byroot_session_guard.py)~/.openclaw/security/privileged-audit.jsonl— append-only audit log (byaudit_logger.py)~/.openclaw/security/violation-notify-state.json— notification diff state (bynotify_on_violation.py)~/.openclaw/bin/sudo— opt-in sudo shim (byinstall-openclaw-runtime-hook.sh, see Runtime Hook section)~/.openclaw/logs/cyber-security-engineer-auto.log— auto-cycle run log (byauto_invoke_cycle.sh)
Under assessments/ (inside skill directory):
assessments/openclaw-assessment.json— compliance check resultsassessments/compliance-summary.json— structured summary for tools/integrationsassessments/compliance-dashboard.html— human-readable report pageassessments/port-monitor-latest.json— latest open-port scan outputassessments/egress-monitor-latest.json— latest outbound connection scan output
Temporary files:
- A short-lived temp file via
tempfile.NamedTemporaryFile(bygenerate_approved_ports.py) — auto-cleaned
No files are written to /usr/, /etc/, or any system directory.
Non-Goals (Web Browsing)
- Do not use web browsing / web search as part of this skill. Keep assessments and recommendations based on local host/OpenClaw state and the bundled references in this skill.
Files To Use
references/least-privilege-policy.mdreferences/port-monitoring-policy.mdreferences/compliance-controls-map.jsonreferences/approved_ports.template.jsonreferences/command-policy.template.jsonreferences/prompt-policy.template.jsonreferences/egress-allowlist.template.jsonscripts/preflight_check.pyscripts/root_session_guard.pyscripts/audit_logger.pyscripts/command_policy.pyscripts/prompt_policy.pyscripts/guarded_privileged_exec.pyscripts/install-openclaw-runtime-hook.shscripts/port_monitor.pyscripts/generate_approved_ports.pyscripts/egress_monitor.pyscripts/notify_on_violation.pyscripts/compliance_dashboard.pyscripts/live_assessment.py
Behavior
- Never keep root/elevated access open between unrelated tasks.
- Never execute root commands without an explicit approval step in the current flow.
- Enforce command allow/deny policy when configured.
- Require confirmation when untrusted content sources are detected (
OPENCLAW_UNTRUSTED_SOURCE=1+ prompt policy). - Enforce task session id scoping when configured (
OPENCLAW_REQUIRE_SESSION_ID=1). - If timeout is exceeded, force session expiration and approval renewal.
- Log privileged actions to
~/.openclaw/security/privileged-audit.jsonl(best-effort). - Flag listening ports not present in the approved baseline and recommend secure alternatives for insecure ports.
- Flag outbound destinations not present in the egress allowlist.
Output Contract
When reporting status, include:
- The specific
check_id(s) affected,status,risk, and concise evidence. - Concrete mitigations (what to change, where) and any owners/due dates if present.
- For network findings: port, bind address, process/service, and why it is flagged (unapproved/insecure/public).
Questions people ask
- Does it replace the system sudo binary?
- No. Its opt-in shim is installed at `~/.openclaw/bin/sudo` and only affects processes that place this directory before `/usr/bin` in `PATH`; it neither modifies system sudo nor grants permissions.
- What happens before a privileged command runs?
- The guarded flow requires explicit interactive approval, applies configured command allow/deny policy, and can require an approval token and task session ID. Non-interactive sudo is blocked by default, and elevated state expires after 30 idle minutes.
- What security outputs does it create?
- It writes assessment JSON, a structured compliance summary, an HTML dashboard, and latest port and egress scan results under `assessments/`. Privileged actions are logged on a best-effort basis to an append-only JSONL file under `~/.openclaw/security/`.
Related skills
Monitor signed advisories, match affected installed skills, and gate risky installs or removals on approval.
Monitor NVD CVEs, community advisories, and pre-CVE GitHub advisories in one agent security feed.
Guide safe installation, operation, auditing, and extension of the read-only OpenClaw operations dashboard.
Evaluate AI scan results against security frameworks, enforce policies, and export CycloneDX or SPDX SBOMs.
Reduce OpenClaw token waste with lazy context, model routing, heartbeat planning, and local budget checks.