# ADR-0004 隔离:引擎沙箱 + 专用用户 + systemd 加固 - 状态:**Superseded by [ADR-0009](0009-isolation-without-dedicated-user.md)** · 日期:2026-10-22 ## 决策 三层叠加,暂不使用 Docker: 1. 专用系统用户 `agentsvc` 2. systemd 服务加固(ProtectHome/ProtectSystem/ReadWritePaths/资源上限) 3. 引擎自带沙箱:Claude `sandbox.enabled` + `failIfUnavailable` + `allowUnsandboxedCommands:false`;Codex `workspace-write` + `on-request` 另外加一层应用层校验(路径、WebFetch 私网拦截、MCP Gateway 审批)。 ## 理由 - 使用者可信、单机部署,Docker 的复杂度不划算 - 引擎沙箱只管 shell 命令,并且默认可读大部分文件系统;systemd 和专用用户正好补上"读"的缺口 - 专用用户的代价只是一次性 CLI 登录,换来配置失误时的兜底,以及服务与个人 CLI 状态的分离 ## 被否决的方案 - 只用 systemd、不建专用用户:同 UID 时信号和非 home 文件仍可达,且 systemd 249 不支持 PrivatePIDs - Docker / Podman:留作以后需要可复现环境或执行不可信代码时的选项 - gVisor / Firecracker:过重 ## 约束 systemd 中不能开启 `RestrictNamespaces`(bubblewrap 需要 user namespace)。 详见 [design/06-security.md](../design/06-security.md)。