feat(executor): per-profile opt-in for unprivileged user namespaces

This commit is contained in:
Alassane
2026-09-06 06:30:40 -04:00
committed by GitHub
parent 5f5b1f0f31
commit 9b9f347148
49 changed files with 2971 additions and 96 deletions
+7 -1
View File
@@ -272,9 +272,15 @@ Kandev passes each agent definition's CPU and memory limits to Docker. These are
</details>
### User namespace support
Profiles can enable **User namespace support** under the Dockerfile build card. When enabled, the container is launched with a tailored seccomp profile that relaxes namespace-related syscall restrictions, plus `apparmor=unconfined`. This allows agent runtimes that sandbox file edits via user namespaces (e.g., Codex's `apply_patch` → bwrap) to work inside the container.
The setting is **off by default**, only available on Docker profiles, and affects **newly created containers only**. Existing task environments must be reset for the change to take effect. See the [security ADR](../decisions/2026-08-18-executor-userns-security-options.md) for details on the exact syscall changes and security model.
### Credentials and security
> **Trust boundary:** A container is useful but not a hostile-code sandbox. The daemon has host-level power, bind mounts expose sources, agents can use injected secrets, and the default image has outbound network access. Kandev does not mount the Docker socket automatically.
> **Trust boundary:** A container is useful but not a hostile-code sandbox. The daemon has host-level power, bind mounts expose sources, agents can use injected secrets, and the default image has outbound network access. Kandev does not mount the Docker socket automatically. The User namespace support option relaxes container isolation. See the [security ADR](../decisions/2026-08-18-executor-userns-security-options.md).
<details>
<summary>Docker credential and security details</summary>