{
  "slug": "heroku-git-credentials-provides-a-git-credential-helper-for-heroku-git-d07ed94c8136",
  "title": "heroku git:credentials provides a Git credential helper for Heroku Git",
  "tools": [
    "heroku"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-06-17T19:48:52.000Z",
  "announced_at": "2026-06-17T19:48:52.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When Git requests credentials for `git.heroku.com`, run `heroku git:credentials get` to return the stored Heroku token in Git’s expected format. The CLI configures the credential helper during login or Heroku remote setup; then push with `git push heroku main`.",
    "examples": [
      "heroku git:credentials get",
      "git push heroku main",
      "git config --global 'credential.https://git.heroku.com.helper' '!heroku git:credentials'"
    ],
    "gotchas": [
      "Version: v11.6.0",
      "Git credential protocol input: `protocol` (required): Helper reads key/value pairs from standard input; it outputs a credential only for `https`.",
      "Git credential protocol input: `host` (required): Helper outputs a credential only for `git.heroku.com`.",
      "Git credential protocol input: blank line terminator (required): Terminates the key/value input read from standard input.",
      "`credential.https://git.heroku.com.helper`: URL-scoped Git config value; set to `!heroku git:credentials` to invoke the CLI helper.",
      "Prerequisite: Install Git and the Heroku CLI; initialize a local Git repository and commit the application code.",
      "Prerequisite: Log in with `heroku login`; the helper retrieves the token from the system keychain or, if unavailable, `.netrc`.",
      "Prerequisite: Configure a Heroku remote for the app, for example with `heroku git:remote -a <app>`.",
      "The helper validates protocol=https and host=git.heroku.com before outputting credentials.",
      "The source says the CLI silently ignores errors while configuring the helper after successful login."
    ]
  },
  "why_it_matters": "Push repository changes to Heroku Git using an auth token stored in the system keychain.",
  "sources": [
    "https://github.com/heroku/cli/releases/tag/v11.6.0",
    "https://github.com/heroku/cli/pull/3758",
    "https://github.com/heroku/cli/pull/3683",
    "https://github.com/heroku/cli/blob/v11.6.0/src/commands/git/credentials.ts",
    "https://devcenter.heroku.com/articles/git",
    "https://github.com/heroku/cli/issues/3821",
    "https://devcenter.heroku.com/articles/authentication"
  ],
  "rank": 0.91036,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "wave2a-20261017",
    "verdict_id": "wave2a-20261017:wave2a-20261017-1d2756730267d5b5-1:gate",
    "evidence_hash": "56257e8618ea776502897e07dc9c887dc0a698b4b2f3dae9e12020837710723c"
  },
  "review": {
    "draft_hash": "beca87d1210faf32f0b44a759860fbfce814a904ca7f64cda20561077b5ad51f",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-07T00:00:00.000Z",
    "decision": "wave2a-20261017:gate",
    "reason": "2 of 3 judge runs approved with p_yes >= 0.9 (mean 0.91 >= 0.9; 2 needed) and Jev gave 0.64 (>= 0.6 needed)."
  }
}
