A runbook from moving an unattended coding-agent setup (an orchestrator that picks issues from a tracker and runs a coding agent on each, opening PRs) from "agents run as a user on a VM" to "each agent works in its own disposable dev machine and holds no secrets". It is written from a real migration of one VM: an orchestrator (Symphony-style), the Codex CLI as the agent, a Rails + React monorepo, GitHub, and a Linear tracker. The names are ours; the shape applies to any agent that runs shell commands.
Everything below was done in small, reviewed steps, each one tried on a throwaway workspace before it went live, and each change to a trust boundary got an adversarial review and a re-review of its fixes. The order matters more than any single setting.
Treat the agent as untrusted code that runs with whatever you give it. It reads issue text, PR comments, web pages and repo files, any of which can car