Late adopter. Started last night. Stayed up four hours past my normal bedtime because I couldn't stop. (Ended up "building" a fancy .MOD player for DOS in Turbo C.)
Needed the Max 5x plan after two hours. (The 'Pro' plan should be renamed 'Sampler', made one-time and free with CC details.) Max 5x seems like it can sustain my current appetite.
I very quickly went from thinking it was overpriced (around 100 USD/month) to worrying that this pricing can't last. I think I get about 50 working hours per week with this plan. So, running the numbers I guess the hourly cost is about 50 cents.
Install your OS of choice in a virtual machine, e.g. even hosted on your main machine.
Install the AI coding tool in the virtual machine.
Set up a shared folder between host+guest OS.
Only let the VM access files that are "safe" for it to access. Its own repo, in its own folder.
If you want to give the AI tool and VM internet access and tool access, just limit what it can reach to things it is allowed to go haywire on. All the internet and all OS tools are ok. But don't let this AI do "real things" on "real platforms" -- limit the scope of what it "works on" to development assets.
When deploying to staging or prod, copy/sync files out of the shared folder that the AI develops on, and run them. But check them first for subterfuge.
So, don't give the AI access to "prod" configs/files/services/secrets, or general personal/work data, etc. Manage those in other "folders" entirely, not accessible by the development VM at all.
Is that close?
A fun fact about apple containers[2], it's more isolated than docker containers as in it doesn't share the VM across all containers.
And it makes a new lxd container using my base image. Connects using tmux so I can resume anytime after closing the session.
Its like exe.dev or sprites without much effort if you want to self host.
https://simonw.substack.com/p/first-impressions-of-claude-co...
GLM 4.7 is not a "Sonnet killer" but it will work just as well for sketching out easier projects, web design and terminal usage. After a while I cancelled my Claude Code plan because I simply didn't do anything that GLM couldn't hammer out equally as well.
https://github.com/anthropics/claude-code/tree/main/.devcont...
It is not at all ready for public consumption (a face only a mother could love, in other words it's a bugridden mess), but I've considered polishing it and releasing it to the public either as open source or for profit.
Most of it is written with Claude and I've run into roadblocks with Claude being able to do too many things at once and am rewriting as several libraries to improve the focus for Claude agents.
[0]: https://lima-vm.io/
edit: it only mounts $PWD
SandVault [0]: Run AI agents isolated in a sandboxed macOS user account
ClodPod [1]: Run AI agents isolated inside an OSX virtual machine
You can install it with brew or npm.
I thought it was just a wrapper around an (old) existing tool that has been infinitely rebranded. Their old "remote desktop" program and some web listing capabilities to launch it in "rootless" mode.
Given how many products seem to be using this shipping-Linux-as-a-library-VM trick these days, it's probably a good time for an open source project to step up to supply a more reusable way of assembling this layer into a proper Mac library...
With this I have a nice loop where I get Claude to analyse its own sessions via a cronjob and rewrite my devcontainer Dockerfile to have any packages that I've started using during the interactive sessions. This rebuilds via GHActions and my fresh image the next day has an updated Claude and dev environment in a sandbox.
As I can't trust Claude Code to use a correct shell, I don't know why I would trust this feature.
https://simonwillison.net/2026/Jan/12/claude-cowork/
Thatβs the point of this gist, and the related blog post.
Also, itβs a bit of a stretch to call Claude Code, which isnβt even a year oldβ¦old.
I stated using devcontainers through VSCode and find them incredibly helpful. Itβs great for me to be able to load up exact coding environments on different computers. But, I only used them through VSCode.
When I wanted to branch out a bit (and especially using coding agents), I started using the CLI version more. I find devcontainers a great way to work with different coding projects and wanted to make sure people knew that there was a way to use them outside of VSCode.
Generated: January 13, 2026 Session ID: brave-loving-maxwell
This report details the Linux container environment powering the Claude AI assistant's "Cowork mode." The environment is a lightweight, highly sandboxed Ubuntu 22.04 LTS virtual machine running on ARM64 architecture, designed to provide secure code execution capabilities while maintaining strict isolation from the host system.
| Resource | Specification |
|---|---|
| CPU | 4 ARM64 cores @ 48 BogoMIPS each |
| RAM | 3.8 GiB total, ~2.8 GiB available |
| Swap | None configured |
| Root Disk | 10 GB NVMe (nvme0n1) |
| Session Disk | 10 GB NVMe (nvme1n1) |
The ARM64 processor includes advanced features such as hardware cryptographic acceleration (AES, SHA1, SHA2, SHA3, SHA512), atomic operations, pointer authentication (PACA/PACG), and branch target identification (BTI) for security.
The container uses Bubblewrap as its primary sandboxing mechanism. Key isolation features include:
--unshare-net creates a separate network namespace--unshare-pid provides process namespace isolationThe environment employs strict seccomp (Secure Computing Mode) filtering:
A custom BPF (Berkeley Packet Filter) program at /usr/local/lib/node_modules_global/lib/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/arm64/unix-block.bpf enforces syscall restrictions.
All network traffic is proxied through local tunnels:
| Protocol | Proxy |
|---|---|
| HTTP/HTTPS | http://localhost:3128 |
| SOCKS5 | socks5h://localhost:1080 |
| FTP/GRPC | socks5h://localhost:1080 |
socat processes forward traffic through Unix sockets to the host:
/tmp/claude-http-*.sock/tmp/claude-socks-*.sock| Device | Mount Point | Size | Usage | Filesystem |
|---|---|---|---|---|
| nvme0n1p1 | / | 9.6G | 75% | ext4 |
| nvme0n1p15 | /boot/efi | 98M | 7% | vfat |
| nvme1n1 | /sessions | 10G | <1% | ext4 |
/sessions/brave-loving-maxwell/
βββ .bash_logout
βββ .bashrc
βββ .profile
βββ mnt/
β βββ .claude/ # Claude configuration
β βββ .skills/ # Available skill modules
β β βββ skills/
β β βββ algorithmic-art/
β β βββ canvas-design/
β β βββ docx/
β β βββ pdf/
β β βββ pptx/
β β βββ skill-creator/
β β βββ xlsx/
β βββ outputs/ # User-accessible output directory
β βββ uploads/ # User file uploads
βββ tmp/ # Temporary files
Several directories use bindfs to map host filesystem locations with controlled permissions:
/sessions/brave-loving-maxwell/mnt/.skills (927G available - host disk)/sessions/brave-loving-maxwell/mnt/outputs (user's workspace folder)/sessions/brave-loving-maxwell/mnt/uploads (uploaded files)/sessions/brave-loving-maxwell/mnt/.claude (configuration)The environment includes approximately 1,201 packages. Key development tools:
| Tool | Version |
|---|---|
| Python | 3.10.12 |
| Node.js | 22.21.0 |
| npm | 10.9.4 |
| pip | 22.0.2 |
| GCC | 11.4.0 |
| Java (OpenJDK) | 11.0.29 |
Note: Go, Rust, and Docker are not available in this environment.
| PID | Process | Description |
|---|---|---|
| 1 | bwrap | Bubblewrap sandbox orchestrator |
| 2 | bash | Shell wrapper managing proxy daemons |
| 3 | socat | HTTP proxy forwarder (port 3128) |
| 4 | socat | SOCKS proxy forwarder (port 1080) |
| 5 | claude | Main Claude Code agent process |
The main Claude process runs with the claude-opus-4-5-20251101 model and has access to specific allowed tools: Task, Bash, Glob, Grep, Read, Edit, Write, and more.
Two MCP servers are configured:
| Limit | Value |
|---|---|
| Open Files | 524,288 |
| Max User Processes | 14,813 |
| Stack Size | 8 MB |
| Max Locked Memory | 8 MB |
| CPU Time | Unlimited |
| Virtual Memory | Unlimited |
| File Size | Unlimited |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Host System β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Bubblewrap Sandbox β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Ubuntu 22.04 VM β β β
β β β ββββββββββββββββββββββββββββββββββββββββββ β β β
β β β β Claude Code Agent β β β β
β β β β - Opus 4.5 Model β β β β
β β β β - Tool Access (Bash, Read, Write...) β β β β
β β β ββββββββββββββββββββββββββββββββββββββββββ β β β
β β β β β β β
β β β βββββββββββ ββββββ΄βββββ βββββββββββββ β β β
β β β β socat β β socat β β Session β β β β
β β β β :3128 β β :1080 β β Storage β β β β
β β β ββββββ¬βββββ ββββββ¬βββββ βββββββββββββ β β β
β β βββββββββΌββββββββββββββΌββββββββββββββββββββββββ β β
β ββββββββββββΌββββββββββββββΌβββββββββββββββββββββββββββ β
β β β β
β Unix Socket Unix Socket β
β β β β
β HTTP Proxy SOCKS Proxy β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This container environment represents a thoughtfully designed sandbox for AI-assisted computing. It balances functionality (full development toolchain, file manipulation, network access) with security (strict isolation, capability dropping, traffic monitoring). The ephemeral nature of the session filesystem combined with persistent workspace folders provides both safety and utility for end users.
The environment is specifically optimized for the Claude Code agent, providing the tools necessary for code execution, file creation, and web access while maintaining strong isolation boundaries to protect both the user's system and the broader infrastructure.