Skip to main content

Vol. MMXXVINo. 89

Field reports from cloud-security engineering,AI experiments, and a homelab that keeps getting bigger.

Latest writing from William Zujkowski

Security·7 min read·

You Can't Prove the Agent. Prove the Gate.

Formal verification for AI-agent security. You can't prove a probabilistic model does the right thing — but the deterministic gate in front of it is small enough to prove outright. Dafny proofs, a Rego twin, and differential testing, following the method AWS used for Cedar.

  1. Security·7 min read·

    The Firewall Stays Put. The Agent Improvises.

    Rewriting security controls for probabilistic agents. Static control catalogs assume systems that do what they're told; AI agents don't — so here's how to express agent guardrails (tool allowlists, secret-egress denial, audit) as machine-checkable OSCAL component definitions.

  2. Design·10 min read·

    545 Terminal Themes, and the Rabbit Hole That Produced Them

    A dataset of 545 terminal color schemes, converted to OKLCH and republished as an npm package — and the theme picker in this site's own header that quietly runs on it.

  3. Security·12 min read·

    The Sandbox Isolates the Agent. It Doesn't Isolate the Secret.

    MicroVMs and namespace sandboxes give AI coding agents mature filesystem and process isolation. Most open-source ones still hand credentials to the agent directly. Here's the proxy-injection pattern that fixes that, and what it doesn't fix.

  4. Typescript·7 min read·

    live-coding-music-mcp: Handing Claude a Browser and a Drum Machine

    An MCP server that lets Claude live-code music in Strudel through a real, visible Chromium browser — no mocked audio API. What it does, what broke while I built it, and the engineering that came out of my first real browser-automation project.

  5. Svg·6 min read·

    No GIFs, No Script Tags: How Far a Single SVG File Can Go

    svg-terminal is an experiment in how much you can make one self-contained SVG do: type, blink, phone an API for live stats, and survive a renderer that assumes every SVG is hostile. 48 blocks, zero JavaScript, one wry aside about trusting my own config file.