Guardian: The Security Watchdog That Lives Outside the Vault
Guardian: The Security Watchdog That Lives Outside the Vault November 1, 2026 · 5 min read
GithubLearning

Someone planted sleeping malware in my code — disguised as fonts and editor settings, delivered through commits that looked exactly like mine. Here is why the answer was a watchdog that lives outside my repositories, and what that taught me about trust.

Commits That Looked Like Mine

In October 2026, a routine look at my own repositories surfaced something unsettling: commits that carried my commit messages, my dates, my author names — but I never made them. Someone had rewritten history underneath me, planting foreign material inside lookalike commits designed to survive a casual glance.

This is a real attack class, and it has a name: a supply-chain campaign. The idea isn't to break into your computer with a bang. It's to slip quiet things into the places you already trust — your own code — and wait.

What Was Actually Planted

To be clear about the threat without the jargon, here is what the campaign plants, translated:

  • A trap wired to your editor's door. A tiny configuration file that makes your code editor run a task the moment you open the folder. You don't click anything. Opening the project is the trigger.
  • Fake fonts that are actually code. Files named like innocent font assets — but they're text in disguise, waiting to fetch and run worse things from the internet.
  • Riders on your build. Small additions to existing config files, so the payload also wakes up when you normally build or develop the project.

Everything is dormant and everything is camouflaged. The font files are genuinely real fonts on the outside. The editor files are inert-looking settings. Each piece alone can talk its way past a guard. It's the combination — and the fact that a fonts folder appeared overnight in projects that never had one — that gives the campaign away.

Why You Can't Guard the Vault with the Thief's Key

My first instinct was the obvious one: add protection inside the repositories. A check, a script, a rule.

Then the flaw hits you. The same stolen key that let the attacker in can also switch off anything stored inside. Workflows, protections, revert scripts — they're all just files in the repo. A lock inside the vault is only as trustworthy as the vault's least trustworthy keyholder.

That one insight shaped everything that followed: the watcher has to live outside the blast radius.

What Guardian Is

Guardian is my answer: a security guard that lives in its own separate place and walks around every project I own, on a schedule, looking for the fingerprints of exactly this campaign — the editor trap, the fake-font folder, the config riders, the loader strings.

When it finds something, two things happen: it files a report (a ticket, so nothing gets lost), and it pings my phone — a Telegram alert naming the actual repositories involved. No vague warnings; real names, immediately.

And by design, the intruder cannot silence it. Guardian's credential can only read. There is nothing it can edit, disable, or delete — including Guardian's own alarms.

The Alarm Clock Needed Its Own Alarm Clock

Reality added a chapter no plan predicted. After the campaign, GitHub's own scheduler started silently skipping Guardian's hourly check — the runs just didn't happen, with no error anywhere. (Working as intended: protections get noisy around abuse-flagged accounts.)

The fix was almost comedic: a tiny independent heartbeat on Cloudflare that checks "did Guardian actually run recently?" — and re-triggers it if the schedule went quiet. A backup alarm clock for the alarm clock. It cost nothing, it lives on a third platform, and it coexists peacefully with the original schedule: whoever fires first wins, and nothing runs twice.

Three Lessons Worth Keeping

  • Camouflage beats "looks suspicious." The planted fonts were real fonts; the settings were valid JSON. Detection that asks "does this file look evil?" loses. Detection that asks "why does a fonts folder exist in a project that never had one?" wins. Presence and placement, not appearance.
  • Controls must live outside the blast radius. Any protection that the attacking credential can edit is not a protection — it's decoration.
  • Silence is not safety. Early on, a throttled run failed its lookups and reported everything as clean. Since then, every failure is a loud ERROR, never a green checkmark. A check that can fail quietly is worse than no check.

The Honest Ending

The campaign was caught, the planted history was cleaned, and the watchdog now runs whether or not anyone remembers it exists — which is the entire point of a watchdog. Nothing here required exotic skills. It required taking seriously one uncomfortable question:

If someone already has the keys to everything I own, what is left that they cannot touch?

Guardian is my answer to that question. It's not inside the vault. That's the feature.

Frequently asked

What is a supply-chain attack, in simple terms?
Instead of attacking your computer directly, the attacker slips harmful code into something you already trust — a library you install, a tool you use, or your own repository. The damage arrives disguised as part of your normal workflow, which is why ordinary warnings don't fire.
Why can't the protection just live inside the repository?
Because anything stored inside a repository — workflows, scripts, settings — can be edited or deleted by whoever holds the repository's write access. The same stolen credential that let the attacker plant code could also switch off a guard stored next to it. That is why Guardian runs from a separate place with read-only access.
What happens when Guardian finds something?
It files a GitHub issue so the finding is tracked and deduplicated, and sends a Telegram alert to a private group naming the actual repositories affected. Repo names in public issues are masked with derived codes; the real names only appear in the private alert.
AT
Athalla Rizky
Full-Stack Engineer · Backend · AI tooling
I write about backend systems, developer experience, and running software projects with AI agents. Follow along — new posts every other week.