Data Provenance Tracking for AI Agent Pipelines
Filesystem-level tracking captures what agents actually read, not just that they ran.

An AI agent pipeline needs a filesystem that remembers everything it touches, because logs alone cannot reconstruct which document, chunk, or passage actually produced an answer. The fix is capturing provenance at the layer where agents read, write, and transform data in the first place: the file layer itself.
Why traditional logging cannot solve agentic pipeline provenance
Picture a support ticket. A production LLM gave a customer the wrong answer, and now an engineer has to figure out why. They show the completion. They show nothing about which documents the retrieval step pulled back, which chunks made it into the context window, or which passage the model leaned on when it wrote its answer. The only way forward looks like re-running the same query against the same corpus, except the corpus has since changed, so even that doesn't reconstruct what actually happened. This happens because logging tools were built for a different kind of system than the one agents create.
Traditional pipelines move data in a fixed, supervised sequence. Agents don't work that way. They call tools on their own judgment, ingest data mid-session, generate intermediate artifacts nobody asked for by name, and chain steps whose order and branching get decided at runtime, not at design time. A flat, timestamped event log doesn't show the dependencies between those steps. It shows that things happened. It doesn't show what depended on what.
The volume of logs isn't the issue here. A log file that was never structured to capture causality can't be fixed by making it bigger. What agentic workflows need is a record of the causal graph itself: which inputs fed which decisions, which decisions produced which actions, which actions generated which outputs. A sequential log can tell you that a tool got called at 14:02. It can't tell you which earlier read made that call necessary, or which of three possible branches the agent actually took and why.
The four distinct things agents do to data, and why each must be recorded separately
Provenance debt builds up across four kinds of operations, and each one is causally distinct enough that lumping them together loses information. The W3C PROV model gives a clean way to think about this directly: an entity is the document, web page, or extracted record the agent reads; an activity is the fetch, the extraction, the summarization, or the tool call; the agent is whatever model or service ran that activity. Agent pipelines map onto this structure almost exactly, which makes it a useful lens for seeing where records need to live.
Read. When an agent fetches a source, the record needs the source URL or canonical identity, the retrieval timestamp (which is not the same thing as when the page last changed, and not the same thing as when a search index last recrawled it), a content hash identifying the exact bytes the agent saw, and the cache policy that determined whether the agent got live content or something stale. Missing any one of those means you can't later prove what the agent actually looked at.
Transform. Extraction, chunking, summarization, normalization, all of it counts. Same input, different method, different truth.
Write. When an agent produces an artifact, whether that's a file, a schema mapping, a migration script, or a model checkpoint, the record needs to link that artifact back to the exact inputs and transformations that produced it. Without that link, an output is just a file sitting there with no story attached.
Invoke. When an agent calls a tool or an external API, the record needs to capture which tool, which arguments, and what came back. Tool output doesn't stay contained. It becomes an input to whatever the agent does next, so losing track of it here means losing track of everything downstream too.
Each of these four operation types leaves a filesystem-level trace when an agent works against mounted cloud storage.
Why does any of this matter in practice? Because stale data is sneaky. Without a record of what it read and when, there's no way to catch that after the fact.
Provenance, lineage, observability, and audit logs answer different questions
Teams that treat these four terms as roughly interchangeable end up with a provenance gap they don't know they have, because the definitions are specific enough to keep straight.
| Concept | What it actually tells you | |---|---| | Data provenance | The origin and history of one specific piece of data | | Data lineage | How data flows through systems, at the pipeline level | | Observability | Runtime system behavior, via traces, spans, and metrics | | Audit logs | Who did what, and when |
Provenance and lineage sit closest together of the four. Lineage shows the path data takes through a system. Provenance attaches evidence to each item sitting on that path. The two aren't swappable, though: lineage without per-item evidence can't answer the question that matters most during debugging, which is what exact content the agent saw at a given step. Knowing that data flowed from system A to system B tells you nothing about which version, which byte, which chunk made the trip.
Observability has its own blind spot. AI pipelines need a sixth pillar on top of those five: semantic integrity, which checks whether the business meaning of a data field still matches what the agent was calibrated to expect. A column named customer_status can pass every structural check in the book after a CRM workflow update quietly changes its meaning from "account active" to "contract pending renewal." An agent reasoning over that column, though, produces a wrong answer anyway, because the data didn't change shape, it changed meaning.
Audit logs round out the set, serving an accountability function instead. That's an event, and it answers an accountability question. It does not reconstruct the causal chain of data dependencies that led to that email going out: it answers "who did this" without answering "why did this happen" or "what fed into this decision. Debugging needs the second kind of answer, and audit logs structurally don't provide it.
Why the file layer captures provenance more reliably than the application layer
Provenance captured at the file layer holds up better than provenance bolted onto the application layer, for a simple reason: the file layer doesn't need anyone's cooperation.
Application-layer instrumentation means decorators wrapped around tool functions, wrappers placed around LLM API calls, observability hooks sprinkled through the code. Nobody gets an error message when this happens. The chain just has a hole in it that nobody notices until the debugging session that needs it most.
This isn't a hypothetical weakness. But the instrumentation is opt-in at the function level. Any tool call that doesn't get the decorator produces a gap in the record, and there's no way to tell, just by looking at the output, whether a gap means nothing happened there or just that nobody wrote the annotation.
The file layer doesn't have this problem, because every read and every write an agent performs against a filesystem is an operation the filesystem itself can record, with no cooperation required from the agent or the developer who built it. Capturing those operations at the storage layer captures the dataflow without touching the agent's code.
This also means the pipeline no longer has to be re-run to reconstruct what happened. If the filesystem records what content was present at what time, via content hashes and timestamps, a forensic reconstruction doesn't require re-executing the pipeline against a corpus that's since moved on. Infrastructure that depends on a model accurately narrating its own behavior is infrastructure built on a weak assumption.
A durable, inspectable filesystem, one that records every read, write, and agent-executed command at the file layer, captures the causal graph where ephemeral session logs cannot. Tools like Archil, which mount S3 and GCS buckets as native POSIX filesystems, preserve the full history of agent interactions with data automatically, making lineage traceable by design without requiring application-layer instrumentation.
What a durable, inspectable agent filesystem must record
Reconstructing lineage without re-running anything requires a defined set of per-operation records, and the spec is fairly concrete.
A per-write record needs the artifact's path, a content hash, a timestamp, and a back-reference to the input source IDs and step IDs that causally produced it. That back-reference is what lets debugging run backward, from a bad output through the transformations that built it, all the way to the original source.
Workflow Cards offer a good proof of concept here: structured summaries that condense the machine-readable provenance data from a workflow execution into something both humans and LLMs can read and reason about. A filesystem that retains it can.
Archil's design matches this spec directly. It mounts against an existing S3, GCS, R2, or Azure Blob bucket as a POSIX filesystem, with atomic rename, hard links, symlinks, and file-lock semantics honored per-process within a single client. Agents read and write through standard file operations, and the metadata, path, timestamp, content, gets captured by construction. The bucket stays the source of truth and the persistent record, so provenance data survives agent session boundaries and can be audited or revoked without having to migrate anything.
Compliance requirements make filesystem-level provenance a legal necessity
Regulators are now asking for exactly the kind of record that ephemeral session logs cannot produce.
The EU AI Act requires documented provenance for AI training data under Article 10, enforceable for high-risk systems starting December 2027. A chronological event log can't satisfy any of that. It requires exactly the per-operation record described above.
GDPR's transparency rules reach agentic systems too. Any AI system processing personal data has to be able to answer a data subject access request with specifics: what data the system touched, when, and for what purpose. That's a request for execution traces, not summaries, and it needs durable, searchable records of every data category the system observed, every tool it invoked, every state update it made.
None of this works retroactively. Prospective, filesystem-level capture is the only approach that satisfies Article 10 without resorting to forensic guesswork after the fact.
There's a parallel exposure on the civil side, separate from regulatory enforcement. Copyright holders can claim their work was used without permission, putting the burden on the AI organization to show what data it used. Meeting that burden requires the same durable, per-artifact record that compliance with Article 10 requires.
Multi-agent and parallel-execution patterns and the provenance complexity they create
Multi-agent systems break single-session logging even further. When several agents work in parallel, each reading shared source data, writing intermediate artifacts, and consuming each other's outputs, the dependency graph crosses session boundaries. A per-session log captures one agent's local view of the world and nothing about how that view connects to what the other agents were doing at the same time.
AdProv tackles this by treating change events as first-class citizens in the provenance graph, mapped as nodes and activities, with formally defined tuples capturing the timestamp, the change type, the responsible agent, the process instance, and the target element. Branching, merging, and data versioning need their own graph constructs too, branch identifiers, version-of edges, vector timestamps for concurrency, none of which can be pieced back together from flat logs once the run is over.
This is where a shared, persistent filesystem earns its keep. A stable workspace an agent can read, write, and execute against across sessions and across parallel runs is the structural precondition for a provenance graph that's actually complete.
Provenance has to answer "what exact content did the agent see at step four," a question traditional observability and audit logs can't touch. Storage built for agent workflows, a zero-copy filesystem giving agents a persistent, shared, inspectable workspace across sessions, makes that kind of per-item provenance available at query time instead of locking teams into upfront instrumentation decisions they'll regret later.
What a complete provenance record enables across the pipeline
Go back to that support ticket from the opening section. With per-read retrieval receipts and per-write artifact records linked by step identifiers, the engineer doesn't re-run anything. They traverse the graph: wrong output, back to the step that produced it, back to the extraction method that shaped it, back to the exact source document the agent read. From there it's possible to tell whether the failure lives in retrieval, in chunking, in the source document itself, or in how the model reasoned over what it had, all without re-running inference against a corpus that's already moved on.
Trust follows the same logic. A citation-backed answer only helps if the citation is actually right, and provenance infrastructure makes it possible to verify a citation before it ever reaches a user, rather than trusting the model to report its own sources accurately. A pipeline with a real chain of custody can answer, precisely, what was in scope when a given answer got generated.
Reproducibility gets a direct boost too. Workflow Cards, the structured summaries built from execution-level provenance data, have been shown to nearly double answer quality compared with schema-based querying of provenance databases, holding consistently across both automated and human assessments. That result exists because the provenance got captured at runtime. Model Cards and Data Cards document the finished artifact, the trained model, the static dataset, but they miss the intermediate transformations, and that's exactly where bias, performance variation, and reproducibility gaps tend to come from.
There's a diagnostic upside as well.
Knowing what data went in, and being able to prove its origin, becomes the deciding factor in model quality, not how much data there was.


