Git LFS filters not registered ("git lfs install" not run) in CI
By Daniel Zoghalchali·Latchkey
The git-lfs binary can be present yet inert: until git lfs install registers the clean and smudge filters in git config, checkouts leave pointer text and commits store raw content.
What this error means
LFS-tracked files stay as pointer text after checkout, or git check-attr filter shows lfs but files are not materialized, and git lfs env shows the filters unconfigured.
git-lfs
$ git lfs env | grep filter
git config filter.lfs.smudge = ""
git config filter.lfs.clean = ""
# filters empty: git lfs install was never run
Common causes
git lfs install was never executed
On a fresh container or a new user, the LFS filters are not in git config until git lfs install runs.
A restricted config scope
Installing at a scope the CI user does not read (wrong HOME or config file) leaves the filters unregistered for the job.
How to fix it
Run git lfs install before checkout
Add a step that runs git lfs install for the CI user.
Confirm git lfs env now shows the smudge/clean filters set.
Re-run the checkout so objects materialize.
Terminal
git lfs install
git lfs env | grep filter
Install at the right scope
Ensure the install writes to the config the job uses; use git lfs install --system in images where all users need it.
Terminal
git lfs install --system
Using this in CI
CI checkouts are shallow and detached by default, which changes the answer this command gives you. Commands that read history, branch names, or tags need the checkout configured for it.
.github/workflows/ci.yml
- uses:actions/checkout@v4with:fetch-depth:0 # history, tags, and git describe all need this- run:|git rev-parse --is-shallow-repository # expect falsegit rev-parse --abbrev-ref HEAD # prints HEAD when detached
How to prevent it
Run git lfs install during runner or image setup.
Use --system scope in shared images.
Assert git lfs env shows configured filters in CI.
Frequently asked questions
What causes Git LFS filters not registered ("git lfs install" not run) in CI?
There are 2 common causes: git lfs install was never executed and a restricted config scope. On a fresh container or a new user, the LFS filters are not in git config until git lfs install runs.
How do I fix Git LFS filters not registered ("git lfs install" not run) in CI?
There are 2 fixes depending on which cause you have: run git lfs install before checkout and install at the right scope. Work through them in order, since the first is the most common.
What does Git LFS filters not registered ("git lfs install" not run) in CI actually mean?
LFS-tracked files stay as pointer text after checkout, or git check-attr filter shows lfs but files are not materialized, and git lfs env shows the filters unconfigured.
How do I stop Git LFS filters not registered ("git lfs install" not run) in CI happening again?
Run git lfs install during runner or image setup. The prevention section lists 3 changes that keep it from recurring.