Problem
Waza evaluations can expose model-visible shell, file, MCP, and LSP tools during unattended runs. Permission callbacks alone do not prevent those tools from reading unrelated host files, modifying paths outside the task workspace, inheriting host secrets, or reaching the network.
Waza should provide a least-privilege task boundary without implementing and maintaining its own platform-specific sandbox.
Proposed solution
Add an optional config.sandbox policy for the copilot-sdk executor. Waza should remain a thin task-policy adapter:
- grant read/write access to the fresh task workspace;
- grant read-only access to declared skill directories while keeping bundled scripts executable;
- default network, developer-tool caches, Git/GitHub credential injection, and arbitrary host paths off;
- allow narrowly declared read-only/read/write prerequisites;
- reject sandbox bypass and managed-policy requests that require interactive approval;
- prevent arbitrary host environment variables from reaching the sandboxed Copilot CLI process; and
- delegate OS enforcement to Copilot CLI/MXC through the Copilot SDK (Seatbelt on macOS, bubblewrap on Linux, and ProcessContainer on supported Windows hosts).
Waza should not add a second Seatbelt profile, bubblewrap wrapper, chroot, container layer, or shell parser. Omitting the sandbox configuration must preserve existing evaluation behaviour.
Acceptance criteria
Problem
Waza evaluations can expose model-visible shell, file, MCP, and LSP tools during unattended runs. Permission callbacks alone do not prevent those tools from reading unrelated host files, modifying paths outside the task workspace, inheriting host secrets, or reaching the network.
Waza should provide a least-privilege task boundary without implementing and maintaining its own platform-specific sandbox.
Proposed solution
Add an optional
config.sandboxpolicy for thecopilot-sdkexecutor. Waza should remain a thin task-policy adapter:Waza should not add a second Seatbelt profile, bubblewrap wrapper, chroot, container layer, or shell parser. Omitting the sandbox configuration must preserve existing evaluation behaviour.
Acceptance criteria