Docs menu

Docs › Reference

Security model

What a VM, an agent and the app can and cannot reach

What VMPane protects, from whom, and where the limits are. The guest agent's wire format is in agent-protocol.md; the control sockets' in control-protocol.md.

Assets and actors

Assets: the Mac's files and credentials; each VM's data (disks, saved memory and snapshots, which are plain files like the disks); a Windows VM's TPM and UEFI variables; the agent policy and its key.

actortrusted?reaches VMPane through
a guest OSno: it may own QEMU (Windows) or VMPane's guest agentQEMU's emulated devices, QMP and SPICE; the agent's vsock or virtio-serial channel; shared folders (virtiofs, or WebDAV for Windows); addresses and file names it reports
an AI agentbounded by the VM's policyMCP (vmpane mcp), and vmpane run without a terminal
the person at the Macyesthe app; vmpane at a terminal (operator, once granted)
other processes of the same userout of scopeeverything the user can; VMPane only detects edits of the policy files
other users of the Macnonothing: VMPane's folder is 0700, sockets 0600, and helpers check the peer's uid
the networknoonly port forwards the person bound to all interfaces

Threat: any guest

Threat: a hostile Windows guest

A guest controls every device QEMU emulates for it, so we assume a guest can take over the QEMU process. What it can reach then:

processruns assandboxcan reach
qemu-system-aarch64the userVMPaneQEMU/Sandbox/qemu.sb (deny by default)its VM bundle (read; write only current/: disks, UEFI variables, saved state) and run directory, the QEMU runtime copy (read), HVF, CoreAudio output, outbound IP (slirp NAT), listening sockets for the VM's port forwards, the host's DNS configuration
swtpmthe userVMPaneQEMU/Sandbox/swtpm.sbits VM bundle (read; write only current/aux/tpm) and run directory; no network, no hypervisor
helper (VMPaneVM)the usernone (v2 hardening item)everything the user can

Threat: an AI agent acting through VMPane

The agent policy is a guardrail for AI agents that drive VMs through VMPane's interfaces (MCP, and the vmpane CLI run without a terminal). An agent with a general shell on the Mac is not constrained by it: it could edit files, sign binaries or drive the app's UI like the user.

Accepted risks (v1)

Edit this page on GitHubLast updated