Skip to content
Comparison

OpenClaw Security Comparison: CordClaw vs NemoClaw vs Built-In Sandboxing

A problem-first engineering guide for teams choosing OpenClaw security controls under real production constraints.

Technical Comparison21 min readApr 2026
TL;DR
  • -CordClaw, NemoClaw, and built-in OpenClaw controls are not interchangeable. They control different failure points.
  • -Built-in OpenClaw controls are the fastest baseline, but most decisions are still binary at execution time.
  • -NemoClaw improves runtime isolation and network policy; it does not replace pre-dispatch governance semantics.
  • -CordClaw adds deterministic pre-dispatch decisions: ALLOW, DENY, THROTTLE, REQUIRE_HUMAN, and CONSTRAIN.
  • -Plugin timeout defaults to 500ms; daemon policy check timeout is 2s; default decision cache is 5m TTL and 10,000 entries.
  • -Production teams usually need a layered model: built-in restrictions + sandboxing + pre-dispatch governance + output safety.

The real problem

Most OpenClaw security conversations start with tools. The harder question comes later: which control layer is actually stopping which failure?

CordClaw, NemoClaw, and built-in OpenClaw controls are often compared as if they were equivalents. They are not. One layer decides before dispatch, one layer isolates runtime behavior, and one layer configures native allow/deny boundaries inside the gateway.

If your team is choosing a production baseline, a side-by-side control-path comparison is more useful than a list of features. This guide focuses on decision depth, failure behavior, operational overhead, and where each option breaks under pressure.

Top 3 sources: what they cover and miss

I reviewed the top external references operators usually find for this topic (checked on April 1, 2026). Each source is useful. None of them gives the complete deployment decision model by itself.

SourceStrong coverageWhat is still missing
OpenClaw Security docsGateway hardening, prompt-injection risk framing, tool restrictions, sandbox guidance, and practical config defaults.No side-by-side decision-depth comparison against external governance layers, and no pre-dispatch decision contract model.
Docker blog: Run OpenClaw Securely in Docker SandboxesContainer isolation and secure execution baseline for local and hosted OpenClaw runtime environments.No action-level policy lifecycle (require-human routing, simulation path, decision taxonomy, or governance fail-mode design).
NVIDIA NemoClaw docs (Overview + Network Policy)Sandbox model, network policy controls, and operator approval flow for blocked network endpoints in OpenShell.No full pre-dispatch governance semantics across all tool classes with centralized approval and audit binding.

The common gap is clear: limited guidance on combining layers and testing outage behavior. The rest of this article fills that gap.

Feature matrix

This matrix maps each option to its strongest control point. It helps avoid category mistakes during evaluation.

OptionPrimary controlTypical tradeoff
CordClawPre-dispatch governance through OpenClaw hook -> local daemon -> Safety Kernel, with `ALLOW|DENY|THROTTLE|REQUIRE_HUMAN|CONSTRAIN` outcomes.Teams that need deterministic policy decisions and approval semantics before execution.
NemoClawOpenShell sandbox isolation with network policy controls and session-level endpoint approvals in TUI.Teams prioritizing strong runtime containment and network egress control.
Built-in OpenClawNative sandbox/tool/elevated controls and allow/deny policies configured in gateway settings.Fast baseline hardening with minimal extra components.

Practical reading: built-in controls are fastest to adopt, NemoClaw is strongest on runtime isolation, and CordClaw is strongest when you need deterministic policy decisions before execution.

Decision flowchart

If your team wants one quick decision path instead of abstract pros and cons, use this flow.

Control Selection Flow
text
START
  |
  v
Do agents run risky tools (exec, write, network, deploy)?
  |-- no --> Built-in OpenClaw controls + sandbox defaults
  |
  |-- yes --> Need strong runtime isolation?
               |-- yes --> Add NemoClaw sandbox policies
               |-- no --> Keep built-in sandbox + tighter tool policy

Need deterministic pre-dispatch decisions with approval semantics?
  |-- yes --> Add CordClaw governance path
  |-- no --> Stay with runtime/config controls

Production baseline:
built-in restrictions + sandboxing + pre-dispatch governance + output safety

Most mature production stacks end up layered: built-in restrictions, runtime sandboxing, pre-dispatch governance, then output safety.

Quick Validation Path
bash
# Built-in baseline check
# deny should win and elevated should stay restricted

# NemoClaw baseline check
openshell term
# verify blocked network request behavior in TUI

# CordClaw baseline check
curl -sS http://127.0.0.1:19090/health | jq .
openclaw cordclaw simulate --tool exec --command "echo ok"
openclaw cordclaw simulate --tool exec --command "rm -rf /"

Implementation examples

These are practical command and config patterns for each layer. The goal is fast evaluation with comparable signals, not perfect setup on day one.

Built-in OpenClaw Baseline
json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "on",
        "scope": "agent",
        "workspaceAccess": "ro"
      }
    }
  },
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["group:runtime", "group:fs", "group:memory"],
        "deny": ["gateway", "cron"]
      }
    }
  }
}
NemoClaw Policy Persistence
bash
# NemoClaw policy persistence workflow
# 1) approve in TUI for current session
openshell term

# 2) persist required route into baseline policy file
#    openclaw-sandbox.yaml

# 3) re-apply static policy
nemoclaw onboard
CordClaw Plugin Defaults
yaml
plugins:
  entries:
    cordclaw:
      enabled: true
      config:
        daemonUrl: "http://127.0.0.1:19090"
        timeoutMs: 500
        failMode: "deny"
        logDecisions: true
        bypassTools: []

CordClaw path defaults worth remembering from source: plugin timeout `500ms`, daemon check timeout `2s`, decision cache TTL `5m`, and cache max size `10000`.

Use-case recommendations

Choose controls by blast radius and evidence requirements, not by whichever product has the longest feature list.

ScenarioTriggerRecommended path
Local personal automation, trusted data, small blast radiusNeed quick setup with low ops overheadStart with built-in OpenClaw controls plus sandbox mode and strict tool deny list.
Team workflows with internet access and host risk concernsNeed stronger runtime and network isolationAdd NemoClaw sandboxing and explicit endpoint policy management.
High-risk actions: deploy, IAM, destructive shell, prod writesNeed deny/approval semantics before executionAdd CordClaw pre-dispatch governance on top of runtime isolation.
Compliance or incident review requires durable decision evidenceNeed approval traceability by decision type and policy contextUse layered model: built-in controls + sandboxing + CordClaw + output-safety retention pipeline.

Run the same simulation vectors across all options, then compare behavior and operator burden.

Comparison Simulation Set
bash
# Destructive path
openclaw cordclaw simulate --tool exec --command "rm -rf /tmp/demo"

# Cloud control path
openclaw cordclaw simulate --tool exec --command "aws iam list-users"

# Package install path
openclaw cordclaw simulate --tool exec --command "npm install lodash"

# Secrets path read
openclaw cordclaw simulate --tool read --path "~/.ssh/id_rsa"

# Non-HTTPS fetch
openclaw cordclaw simulate --tool web_fetch --url "http://example.com/data.json"

Operations tradeoffs

A secure architecture that no one can operate is not secure in practice. Compare on-call burden and debug loops before deciding.

Built-in controls minimize moving parts. NemoClaw adds sandbox/network operations. CordClaw adds governance-plane operations and policy lifecycle management. None of these costs is optional once you deploy at scale.

Small humor, large truth: if your team cannot explain one denied action in under two minutes, your control stack is not production-ready yet.

Failure behavior matrix

Outages are where security claims are either true or fiction. Test fallback behavior explicitly.

Plugin Config
yaml
plugins:
  entries:
    cordclaw:
      enabled: true
      config:
        daemonUrl: "http://127.0.0.1:19090"
        timeoutMs: 500
        failMode: "deny"
        logDecisions: true
        bypassTools: []
Daemon Resilience Config
bash
# Required daemon env
export CORDCLAW_KERNEL_ADDR=127.0.0.1:50051
export CORDCLAW_API_KEY=<cordum-api-key>
export CORDCLAW_TENANT_ID=default

# Cache + resilience defaults
export CORDCLAW_CACHE_TTL=5m
export CORDCLAW_CACHE_MAX_SIZE=10000
export CORDCLAW_LISTEN_ADDR=127.0.0.1:19090

# Kernel outage behavior: graduated | closed | open
export CORDCLAW_FAIL_MODE=graduated

# TLS (production)
export CORDCLAW_KERNEL_INSECURE=false
export CORDCLAW_KERNEL_TLS_CA=/etc/ssl/certs/cordum-ca.pem
LayerControlEffectRecommended default
CordClaw plugin -> daemon`failMode: deny|allow`If daemon is unreachable, plugin returns `DENY` or `ALLOW` immediately with governance status `offline`.Use `deny` in production unless the workflow is explicitly low impact.
CordClaw daemon -> Safety Kernel`CORDCLAW_FAIL_MODE=graduated|closed|open``closed` denies on kernel outage; `open` allows; `graduated` denies when no cached decision exists and marks governance degraded.Use `graduated` for resilience with bounded risk, or `closed` for strict environments.
NemoClaw dynamic network approvalsTUI approval + baseline policy update pathSession approvals apply immediately but reset when sandbox stops unless policy is persisted and re-applied.Treat session approvals as temporary; persist required routes in baseline policy.

Audit and evidence reality

Runtime logs and decision logs are useful, but they are not equal in audit quality.

Current CordClaw daemon behavior keeps an in-memory ring up to 1000 entries. Restarts reset local history. Treat local audit as operational telemetry and export durable evidence for compliance paths.

Audit Queries
bash
openclaw cordclaw audit --limit 20
curl -sS "http://127.0.0.1:19090/audit?limit=20" | jq .

Layered deployment model

Production systems usually combine controls instead of choosing one winner. Layering is not redundancy; each layer catches a different failure class.

Layered Baseline
text
# Layered deployment model
# 1) Built-in OpenClaw controls (tool policy, sandbox defaults, elevated restrictions)
# 2) NemoClaw runtime isolation + network policy workflow
# 3) CordClaw pre-dispatch governance (plugin -> daemon -> Safety Kernel)
# 4) Output safety and durable audit retention

The practical stack for high-risk workflows: built-in controls for immediate hardening, sandboxing for runtime containment, CordClaw for pre-dispatch decisions, and output-safety scanning after execution.

Limitations

Read before rollout
  • Built-in OpenClaw controls are easy to deploy, but they provide less decision depth than a dedicated pre-dispatch governance layer.
  • NemoClaw strengthens containment and network policy but does not automatically provide full action-level governance semantics across tool classes.
  • CordClaw adds policy power, but it also adds components and operational overhead that must be owned.
  • Local daemon audit storage is in-memory (`auditSize=1000`), so durable audit evidence requires explicit export and retention.

One-day evaluation script

Evaluation Script
bash
# 1) Built-in controls only
# - enable sandbox mode
# - enforce strict tool allow/deny

# 2) Add NemoClaw
# - validate isolation and blocked endpoint workflow
# - verify which approvals persist

# 3) Add CordClaw
# - run ALLOW, DENY, REQUIRE_HUMAN, CONSTRAIN vectors
# - drill plugin and daemon outage behavior

# 4) Capture evidence
# - keep decision logs and approval outcomes
# - verify audit export path

This script gives you comparable behavior data in one day instead of a week of ad-hoc testing.

FAQ

Frequently Asked Questions

Can built-in OpenClaw controls be enough in production?
For low-risk, tightly scoped workflows, yes. For high-impact actions, teams usually need stronger pre-dispatch decisioning and approval semantics than config-only gating.
Does NemoClaw replace CordClaw?
No. NemoClaw focuses on runtime isolation and network policy. CordClaw focuses on pre-dispatch governance decisions. They are complementary layers.
What is the fastest way to compare options with real data?
Run the same simulation vectors across all three setups, capture deny and approval behavior, then run an outage drill. Compare operational behavior, not only feature lists.
What should I test before enabling elevated execution?
Verify sender allowlists, sandbox policy precedence, and fallback behavior when governance dependencies are unavailable. Elevated mistakes are high-blast-radius errors.
Where do teams usually under-invest?
Failure mode testing. Many teams validate happy-path blocking but skip plugin timeout, daemon outage, and stale-policy scenarios.

Next step

Pick one real OpenClaw workflow and run it through all three layers in sequence: built-in only, then NemoClaw, then CordClaw. Keep the stack that passes both risk and operator burden checks. If your incident review process needs deterministic approval semantics, stop relying on runtime-only controls.

Related posts

This comparison is implementation-first

Includes source-gap analysis, control-layer matrix, decision flowchart, fail-mode behavior, and command-level evaluation steps verified against current docs and source defaults.