Build1 distinct publisher3 min readUpdated
A developer's build notes on giving a coding agent its own machine: scoped credentials, a snapshot before every session, and a hypervisor that boots exactly two things.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A developer writing on dev.to published the build notes for giving a coding agent its own computer: a VM on the same Mac, a filesystem with none of his own files in it, credentials that only work on throwaway repos, and a snapshot taken before every session [2][3]. The reason to read it is the failure mode he names first, which is not a security model but a human one: the permission prompts get annoying enough that everyone eventually turns them off, and after that you are one confidently wrong `rm` away from a bad afternoon [1]. The interesting part is what the snapshot does to incident response. According to the author, when the agent does something destructive he does not debug it, he rolls back, and thirty seconds later the mistake never happened [4]. That converts a class of failure from investigation into a reset, which is the only reason it is tolerable to hand a shell to something that cannot be reliably instructed. Then the platform starts making architectural decisions on your behalf. Apple's Virtualization.framework boots two things, macOS on ARM and Linux on ARM, and that is the whole list: there is no Windows on ARM, and the author is blunt that this is not a licensing gate to argue past, there is simply nothing to enable [5]. Anything claiming otherwise, he writes, is describing UTM's QEMU backend or VMware Fusion, both of which ship their own hypervisor [6]. So if the agent's toolchain needs Windows, your hypervisor is chosen before you write a line of setup code [7]. For a sandbox it does not bite, because Linux is what you want anyway: smaller on disk, faster to boot, and it does not spend one of your two permitted macOS guests on a box that mostly runs `npm install` [8]. The two guest types also diverge in configuration in ways he says the docs do not foreground. macOS guests boot the macOS bootloader and need a separate auxiliary storage file next to the disk image; Linux guests boot EFI and need a variable store that persists across reboots [9]. Copy the disk image without that store and you get a guest that lands in an EFI shell and looks broken [10]. The debugging trap is better than the boot trap. Attaching a serial console to a Linux guest is the obvious move when it fails silently, except Ubuntu's Subiquity installer detects the serial port, moves the install UI off the graphical display onto the console in reduced text mode, and leaves your VM window looking hung [11]. His fix is to make the console opt in behind a flag, attached only while debugging [12]. The general rule he draws is worth keeping: on this framework, adding a device is never free, because every device is visible to the guest and the guest may make decisions about it [13]. His first version mounted the real project directory in over VirtioFS. It worked immediately and was pointless, because an agent that can write to your actual project folder is your main machine with extra steps [14]. The version that holds is copy in, work, copy the diff out, with a read-only share or no share at all and everything moving over SSH [15]. If you do share, the tag differs by guest: Linux picks its own tag and mounts it, while macOS guests use Apple's automount tag and the share appears at /Volumes/My Shared Files with no mount command [16]. For x86-64 binaries still lurking in a toolchain, Rosetta can be shared into an ARM Linux guest, with an availability check that distinguishes installed, not installed, and not supported [17]. Watch the ceiling: two macOS guests is a hard number, so any plan that wants a macOS agent box plus a macOS test box has already spent its budget [8].
Ranked by verification strength, evidence, and original report placement.
For the agent sandbox case Linux is preferred: Linux guests are smaller on disk, boot faster, and do not burn one of the two permitted macOS guests on a machine that mostly runs npm install.
Rosetta can be shared into an ARM Linux guest for x86-64 binaries, with VZLinuxRosettaDirectoryShare availability reported as installed, not installed, or not supported; the guest mounts it with mount -t virtiofs rosetta and registers it with binfmt.
The author runs coding agents with shell access all day; permission prompts get annoying enough that everyone eventually turns them off, and then you are one confidently wrong rm away from a bad afternoon.
What fixed the author's unease was not better prompting but giving the agent its own computer: a VM on the same Mac.
In the setup, the agent gets a filesystem with nothing of the author's in it, credentials that only work on throwaway repos, and a snapshot taken before every session.
If the agent does something destructive the author does not debug it; he rolls back, taking thirty seconds, and the mistake never happened.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed first-hand build notes, single source, no external corroboration
The claims are specific and mostly checkable in principle: named API surfaces (VZLinuxRosettaDirectoryShare.availability, macOSGuestAutomountTag, .linuxEFI variable store), reproducible failure modes (EFI shell after copying a disk image without its variable store, Subiquity moving its UI to an attached serial port) and Swift snippets. But everything rests on one practitioner post; no Apple documentation, release notes, third-party reproduction, or measurements are supplied, and comparative claims about Linux guests being smaller and faster to boot are asserted rather than measured.
One self-reported user, no adoption data
The only usage signal is the author's own disclosure that he runs this setup daily. The cluster supplies no release, download, deployment, benchmark or team-adoption figures for the pattern or for any tool implementing it, so adoption cannot be scored without inventing facts.
Slightly understated relative to its own evidence
The framing is conservative for the material: it is scoped as personal build notes, volunteers its own failed first attempt (the writable VirtioFS mount of the real project), flags Rosetta 2 wind-down as a reason not to build anything load-bearing on that path, and makes no product, market or performance-superiority pitch. The only mild overreach is universalising language such as everyone eventually disabling permission prompts and unquantified Linux-guest performance advantages, which is why the gap is near zero rather than strongly negative.
Low commercial pressure, some implicit tool-building interest
No vendor sponsorship, pricing, product name, affiliate offer or funding claim appears, and the author repeatedly advises checking Apple's current guidance over his own. The residual incentive is that the code references an app bundle and per-guest configuration the author evidently maintains, so the post doubles as credibility-building for his own virtualization wrapper, and Apple platform claims are relayed without citation.
Moderate: internally consistent and specific, but single-sourced with no adoption measure
Confidence is limited by cluster shape rather than by internal contradiction. The single source is coherent, specific, technically concrete and self-critical, which supports the builder-facing claims; but there is no second publisher, no vendor documentation, no measurement of the comparative performance claims, and no adoption evidence beyond one self-report, so the platform-capability and Rosetta-wind-down assertions should be re-checked against Apple's own guidance before being relied on.
Follow any of these and your For You feed starts watching them — no settings page required.
invest
Your Landed Cost Is Being Litigated By Companies With $306,000 Problems1 distinct publisher
product
watchOS 27 demotes the honeycomb: five most-used apps plus Siri is the new default1 distinct publisher
product
iOS 27 lands in September, and it absorbs features apps currently sell1 distinct publisher
invest
Klarna's $1bn Quarter: Margin Dollars Up 42%, Revenue Up 27%, And That Gap Is The Story2 distinct publishers
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 17, 2026