Install
openclaw skills install cyber-security-engineerSecurity engineering workflow for OpenClaw privilege governance and hardening. Use for least-privilege execution, approval-first privileged actions, idle timeout controls, port + egress monitoring, and ISO 27001/NIST-aligned compliance reporting with mitigations.
openclaw skills install cyber-security-engineerRequired tools:
python3 (>= 3.8)openclaw CLI (installed via npm during bootstrap, or pre-installed)npm (only needed for bootstrap if openclaw is not already installed)lsof, ss, or netstat for port/egress checksstat, readlink (standard on macOS/Linux, used by the runtime hook installer)Env vars (all optional, documented for configuration):
OPENCLAW_REQUIRE_POLICY_FILES — set to 1 to block privileged execution when policy files are missingOPENCLAW_REQUIRE_SESSION_ID — set to 1 to require a task session id for each privileged actionOPENCLAW_TASK_SESSION_ID — per-task session id (used when OPENCLAW_REQUIRE_SESSION_ID=1)OPENCLAW_APPROVAL_TOKEN — if set, requires this token during the approval stepOPENCLAW_UNTRUSTED_SOURCE — set to 1 to 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 to 1 to 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 to 1 to skip the interactive confirmation before modifying the macOS LaunchAgent plistPolicy files (admin reviewed):
~/.openclaw/security/approved_ports.json~/.openclaw/security/command-policy.json~/.openclaw/security/egress_allowlist.json~/.openclaw/security/prompt-policy.jsonImplement these controls in every security-sensitive task:
python3 scripts/generate_approved_ports.py, then review and prune.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:
sudo invocations and routes them through guarded_privileged_exec.py-h, --version, -k, -l) directly to real sudoWhat it does NOT do:
PATH includes ~/.openclaw/bin before /usr/binOpt-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.
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 (by generate_approved_ports.py)~/.openclaw/security/root-session-state.json — elevated session state (by root_session_guard.py)~/.openclaw/security/privileged-audit.jsonl — append-only audit log (by audit_logger.py)~/.openclaw/security/violation-notify-state.json — notification diff state (by notify_on_violation.py)~/.openclaw/bin/sudo — opt-in sudo shim (by install-openclaw-runtime-hook.sh, see Runtime Hook section)~/.openclaw/logs/cyber-security-engineer-auto.log — auto-cycle run log (by auto_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 outputTemporary files:
tempfile.NamedTemporaryFile (by generate_approved_ports.py) — auto-cleanedNo files are written to /usr/, /etc/, or any system directory.
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.pyOPENCLAW_UNTRUSTED_SOURCE=1 + prompt policy).OPENCLAW_REQUIRE_SESSION_ID=1).~/.openclaw/security/privileged-audit.jsonl (best-effort).When reporting status, include:
check_id(s) affected, status, risk, and concise evidence.