Dan Diggas

Engineer

AI tools, and the infrastructure under them.

Backend and AI infrastructure at Sophos by day. Local-first tools for security, ops, and music the rest of the time.

Writing

Notes on AI agents, security, and building tools that last.

·8 min read

The Drawing Is the Spec. The Data on the Arrows Is the Contract.

Everyone is writing about managing coding agents like a team. I measured 7,785 of my own prompts: median 11 words. The prompt is short because the spec is a drawing, with the real data written on every arrow. Once the data on each hop is chosen, the code is already decided. Here is the loop, with a real diagram.

·5 min read

Check the Recruiter Before the Code

Binance lost $6.3 billion, and by its own account it started with a fake job interview and a take-home. I've run due diligence on recruiter messages with my agents since March. Tonight I added the part that reads the take-home without running it, and open-sourced the lot.

·7 min read

What Does It Actually Mean to Revoke an AI Agent?

At AI Security Night London, one talk asked how you revoke an AI agent. On the way home I kept asking: revoke what? The process, the keys, the work already running, or the damage already done?

·6 min read

My Sessions Are the Traces: Error Analysis on My Own AI Agents

Chapter 3 of Evals for AI Engineers says to read traces end to end, mark the first failing step, and group the notes only after 20 of them. I work with coding agents all day, so I built that into the dashboard I already use. Here is the page, the first mark, and the plan.

·6 min read

I Typed 'I Told You' 117 Times. Then I Stopped Writing Rules for My AI Agents.

I scanned 1,754 sessions and 4,701 of my own prompts across two months. Written rules in a markdown file did not stop my agents from skipping skills, starting edits before design sign-off, or burning frontier tokens on lookups. Here is how I replaced text rules with deterministic code guards.

·5 min read

I wanted to see what my AI agents could reach

I added a map to Agent Estate to explore what could happen when file access, tools and outside connections work together. Each possible route keeps its evidence, conditions and unknowns visible.

·6 min read

I Built a Usage Tracker for My AI Agents

I run three AI coding tools, each with its own five-hour and weekly limits. This is the panel I built to see all of them in one place: how it asks each tool, how it reads three very different answers, how the numbers get to the screen, and how I checked it tells the truth.

·6 min read

My Test Passed Because the Answer Was in the Test

An AI feature I was about to ship scored 60% on its first test. The test songs had a metronome in them. Three tests later the real answer was sitting inside the files all along. This is how I check what my agents build.

·4 min read

My Agent Saw an Empty Graph. The Parser Was Wrong.

A schema came back in a format the client did not recognise, and the parser turned that into an empty list. No exception, no HTTP error. For an agent reading the graph through MCP tools, 'I can't read this' became 'there is nothing here'.

·5 min read

Most of My Context Window Was Unaccounted For

I built a dashboard to see what my agents had. It still couldn't tell me what was in the context window at the moment I hit enter. So I built a context workbench, measured one live session, and found that 80% of the used context was not attributable to anything I could name.

·5 min read

I Couldn't See What My Agents Could See

I use AI agents across three different harnesses every day, and for months I had no idea which of them knew what. So I built myself a control panel. This is how it got birthed, and why observability of your own setup is a different problem from observability of your outputs.

·9 min read

I Built My Agent a Memory. The Lookup Was Pointing the Wrong Way.

My agent's memory had a write path and no read path. The check I needed already existed. It just ran at the end of the job instead of the start. An ordering bug wearing the costume of a missing feature.

·3 min read

Falsify the judge before trusting the eval

An LLM judge can give you a green evaluation without proving it can recognise a bad answer. So I added a tier to my eval harness that has to fail before it's allowed to pass.

·10 min read

My Harness Was Invisible. So I Built It an Observatory.

Nine skills, seven hooks, 135 memory files, crons — all buried in dotfiles and edited by digging through VS Code. I built a UI over the whole thing: memory graph, in-place editing, skill changelogs, hook config, and an evals screen. Because handing frontier tasks down to cheaper models only works if you can measure what a model can do with your current skills.

·10 min read

My Agent Argues With Me Before It Updates My Worldview

Summaries pile up and thinking stays still. So I built a pipeline where videos become typed challenges against a beliefs file capped at seven entries, checked for novelty against a knowledge graph, and judged by exactly one person: me.

·9 min read

My AI Agent Waited for Me to Start It. Now One Part Runs While I Sleep.

I had memory, budgets, and guardrails, and I was still the one pressing go. Climbing from harness to loop turned out to be one timer, one snapshot file, and knowing which celebrated pattern to skip.

·5 min read

ShadowScout: Sending the Scout Before Another AI Tool Gets Adopted

A hackathon build for shadow AI approvals: Tavily searches vendor evidence, Gemini extracts claims, deterministic policy rules make the decision, and ClickHouse-shaped audit rows preserve the trail.

·5 min read

Recruiter Risk Triage: Separating Real Opportunities From Unsafe Outreach

A real LinkedIn recruiter message felt slightly off, so I checked the company, found the website did not resolve, and traced the role back to an expired job description. This is the local-first tool I built from that instinct.

·5 min read

Primitive Reps: The Way I Learn Hard Things

I do not learn hard technical skills by covering topics. I break them into small movements and repeat those movements across scenarios until the pattern becomes automatic.

·7 min read

I Gave My AI Agent a Memory. Then It Started Choking on It.

The follow-up to the memory-layer post. Persistent context worked too well: session start was burning 30-40K tokens before I typed a word. Four fixes — context is a budget, not a bucket.

·5 min read

Your Platform Is a Bottleneck With a Logo

A simple test for whether an internal platform is actually self-service, or just another queue developers have to wait in.

·5 min read

What Broke When I Tried to Use My Own Practice App

The Musician's Practice App is not public yet. This is a build note from getting it ready for early testing by using it like an actual musician, not a feature checklist.

·12 min read

The Platform Nobody Thinks About Anymore

Platform engineering only becomes visible when it breaks. This is the story of building reusable testing, compliance and production-gating infrastructure that multiple services could adopt without reinventing the same deployment safety work every time.

·8 min read

I Built a Memory Layer for My AI Agent

Stateless AI sessions waste engineering time. I built a context layer where sessions load relevant history, persist decisions, and traverse a knowledge graph instead of starting from zero.

·10 min read

Your Production System Has Logs. Your Career Probably Doesn’t.

Engineering work leaves traces everywhere: Jira, GitHub, Slack, incidents, notes. Career observability is about connecting them before performance review season turns you into an archaeologist.

·5 min read

I Built a RAG System to Solve a Real Problem I've Had for 15 Years

You put a specific keyboard on the rider, get flown out to the gig, and when you arrive it's something completely different. That's the scenario this project solves.

Projects

Practical AI workflow tools for music, security, and operations.

Mac app that turns a stems delivery into a ready DAW session: every stem named, placed and playable, with a receipt showing what was imported and what was skipped. Signed and notarised.

SwiftUIPythonAbletonLogic ProFL StudioPro Tools

Autonomous compliance approval agent for shadow AI tools. Searches vendor evidence, maps it to company policy, produces scoped decisions, and monitors approved tools for drift.

PythonStreamlitTavilyGeminiClickHouse

Local-first dashboard for checking recruiter outreach across legitimacy, security risk, original JD clues, opportunity fit, and safe reply strategy.

PythonAgent GraphDNS/RDAPCompanies HouseLocal UI

Practice app for musicians who can already play. Timer, YouTube player, metronome, tuner, sheet music, AI recommendations.

DjangoNext.jsPostgreSQLRailway

AI Studio Agent

In progress

Automated stem loading for Ableton Live. The goal: send a message from your phone and open a prepared Ableton project later.

PythonMCPGmail APIAbleton

Threat Intel Daily Brief

In progress

Automated morning email with high-signal cybersecurity threat items from trusted sources. Built for engineers and analysts.

PythonLLMRSSSMTP