Skip to content
Latchkey

DVC "md5 ... changed" WARNING in CI

DVC recomputed the checksum of a tracked file and it differs from the md5 stored in the .dvc metadata, so it warns that the data changed. In CI this usually means the file was regenerated or altered after checkout.

What this error means

dvc status or a stage prints "WARNING: md5 ... changed" or lists tracked data as "modified", and downstream stages rerun or fail a consistency check.

dvc
WARNING: md5 of 'data/train.csv' changed, updating...
data/train.csv:
    changed checksum

Common causes

The file was regenerated after checkout

A build step rewrote the tracked file, so its content hash no longer matches the committed .dvc record.

Line-ending or filter changes altered the bytes

A CRLF conversion or other filter changed the file on checkout, shifting its md5.

How to fix it

Pull instead of regenerating tracked data

  1. Do not rebuild data that DVC already tracks in CI; pull it instead.
  2. If the change is intentional, dvc add and commit the new pointer.
  3. Re-run so status is clean.
Terminal
dvc pull
dvc status

Stop filters from altering tracked files

Treat tracked data as binary so line-ending filters do not change its hash.

.gitattributes
data/** -text

How to prevent it

  • Pull DVC-tracked data in CI rather than regenerating it.
  • Mark tracked data as binary to avoid filter-driven hash drift.
  • Commit updated .dvc pointers whenever data legitimately changes.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →