color.ui is not working as expected

From: John Bevan <hidden>
Date: 2025-10-24 13:38:11

Hi,

There seems to be an issue with colour formatting on output from git;
e.g. error messages are showing in the console's default colour
instead of red, despite colour.ui being set to always.

I'm using the Windows version of git, but on submitting this issue
there I was directed to yourselves.
https://github.com/git-for-windows/git/issues/5907#issuecomment-3433888979

It seems that the issue is down to errors being sent to the error
function in usage.c
(https://github.com/git/git/blob/master/usage.c#L291), but that
function doesn't include colour based formatting.

Thanks in advance,

JB

(Apologies for not following the advice at:
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html - sadly my
company blocks access to HTTP (without TLS) sites, and this site
doesn't present via HTTPS).

Additional Info

Git for Windows version
git version 2.51.1.windows.1
cpu: x86_64
built from commit: 1454f0a9c4a3a22fb3fd7cc33f76f88cd65ced41
sizeof-long: 4
sizeof-size_t: 8
shell-path: D:/git-sdk-64-build-installers/usr/bin/sh
feature: fsmonitor--daemon
libcurl: 8.16.0
OpenSSL: OpenSSL 3.5.4 30 Sep 2025
zlib: 1.3.1
SHA-1: SHA1_DC
SHA-256: SHA256_BLK
default-ref-format: files
default-hash: sha1

Windows version
Windows 11

Windows CPU architecture
x86_64 (64-bit)

Additional Windows version information
Microsoft Windows [Version 10.0.22631.6060] Options set during
installation Editor Option: VIM Custom Editor Path:
Default Branch Option:
Path Option: Cmd
SSH Option: OpenSSH
Tortoise Option: false
CURL Option: OpenSSL
CRLF Option: CRLFAlways
Bash Terminal Option: MinTTY
Git Pull Behavior Option: Merge
Use Credential Manager: Enabled
Performance Tweaks FSCache: Enabled
Enable Symlinks: Disabled
Enable FSMonitor: Disabled

Other interesting things
ANSI colour codes proven to work by running "e[31mREDe[0m" in pwsh/powershell.

git config --global --list gives:
core.sshcommand='C:\Windows\System32\OpenSSH\ssh.exe'
core.autocrlf=false
core.longpaths=true
core.editor=code -w -n
core.pager=less -FRX
user.name=REDACTED
user.email=REDACTED
user.signingkey=~/.ssh/id_ecdsa.pub
safe.directory=*
gpg.format=ssh
gpg.ssh.allowedsignersfile=~/.ssh/allowed_signers
commit.gpgsign=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process filter.lfs.required=true
diff.tool=vscode difftool.vscode.cmd=code -w -n --diff $LOCAL $REMOTE
merge.tool=vscode mergetool.vscode.cmd=code -w -n --merge $REMOTE
$LOCAL $BASE $MERGED init.defaultbranch=main color.ui=auto
color.error=red bold

Git.exe is at: %appdatalocal%\Programs\Git\cmd\git.exe

.gitconfig is at: %UserProfile\.gitconfig

Terminal/shell
PowerShell

Commands that trigger the issue
git checkout nonExistantBranch

Expected behaviour
Output error: pathspec 'nonExistantBranch' did not match any file(s)
known to git in red

Actual behaviour
Output error: pathspec 'nonExistantBranch' did not match any file(s)
known to git in white (terminal default)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help