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
Linux agent processes launched via systemd-run --user --scope under app-t3code-agents*.slice only receive the memory and pids cgroup controllers. Nested rootless containers (kind with KIND_EXPERIMENTAL_PROVIDER=podman, Docker rootless, etc.) need cpu, cpuset, and io as well, and fail with errors like:
ERROR: failed to create cluster: running kind with rootless provider requires systemd Delegate=yes
The same workloads succeed outside a T3 agent session (e.g. a normal terminal, or a Cursor agent scope that already has full controllers).
Diagnosis
Comparing /sys/fs/cgroup/.../cgroup.controllers for a live agent scope showed only memory pids, while sibling user scopes (Cursor) had cpu cpuset io memory pids.
Agent scopes are created in apps/server/src/process/agentScope.ts without a valid systemd Delegate= assignment. An earlier attempt that used DelegateControllers= is rejected by systemd-run (Unknown assignment), so probes fall back to non-delegated options. systemd enables delegated controllers on ancestor slices when a scope starts with Delegate=; Delegate= cannot be set on slice units via systemctl set-property.
This is a regression versus earlier alphas that did not isolate agents in these scopes.
Steps to reproduce
On Linux with cgroup v2 and a rootless container runtime (Podman or Docker rootless).
Start a T3 Code agent session on a project that uses kind (e.g. KIND_EXPERIMENTAL_PROVIDER=podman make deploy).
Observe kind fail with a Delegate / cgroup setup error.
Run the same command in a normal user shell (outside the agent scope) — it succeeds when the host is otherwise configured for rootless kind.
Expected: agent sessions can run nested cgroup workloads the same way a normal user shell can.
Actual: agent scopes lack Delegate, so nested rootless containers cannot set up their cgroups.
Proposed fix: pass --property=Delegate=cpu cpuset io memory pids on agent scope units (with probe fallback). systemd enables those controllers on ancestors when the scope starts.
User drop-ins under ~/.config/systemd/user/ for t3code-.scope.d (and related) with Delegate=yes can unblock locally until the fix lands; prefer the PR once merged.
Reproduced on 3b95e7831b with Ubuntu, systemd 255 and cgroup v2. In the real dev app terminal, KIND_EXPERIMENTAL_PROVIDER=podman kind create cluster fails with the reported Delegate=yes error; its scope exposes only memory pids. A control scope launched with Delegate=yes passes that check and reaches node preparation, where this VM separately lacks /lib/modules. No matching duplicate found among open issues.
Activity
juliusmarminge commentedon Oct 22, 2026
Reproduced on 3b95e7831b with Ubuntu, systemd 255 and cgroup v2. In the real dev app terminal,
KIND_EXPERIMENTAL_PROVIDER=podman kind create clusterfails with the reported Delegate=yes error; its scope exposes onlymemory pids. A control scope launched with Delegate=yes passes that check and reaches node preparation, where this VM separately lacks /lib/modules. No matching duplicate found among open issues.