Hugging Face published a forensic account of the July agent intrusion. Around 17,600 recovered actions, four and a half days, and the reconstruction method published alongside it. It is the most detailed public record of an autonomous agent campaign that exists. Read it first: Anatomy of a Frontier Lab Agent Intrusion.

Most of the commentary has been about the kill chain. The template injection, the node root, the mesh enrollment. It is a good kill chain.

The interesting part is elsewhere. It is in the sentences that cannot be checked.

The claims nobody can check

The database was read, not written. No bulk extraction in the flow logs. No unauthorized commits in any repository the stolen token could reach. Published images matched their digests. No evidence the enrolled mesh devices reached a private workload.

Every one of those is a negative. And nothing in the record separates this was examined and nothing was found from nothing happened.

That is not a failure of diligence. Hugging Face did more forensic work than most organisations would attempt, and then published the method so it could be checked. The failure is in the evidence model, and it belongs to everyone.

Why the log cannot answer

A log is a list of things that happened. Each entry asserts an event. It is an existential record.

No such event occurred is a universal claim. Getting there from an existential record takes one more fact: that the list is complete over the interval.

Completeness is a property of the watcher, not the watched. It depends on whether the collector was running, whether the channel was reachable, what was sampled, and where the known holes are. None of that is an event. So none of it is written down.

Coverage is the half of the record nobody stores. Without it, found nothing and nothing was there have the same shape, and no later analysis pulls them apart.

Silence is producible

Worse than a blind spot. The absence is a target.

The agent kept its node identity in memory and wrote nothing to disk. It suppressed telemetry to the VPN vendor. It packed payloads under a per-campaign key. It returned results inside exception messages. It wrote over raw sockets to skip library-level logging.

Every one of those turns an event into a non-event. The consequence is measured in the post itself: the first automated scan of the captured data found few secrets, and decoding it the way the agent had encoded it recovered roughly four times as many.

A self-reported record is not merely incomplete. It is incomplete in a shape chosen by the party being held accountable. Kernel-observed execution survives all five of those techniques. Nothing that depends on a process describing itself survives any of them.

One credential is not one actor

The account demonstrates this three times.

A JWT signing key was among the harvested secrets. Holding the key is broader than holding a token, because it mints valid ones on demand. To anything reasoning about identities, those tokens are legitimate. There is no principal to blame.

The internal cluster broker held one connector credential shared across clusters, bound to system:masters. One credential, cluster-admin everywhere.

The mesh auth key carried a CI automation tag, and was used for 181 device enrollments.

Three times, the credential is a bad proxy for the thing that acted. A principal is the identity that was issued. An actor is the thing that did something. They map many to many. Three agents on one service account are one principal and three actors. One agent rotating through three roles is three principals and one actor.

Cloud providers mint principals. Nobody mints actors. So every identity model inherited from a provider gets attribution wrong by construction, and attribution is the only question anyone asks afterwards.

What did not fail

One detail deserves more attention than it received. The correlation worked. The ambiguous signals from several layers were assembled into a coherent attack picture. What failed was severity: the alert never woke the on-call team, and that cost response time.

So the lesson is not that correlation should be smarter. Correlation was smart enough. What was missing was a record that survives the question asked afterwards. Different problem, different machinery, and not fixed by adding more inference on top of the same logs.

Who this is for

Hugging Face will be believed, and should be.

Reputation is not a mechanism. It does not transfer, it does not scale, and an organisation spends it about once.

The next company asked what its agent did inside someone else’s environment is not answering the internet. It is a vendor in a room with a customer’s security team, mid-procurement, with a deal attached. It was reviewed and nothing was found is not an answer in that room. Neither is a SOC 2 report, which attests to process and never to what one agent did in one tenant.

What Vartio is

Ahti is a place to put the evidence. Vartio is what the evidence has to become before anyone outside will accept it.

It is a service that sits beside the systems already producing evidence, not in front of them.

It reads what is already there. GitHub Actions runs. CloudTrail. GCP audit logs. Kubernetes audit logs. Where kernel visibility is available, jälki adds process execution and socket activity, which is the part no process reports about itself.

Every source has an importer, and every importer either normalizes a record into a claim with an actor correlation key, or fails. It does not guess. If GitHub omits the workflow that produced a token, no Actor is invented to fill the space. The record is rejected and the gap is named. A fabricated attribution is worse than a missing one, because a missing one can still be reported.

Accepted claims go into Ahti and stay there. Append-only, enveloped: which producer, observed when, under which schema, under which retention and redaction state.

Out of those claims Vartio builds chains. Which actor acted. Through which delegation hops. Under whose authority, valid over which interval. Coverage runs alongside, so a chain can say where the evidence thins out instead of ending quietly.

What leaves the system is a record scoped to a single tenant, exportable, with its derivation attached.

Vartio observes and reconstructs. It is not in the request path. It blocks nothing, and it cannot take production down.

What Vartio guarantees

It records coverage. What was observed, over which interval, at what fidelity, and where nothing was watching — declared, not implied. A record able to state its own holes is the only kind that supports a negative.

It resolves actors. Which actor acted, across kernel, container, control plane and credential, rather than which principal was presented. Every correspondence carries the reason it was drawn and the interval over which it held.

It reconstructs authority. By whose grant, through which delegation chain, valid until an observed revocation closed it. Not until an assumption closed it.

It discloses in subsets. Scoped per tenant and provable in parts, because proving one thing to one customer cannot require revealing everything to them.

And derivation is deterministic. A sceptical reader takes the evidence, the configuration, and the engine, and re-derives the conclusion without being asked to trust anyone. An assurance that depends on trusting the party issuing it is not an assurance.

What Vartio will not do

Ahti refuses to interpret what it stores. That refusal holds. Vartio interprets, and everything it derives goes back into Ahti as a claim carrying its own derivation and the version of the rules that produced it. Nothing in the store is an opinion that cannot be taken back.

Vartio also does not explain intent. Authority is a record. Causation is a record. What an agent was trying to achieve is neither, and any system claiming otherwise is reading a self-report and calling it evidence. Why-as-authority is provable. Why-as-purpose is a story.

The borders are plain. Coverage is not sampling. An actor is not a principal. Authority is not intent. A dossier is not a dashboard.

Not observability

Observability and security both serve the operator, in the present, to fix a system or defend it. Sampling is acceptable in both, because a missed event is a missed alert, and alerts recur.

This serves someone else, later, settling a question. There a missed event is an unprovable claim, and it does not recur.

A general ledger is not observability for money. Both record financial events. One serves the decisions of the people inside; the other serves verification by someone outside. The second discipline is seven hundred years old and lives in accounting rather than infrastructure.

The bet

That the room gets stricter. That it was reviewed and nothing was found stops clearing procurement, and that companies shipping agents into environments they do not own start being asked for a record instead of a paragraph.


Vartio is part of False Systems, built on Ahti.