For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
User Guide
User Guide
    • Home
      • Overview
      • Architecture Overview
      • Ecosystem
      • Release Notes
      • Prerequisites
      • Quickstart with OpenClaw
      • Inference Options
      • Use Local Inference
      • Tool-Calling Reliability
      • Switch Inference Providers
      • Set Up Task-Specific Sub-Agents
      • Manage Sandbox Lifecycle
      • Runtime Controls
      • Set Up Messaging Channels
      • Workspace Files
      • Backup and Restore
      • Install OpenClaw Plugins
      • Sandbox Hardening
      • Approve or Deny Network Requests
      • Customize the Network Policy
      • Integration Policy Examples
      • Deploy to Remote GPU Instances
      • Brev Web UI
      • Monitor Sandbox Activity
      • Security Best Practices
      • Credential Storage
      • OpenClaw Controls
      • Architecture Details
      • Commands
      • Which CLI to Use
      • Network Policies
      • Troubleshooting
      • Agent Skills
      • Report Vulnerabilities
      • License
      • Discord
NVIDIANVIDIA
Developer-friendly docs for your API
Privacy Policy | Your Privacy Choices | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact

Copyright © 2026, NVIDIA Corporation.

LogoLogoNemoClaw
On this page
  • Removed Unnecessary Tools
  • Process Limits
  • Dropping Linux Capabilities
  • Docker Compose Example
  • Filesystem Layout
  • Landlock Kernel Requirements
  • References
Manage Sandboxes

Sandbox Image Hardening

||View as Markdown|
Previous

Install OpenClaw Plugins

Next

Approve or Deny Agent Network Requests

The NemoClaw sandbox image applies several security measures to reduce attack surface and limit the blast radius of untrusted workloads.

Removed Unnecessary Tools

Build toolchains (gcc, g++, make) and network probes (netcat) are explicitly purged from the runtime image. These tools are not needed at runtime and would unnecessarily widen the attack surface.

The runtime image keeps a small set of operational utilities for normal sandbox workflows, including vi, jq, and dos2unix. Use these for lightweight inspection and file cleanup inside the sandbox, but make durable image or policy changes in the NemoClaw source tree and rebuild the sandbox.

If you need a compiler during build, use the existing multi-stage build (the builder stage has full Node.js tooling) and copy only artifacts into the runtime stage.

Process Limits

The container ENTRYPOINT sets ulimit -u 512 to cap the number of processes a sandbox user can spawn. This mitigates fork-bomb attacks. The startup script (nemoclaw-start.sh) applies the same limit.

Adjust the value via the --ulimit nproc=512:512 flag if launching with docker run directly.

Dropping Linux Capabilities

The NemoClaw entrypoint drops dangerous capabilities from the process bounding set before it starts agent services. It removes CAP_SYS_ADMIN, CAP_SYS_PTRACE, CAP_NET_RAW, CAP_DAC_OVERRIDE, CAP_SYS_CHROOT, CAP_FSETID, CAP_SETFCAP, CAP_MKNOD, CAP_AUDIT_WRITE, and CAP_NET_BIND_SERVICE. When setpriv is available, the entrypoint also removes the remaining privilege-separation capabilities during the switch from root to the sandbox and gateway users.

For defense-in-depth, also drop all Linux capabilities at the container runtime when you launch the image directly:

$docker run --rm \
> --cap-drop=ALL \
> --ulimit nproc=512:512 \
> nemoclaw-sandbox

Docker Compose Example

1services:
2 nemoclaw-sandbox:
3 image: nemoclaw-sandbox:latest
4 cap_drop:
5 - ALL
6 cap_add:
7 - NET_BIND_SERVICE
8 ulimits:
9 nproc:
10 soft: 512
11 hard: 512
12 security_opt:
13 - no-new-privileges:true
14 read_only: true
15 tmpfs:
16 - /tmp:size=64m

Note: The Dockerfile itself cannot enforce --cap-drop. That is a runtime concern controlled by the container orchestrator. Always configure capability dropping in your docker run flags, Compose file, or Kubernetes securityContext.

Filesystem Layout

The sandbox Landlock policy declares which paths are writable. The agent’s home directory (/sandbox) is writable by default:

PathAccessPurpose
/sandboxread-writeHome directory — agents can create files and use standard home paths
/sandbox/.openclawread-writeAgent config, state, workspace, plugins
/sandbox/.nemoclawread-write (Landlock); DAC-restrictedParent directory is root:root mode 1755; the sandbox user can write only to state/, migration/, snapshots/, staging/, and config.json. blueprints/ and the parent itself are root-owned to prevent tampering.
/tmpread-writeTemporary files and logs

The Access column reflects the Landlock policy declaration only. Actual write success additionally requires POSIX (DAC) ownership and permissions to allow it. For example, Landlock lists /sandbox/.nemoclaw as writable, but the sandbox user cannot create files directly under it because the parent directory is root-owned; writes must target the sandbox-owned subdirectories listed above.

This writable default is intentional. Seeing the sandbox user create files under /sandbox or /sandbox/.openclaw in a fresh sandbox does not mean Landlock failed. Landlock still enforces the fixed read-only system paths below.

System paths remain read-only to prevent agents from:

  • Replacing system binaries with trojanized versions
  • Modifying DNS resolution or TLS trust stores
  • Tampering with libraries or shell configuration outside /sandbox

The image build pre-creates locked shell init files .bashrc and .profile without proxy entries. Runtime proxy configuration is sourced from system-wide shell hooks that read /tmp/nemoclaw-proxy-env.sh.

Landlock Kernel Requirements

Landlock LSM requires Linux kernel 5.13 or later with CONFIG_SECURITY_LANDLOCK=y. The NemoClaw sandbox policy uses compatibility: best_effort, which means Landlock enforcement is silently skipped on kernels that do not support it.

On such kernels, protection falls back to DAC (file ownership and permissions) only. Files outside the writable paths would be inaccessible to the agent regardless of DAC permissions.

Operators should verify Landlock availability:

$ls /sys/kernel/security/landlock

For production deployments, kernel 5.13+ with Landlock enabled is strongly recommended. The test/e2e/e2e-cloud-experimental/checks/04-landlock-readonly.sh script validates enforcement at runtime.

References

  • #804: Filesystem layout and Landlock policy
  • #807: gcc in sandbox image
  • #808: netcat in sandbox image
  • #809: No process limit
  • #797: Drop Linux capabilities