Why Git authentication is hard
Every git push, git fetch, and git pull to a remote repository requires proof that you're allowed to perform that operation. Git's two supported authentication mechanisms each come with trade-offs. HTTP(S) sends a username and password or personal access token (PAT) via HTTP headers; SSH relies on the server knowing your machine's public key. SSH is generally considered more secure but is harder to configure correctly, while PATs are simpler to set up but less secure.
Credential managers exist to handle authentication to different hosting services. The original design was straightforward: store usernames and passwords in a secure location like a keychain or encrypted file, then retrieve them when needed. The widespread adoption of two-factor authentication (2FA) changed that calculus. New and existing tools now have to accommodate stricter authentication models, making authentication features notoriously difficult to build, debug, and test.
Introducing Git Credential Manager Core
Microsoft is addressing this with Git Credential Manager (GCM) Core, an open-source, cross-platform credential manager for Git now available in beta for Windows and macOS. It currently supports GitHub, Bitbucket, and Azure Repos, with the architecture designed from the ground up for cross-platform and cross-host use. Linux support and additional hosting services are on the roadmap.
GCM Core will initially coexist with the existing credential managers. The older Git Credential Manager for Windows and Git Credential Manager for Mac & Linux remain supported during the beta period, though both are slated for deprecation and retirement once GCM Core has proven itself.
Installing GCM Core
Windows
GCM Core ships as a standalone installer available from the releases page on GitHub. The upcoming Git for Windows installer will include it as an experimental option before making it the default.
The tool installs side-by-side with the existing Git Credential Manager for Windows and reuses previously stored credentials, so you won't need to re-authenticate. Credentials created by GCM Core remain backward compatible with the older manager if you decide to switch back. If GCM Core came via the Git for Windows installer, run this in an admin command-prompt to revert:
git config --system --unset credential.https://dev.azure.com.useHttpPath
git config --system credential.helper manager
With a standalone installation, uninstalling GCM Core from the Control Panel or Settings app restores the previous setup.
macOS
macOS users can install GCM Core from the custom Microsoft Homebrew Tap and configure it for the current user with:
brew tap microsoft/git
brew cask install git-credential-manager-core
The authentication flow
GCM Core is designed to prompt for new credentials only when absolutely necessary. The authentication flow supports interactive sessions with a variety of 2FA mechanisms.
On Windows, authentication uses a graphical user interface with windows customized to each Git hosting service:
macOS currently combines terminal input with browser windows:
A cross-platform GUI is in development to unify the experience across operating systems.
Credentials are stored securely after the token-creation steps. Windows uses the Windows Credential Manager, which maintains backward compatibility with existing GCM for Windows credentials. macOS stores credentials in the user's login Keychain.
Why a new credential manager?
GCM Core is the product of a fractured authentication landscape that emerged over time. Git Credential Manager for Windows was created in 2015 to address two problems at once: Azure Repos (then Visual Studio Online) lacked SSH support, and many users had a hard requirement for 2FA with Azure Active Directory or Microsoft Accounts. GitHub and Bitbucket support came later through open-source contributions. Git for Windows initially shipped only with wincred, a simple C-based helper that persisted usernames and passwords without any 2FA capability.
Git Credential Manager for Mac & Linux was built separately, targeting developers on non-Windows platforms and non-Microsoft toolchains. The two codebases are entirely independent: the Windows version is written in C#, the Mac & Linux version in Java. The latter was limited to Azure Repos and never gained GitHub or Bitbucket support. Both accumulated their share of workarounds as enterprise authentication topologies grew more complex.
The impetus for a unified tool came from Microsoft's own monorepo work. After the Windows OS monorepo moved to Git, the Office team wanted to do the same — but their developers on macOS needed cross-platform tooling. The GVFS Protocol used by Scalar and VFS for Git relies on HTTP REST endpoints rather than SSH, making a reliable credential manager on macOS essential. With .NET Core and .NET Standard making cross-platform development practical, and the ability to bundle the .NET runtime eliminating dependency issues, the foundation for GCM Core was in place.
What's next
The current release is the first step toward a universal authentication experience, and contributions are welcome via issues and pull requests.
Linux distributions
Linux support is in active development with the groundwork already laid. The main open question is secure credential persistence across distributions. Follow progress on the Linux support issue.
Cross-platform GUIs
Windows currently has GUIs for all supported hosting providers, while macOS only has one for Azure Repos. Options being evaluated include Avalonia and native helper apps. Track updates on cross-platform UI work.



