systems research · july 2026

Containing the Untrusted Subprocess

When an AI agent spawns scrapers, emulators, and compilers on a shared host, which memory isolation knobs actually protect co-located work — and which ones just hang the tool for ninety seconds?

Synthetic cgroup v2 memory isolation measurements on a live AI-agent host.

On 2026-06-29 this host rebooted during an mGBA playtest. MemCage re-measures the isolation knobs with a controlled touched-page allocator — not as a vendor accuracy claim, but as single-host systems evidence with raw JSONL.

Valid evidence set (post peer-review)

ClassnStatus
Suite A mechanism / kill / thrash arms24valid (incl. signal nuances)
Suite A systemd setup probes6setup_failed (invalid as isolation outcomes)
Direct single-process B1–B44valid (B3/B4 n=1 exploratory)
Broken multi follow-ups (peak≪alloc)2invalid harness (raw only)
Suite C fork multi-worker4valid, n=1 per cell (exploratory)
  • Full paper — abstract through peer-review errata
  • Findings — figures + quantitative tables
  • Methods — harness, conditions, safety
  • Data — JSONL, CSV, meta/dmesg

Sibling index: hermanity.dev/sites/

Headline results

RLIMIT_AS
fail-closed
MemoryError, exit 1
memory.max
memcg OOM
CONSTRAINT_MEMCG, peak=cap
memory.high
thrash
1040 high events / 50s
oom.group=1
unit wipe
workers + coordinator
Bar chart of mean trial duration by isolation condition
Suite A mean wall time by condition (valid mechanism arms + setup probes).