There seems to be some change in behavior, either to included files or to safe.directory between Git 2.36.0 and 2.38.0. I don't see any explanation in the release notes. I push out a system configuration with a configuration management tool which is why it is in a separate file. If I put the safe.directory configuration in the main system config, it works. I don't understand why this is because the value is still shown when running a config list. Basic config: [root@myhost myproject]# pwd /opt/myproject [root@myhost myproject]# cat /etc/gitconfig [include] path = /etc/gitconfig.d/myproject [root@myhost myproject]# cat /etc/gitconfig.d/myproject [safe] directory = /opt/myproject With the old version: [root@myhost myproject]# git --version git version 2.36.0 [root@myhost myproject]# git config --list --show-scope system include.path=/etc/gitconfig.d/myproject system safe.directory=/opt/myproject local core.repositoryformatversion=0 local core.filemode=true local core.bare=false local core.logallrefupdates=true local remote.origin.url=git@xxxxxxxxxxxxxxxxxx:me/myproject.git local remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* local branch.master.remote=origin local branch.master.merge=refs/heads/master [root@myhost myproject]# git pull Already up to date. [root@myhost myproject]# After the upgrade: [root@myhost myproject]# git --version git version 2.38.0 [root@myhost myproject]# git config --list --show-scope system include.path=/etc/gitconfig.d/puppet system safe.directory=/opt/myproject [root@myhost myproject]# git pull fatal: detected dubious ownership in repository at '/opt/myproject' To add an exception for this directory, call: git config --global --add safe.directory /opt/myproject [root@myhost myproject]#