What
Claude Code runs git in the background for things like checking whether a file is tracked. The environment it gives git (the settings passed to a program when it starts, called environment variables) has changed:
- The
git ls-filesandgit check-ignorehelpers now pass a shared set of leading arguments and an explicit environment. - The
git ls-filescheck used by the Bash tool now builds a cleaned environment that setsGIT_LITERAL_PATHSPECS,GIT_TRACE2,GIT_TRACE2_PERFandGIT_TRACE2_EVENT. If the git program it finds fails a safety check, the file is treated as untracked. - A fixed environment that sets
LC_ALLandLANGUAGEtoC(which keeps git's output in plain English) now exists, and agit rev-parsecall uses a shared helper for it instead of settingLC_ALL=Cinline. - Several other git calls, including config reads, the shortstat call and one general git invocation, no longer force
LC_ALL=Con their own and use the shared environment helper instead.
Why
Git calls are less affected by settings in your own environment, such as tracing output or a different way of reading file patterns. Because the forced LC_ALL=C was dropped from some calls, git output there may follow your language settings.