🍺 BREW Explorer

← all formulae

git-credential-oauth

brew install git-credential-oauth v0.17.2 Apache-2.0

Git credential helper that authenticates in browser using OAuth

69
30-day installs · #4023
221
90-day · #4018
1.7k
365-day · #3007
837
★ GitHub stars · updated 7mo ago

Build dependencies

go

GitHub topics

git git-credential-helper usable-security

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "go"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Git credential helper that authenticates in browser using OAuth",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:38:03+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "git-credential-oauth",
  "github_default_branch": "main",
  "github_last_commit_at": "2026-01-14T21:21:39Z",
  "github_readme_excerpt": "git-credential-oauth\n====================\n\n*No more passwords! No more personal access tokens! No more SSH keys!*\n\ngit-credential-oauth is a Git credential helper that securely authenticates to GitHub, GitLab, BitBucket and Gerrit using [OAuth](https://datatracker.ietf.org/wg/oauth/about/).\n\nThe first time you authenticate, the helper opens a browser window to the host.\nSubsequent authentication within storage lifetime is non interactive.\n\n## Motivation\n\nGit assumes users can type a password from memory, but hosts such as GitHub no longer accept passwords without two-factor authentication.\nPersonal access tokens are easy enough to copy and paste but awkward to store securely.\n[git-credential-cache](https://git-scm.com/docs/git-credential-cache) works well for passwords but not personal access tokens because the token is lost when the cache expires.\nAll in all, the usability is so poor that the [most popular advice on StackOverflow](https://stackoverflow.com/a/35942890/284795) is to insecurely save credentials in plaintext!\n\nOAuth has multiple advantages over personal access tokens or SSH:\n\n| Advantage                                  | OAuth | Personal access token | SSH |\n|--------------------------------------------|-------|-----------------------|-----|\n| Clone public repo without setup            | \u2714     | \u2714                     | \ud83d\uddd9   |\n| Authenticate to popular hosts without setup| \u2714     | \ud83d\uddd9                     | \ud83d\uddd9   |\n| Server authenticity verified automatically | \u2714     | \u2714                     | \ud83d\uddd9   |\n| Protections against token theft[^1] | [\u2714](https://www.ietf.org/archive/id/draft-ietf-oauth-security-topics-22.html#name-refresh-token-protection)     | \ud83d\uddd9                     | *only if key has passphrase*   |\n\n[^1]: Scenario: an old disk backup is leaked.\n\n## Features by host\n\n| Host                | Preconfigured | OAuth             | OAuth device flow |\n|---------------------|---------------|-------------------|-------------------|\n| github.com          | \u2714   ",
  "github_repo": "hickford/git-credential-oauth",
  "github_stars": 837,
  "github_topics": [
    "git",
    "git-credential-helper",
    "usable-security"
  ],
  "homepage": "https://github.com/hickford/git-credential-oauth",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 69,
  "installs_365d": 1745,
  "installs_90d": 221,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "Apache-2.0",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "git-credential-oauth",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 4023,
  "rank_365d": 3007,
  "rank_90d": 4018,
  "raw_hash": "9c8a27fbd2e26a72",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/g/git-credential-oauth.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": "HEAD",
  "version_stable": "0.17.2",
  "versioned_formulae": [],
  "why_use_this": null
}