2026-10-06 · 11 min readMy server pays for a voice AI call it never hears
In my language-learning app the phone talks to OpenAI's Realtime API directly, so the audio never touches my backend, but the bill does. A modified app could rewrite the tutor into a free general-purpose assistant on my key. How a server-side guard on the sideband connection, a server-owned clock and a fail-closed sweep keep that bounded, and the one thing the guard cannot see.
Agents & MCPDevSecOpsCost
2026-10-06 · 13 min readBound to 127.0.0.1 and still reachable from every browser tab
Before making my Electron screen recorder public I hardened it: permissions by origin, no file: links to xdg-open, the local server bound to loopback. The next day the server still answered any web page in the browser. How DNS rebinding gets past 127.0.0.1, why an Origin check alone does not stop it, and the seven lines that do.
DevSecOpsAgents & MCP
2026-10-04 · 14 min readAn agent that writes production code needs a gate it cannot open
I let Claude build and deploy n8n workflows against real calendars and mailboxes. The gates that keep that safe are a machine-checkable contract, a reviewer that cannot write, a forced failure before the real run, and a final node that proves the side effect. Then I counted my own acceptance log for the first time, and it found two holes in the gates.
Agents & MCPDevSecOpsPlatform Engineering