You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Investigated with Claude (agent-driven diagnosis on a 19-sandbox Docker-driver fleet)
Tested OpenShell v0.0.72 (CLI/gateway/sandbox from GitHub release assets, x86_64-unknown-linux-gnu)
Checked latest releases: downloaded release assets v0.0.74/76/78/80/82 and scanned both
openshell-gateway and openshell-sandbox binaries with strings — no sandbox_child_nproc_limit / nproc_limit / RLIMIT_NPROC-related config token in any of them
(only Z3 "inprocess" noise in the gateway)
Cross-checked GitHub: PR Make sandbox child nproc limit configurable #1497 merged into main 2026-05-27 (commit 9bfcad4); the
branch_commits/tag-containment view lists it as reachable from v0.0.51+, contradicting the
binary contents
Functional test on v0.0.72: added sandbox_child_nproc_limit = 4096 under
[openshell.drivers.docker] and [openshell.gateway] — gateway starts either way, but a bogus
test field is also silently accepted in both tables, so acceptance proves nothing
Recreated a sandbox from scratch after the config change: in-sandbox sessions still show Max processes 512 in /proc//limits
Cannot upgrade to a fixed version because no published release contains the feature (verified
through v0.0.82)
Description
Summary
PR #1497 ("Make sandbox child nproc limit configurable", merged into main on 2026-05-27 as commit 9bfcad4) adds the sandbox_child_nproc_limit setting to lift the hardcoded RLIMIT_NPROC=512 for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.
Evidence
String scan: strings openshell-gateway | grep -i nproc (and the same for openshell-sandbox) on release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) shows no nproc_limit / RLIMIT_NPROC / sandbox_child_nproc token — only Z3 inprocess noise in the gateway.
Functional test on v0.0.72 (Docker driver): adding sandbox_child_nproc_limit = 4096 under [openshell.drivers.docker] or [openshell.gateway] is silently accepted (note: a bogus test field is also silently accepted in both tables, so unknown TOML fields appear to be ignored), and a freshly recreated sandbox still shows Max processes 512 for all in-sandbox sessions.
Expected
A published release ships PR #1497, so sandbox_child_nproc_limit = 4096 (or 0 to defer to the container cgroup pids limit) takes effect for newly created sandbox sessions.
Are the GitHub release assets built from a branch other than the tagged main history? (Tag-containment view vs. binary content disagree.)
Is the silent acceptance of unknown fields in [openshell.gateway] / [openshell.drivers.docker] intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected.
Context / impact
19-sandbox single-host fleet (Docker driver); all sandbox inner sessions share one UID. At ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic prlimit --nproc=8192 systemd timer and would like to retire it.
PR #1497 ("Make sandbox child nproc limit configurable", merged into main on 2026-05-27 as commit 9bfcad4) adds the sandbox_child_nproc_limit setting to lift the hardcoded RLIMIT_NPROC=512 for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.
Evidence
String scan: strings openshell-gateway | grep -i nproc and same for openshell-sandbox from release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) show no nproc_limit / RLIMIT_NPROC / sandbox_child_nproc token (only Z3 inprocess noise in the gateway).
Functional test on v0.0.72 (Docker driver): adding sandbox_child_nproc_limit = 4096 under [openshell.drivers.docker] or [openshell.gateway] is silently accepted (note: unknown TOML fields appear to be silently ignored in both tables — a bogus test field is also accepted), and a freshly recreated sandbox still shows Max processes 512 for all in-sandbox sessions.
Are the GitHub release assets built from a branch other than the tagged main history? (Tag-containment view vs. binary content disagree.)
Is the silent acceptance of unknown fields in [openshell.gateway] / [openshell.drivers.docker] intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected; that made our config validation attempts inconclusive.
Context / impact
19-sandbox single-host fleet, all sandbox inner sessions share one UID; at ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic prlimit --nproc=8192 systemd timer and would like to retire it.
Agent Diagnostic
openshell-gateway and openshell-sandbox binaries with
strings— nosandbox_child_nproc_limit/nproc_limit/ RLIMIT_NPROC-related config token in any of them(only Z3 "inprocess" noise in the gateway)
branch_commits/tag-containment view lists it as reachable from v0.0.51+, contradicting the
binary contents
sandbox_child_nproc_limit = 4096under[openshell.drivers.docker] and [openshell.gateway] — gateway starts either way, but a bogus
test field is also silently accepted in both tables, so acceptance proves nothing
Max processes 512in /proc//limitssandbox_child_nproc_limit/ nproc: found fix(sandbox): use cgroup pids controller instead of RLIMIT_NPROC on K8s #1390 / fix(sandbox): use cgroup pids controller instead of RLIMIT_NPROC on K8s #1325(shared-UID fleet reports) and PR Make sandbox child nproc limit configurable #1497 itself, but no issue about the feature missing from
release binaries
through v0.0.82)
Description
Summary
PR #1497 ("Make sandbox child nproc limit configurable", merged into
mainon 2026-05-27 as commit9bfcad4) adds thesandbox_child_nproc_limitsetting to lift the hardcodedRLIMIT_NPROC=512for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.Evidence
strings openshell-gateway | grep -i nproc(and the same foropenshell-sandbox) on release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) shows nonproc_limit/RLIMIT_NPROC/sandbox_child_nproctoken — only Z3inprocessnoise in the gateway.sandbox_child_nproc_limit = 4096under[openshell.drivers.docker]or[openshell.gateway]is silently accepted (note: a bogus test field is also silently accepted in both tables, so unknown TOML fields appear to be ignored), and a freshly recreated sandbox still showsMax processes 512for all in-sandbox sessions.Expected
A published release ships PR #1497, so
sandbox_child_nproc_limit = 4096(or0to defer to the container cgroup pids limit) takes effect for newly created sandbox sessions.Questions
mainhistory? (Tag-containment view vs. binary content disagree.)[openshell.gateway]/[openshell.drivers.docker]intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected.Context / impact
19-sandbox single-host fleet (Docker driver); all sandbox inner sessions share one UID. At ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic
prlimit --nproc=8192systemd timer and would like to retire it.Environment: openshell 0.0.72 (CLI/gateway/sandbox from GitHub release assets), Docker driver, Ubuntu host, NemoClaw v0.0.81+ (source main).
Reproduction Steps
Summary
PR #1497 ("Make sandbox child nproc limit configurable", merged into
mainon 2026-05-27 as commit9bfcad4) adds thesandbox_child_nproc_limitsetting to lift the hardcodedRLIMIT_NPROC=512for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.Evidence
strings openshell-gateway | grep -i nprocand same foropenshell-sandboxfrom release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) show nonproc_limit/RLIMIT_NPROC/sandbox_child_nproctoken (only Z3inprocessnoise in the gateway).sandbox_child_nproc_limit = 4096under[openshell.drivers.docker]or[openshell.gateway]is silently accepted (note: unknown TOML fields appear to be silently ignored in both tables — a bogus test field is also accepted), and a freshly recreated sandbox still showsMax processes 512for all in-sandbox sessions.Questions
mainhistory? (Tag-containment view vs. binary content disagree.)[openshell.gateway]/[openshell.drivers.docker]intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected; that made our config validation attempts inconclusive.Context / impact
19-sandbox single-host fleet, all sandbox inner sessions share one UID; at ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic
prlimit --nproc=8192systemd timer and would like to retire it.Environment: openshell 0.0.72 (CLI/gateway/sandbox from GitHub release assets), Docker driver, Ubuntu host, NemoClaw v0.0.81+ (source main).
Environment
openshell 0.0.72; CLI/gateway/sandbox binaries from GitHub release assets)Logs
Agent-First Checklist
debug-openshell-cluster,debug-inference,openshell-cli)