Skip to content
Latchkey

Git LFS Pointer Files Checked Out Instead of Real Content

Your large files came down as tiny text pointers, not the actual binaries. The checkout happened before Git LFS was active, so the smudge filter never swapped the pointers for real content.

What this error means

A build reads an LFS-tracked file (an image, model, binary) and finds a few lines of version https://git-lfs.github.com/spec/v1 text instead of the real data - so loading, hashing, or running it fails downstream.

file contents
$ cat assets/model.bin
version https://git-lfs.github.com/spec/v1
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size 132480029

Common causes

Checkout ran before LFS was installed

If git lfs install had not registered the smudge filter when files were written, Git left the pointer placeholders in place rather than downloading the content.

LFS fetch was skipped in the checkout step

A checkout that did not request LFS (lfs: false / default off in some setups) clones the repo with pointers only and never pulls the binary objects.

How to fix it

Pull the real content after enabling LFS

Install/initialize LFS, then fetch and checkout the actual objects to replace the pointers in place.

Terminal
git lfs install
git lfs pull
# or, to re-smudge existing files:
git lfs checkout

Fetch LFS during checkout

Make the checkout step LFS-aware so content arrives in the first place.

.github/workflows/ci.yml
- uses: actions/checkout@v4
  with:
    lfs: true

How to prevent it

  • Install Git LFS before the checkout that needs content.
  • Set lfs: true in the checkout step for LFS repos.
  • Verify a known LFS file is binary (not pointer text) early in the job.

Related guides

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