A sandboxed VM environment that gives Claude Code full sudo access on macOS Apple Silicon.
Claude Code is powerful but constrained on your host machine - it can't install system packages, run Docker containers freely, or modify system configurations without risking your environment.
Agent Box solves this by giving Claude Code its own Linux VM with:
- Full sudo access - install anything, modify system files, no restrictions
- Isolated environment - mistakes don't affect your Mac
- Native filesystem performance - fast I/O for all operations
- Observable workspace - you can watch and collaborate via SSHFS mount
Think of it as a sandbox where Claude Code can work autonomously while you observe.
┌─────────────────────────────────────────────┐
│ VM (Claude Code workspace) │
│ /agent-workspace ← native ext4 filesystem │
│ - fast file I/O │
│ - full sudo, Docker, Node.js, etc. │
└──────────────────┬──────────────────────────┘
│ SSHFS (host mounts guest)
▼
┌─────────────────────────────────────────────┐
│ Your Mac │
│ ~/vm-workspace ← observe/collaborate │
└─────────────────────────────────────────────┘
brew install lima
brew install macfuse
brew install gromgit/fuse/sshfs-macNote: macFUSE requires kernel extension approval. See MACFUSE.md.
./vm.sh start # Creates VM, provisions, auto-mounts ~/vm-workspace
./vm.sh ssh # Access the VM
./vm.sh stop # Stop VM (auto-unmounts)
./vm.sh destroy # Delete VMFirst boot takes a few minutes (downloads Ubuntu image and provisions).
./vm.sh status # Show VM and mount status
./vm.sh mount # Mount workspace only
./vm.sh unmount # Unmount workspace onlyAfter starting, the VM's workspace is mounted at:
~/vm-workspace
- Ubuntu 24.04 (ARM64)
- Docker
- Node.js + npm
- Git
- Claude Code CLI
NFS and VirtFS/9P have performance issues or don't work well with UTM. The reverse mount approach (host mounts into VM via SSHFS) gives Claude Code native filesystem speed while still allowing you to observe.
Check logs:
limactl logs claude-vmThe macFUSE kernel extension isn't loaded. Check:
kextstat | grep macfuseIf empty, follow the complete setup in MACFUSE.md.
Test SSH connectivity first:
./vm.sh sshIf that works, check SSHFS config:
limactl show-ssh --format config claude-vmLima sometimes has DNS problems on VPNs. Add to claude-vm.yaml:
dns:
- 8.8.8.8
- 8.8.4.4MIT