Skip to content

docs: "Resource Exhaustion" section in architecture overview is outdated — memory/process limits now exist #1664

Description

@SequeI

docs/cli/internals/overview.mdx (Security Considerations → "Resource Exhaustion") currently says:

nono does not limit CPU, memory, or disk usage. A malicious agent could attempt denial-of-service through resource exhaustion.

This is no longer accurate. nono now supports resource limits via ResourceLimits (crates/nono/src/resource/mod.rs), enforced by the CLI supervisor through cgroup v2 (crates/nono-cli/src/resource_cgroup.rs):

  • memory_bytes → cgroup memory.max (+ memory.swap.max=0, memory.oom.group=1)
  • max_processes → cgroup pids.max

Caveats that should be reflected in the corrected text:

  • Enforcement is cgroup v2-based, so it's Linux-only — macOS (Seatbelt) has no equivalent enforcement yet.
  • Disk usage and CPU usage are still not limited — only memory and process/thread count are capped today.
  • A max_processes breach doesn't kill anything; the kernel just refuses new fork/clone with EAGAIN, whereas a memory breach kills the whole cgroup (memory.oom.group=1).

Proposed fix: update the section to accurately describe current enforcement scope and remaining gaps, e.g.:

Resource Exhaustion

On Linux, nono can enforce memory and process-count ceilings on the sandboxed process tree via cgroup v2 (memory.max, pids.max). CPU and disk usage are not limited, and there is no equivalent enforcement on macOS yet. A malicious agent could still attempt denial-of-service through CPU or disk exhaustion, or resource exhaustion on macOS.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions