How to disable osxkeychain as credential helper in git config?
GitGithubGit Problem Overview
I need to disable the credential helper for OS X: git credential-osxkeychain
It is disabled both in the global config file and in the local one, in fact it has never ben enabled. Still, it keeps memorizing my github login details.
I'm on a laptop, so I don't want automatic passwordless access to my repos.
I will use ssh keys. This is a new computer, and the whole system setup is still a work in progress.
For now I used the https
repo refs, and the credential helper keeps kicking in.
These are my conf files:
git config --edit
=>
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = https://github.com/user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "develop"]
remote = origin
merge = refs/heads/develop
[branch "deploy"]
remote = origin
merge = refs/heads/deploy
git config --global --edit
=>
[user]
email = ****************
name = tom
[color]
ui = true
[core]
editor = subl -w
[github]
user = tompave
[merge]
conflictstyle = diff3
[push]
default = simple
Also, running git config --global credential.helper
returns nothing (and that's right).
However, running git config credential.helper
returns osxkeychain
!
How is it possible? I can't see it in the local config file, where is it set?
I tried to set it up locally to see what would happen, and it did appear in the repodir/.git/config
. Then I deleted the entry... but the helper is still here and active.
I can clearly see its entry in OS X keychain.
I can delete it, and then git will ask for the password again... but as soon as I type it (let's say, for a git fetch
), the entry in keychain is restored.
Git Solutions
Solution 1 - Git
To help track down the setting, I'd try to use:
git config --local credential.helper
git config --global credential.helper
git config --system credential.helper
The first one checks the local repo config, the second is your ~/.gitconfig
, and the third is based on where git is installed. Depending on which one comes back showing the credential helper, you can try using the equivalent --unset
option:
git config --local --unset credential.helper
git config --global --unset credential.helper
git config --system --unset credential.helper
The last one may not work if you don't have proper permissions. So you may need to run the last one under sudo
for it to work correctly. FWIW, you may have installed for the pre-built git images for Mac OS X. If you cat /usr/local/git/etc/gitconfig
(or /usr/local/etc/gitconfig
if you installed git via Homebrew or a building locally), you'll see that it does set up the credential helper for you. So the last command above would help fix that problem.
Solution 2 - Git
The other answers were very helpful. The credential.helper didn't show for me in any of the listings (specifying --local, --global, etc) and it always showed on a 'git config -l'. Using the --show-origin command showed that it was coming from an OS X-specific file.
$ git config --show-origin --get credential.helper
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig osxkeychain
Solution 3 - Git
It my case it was easier to run:
git config --get-all --show-origin credential.helper
Which outputs the full list including config file paths:
file:/Library/Developer/CommandLineTools/usr/share/git-core/gitconfig osxkeychain
file:/Users/yourname/.gitconfig !aws codecommit credential-helper $@
Then open the config file:
sudo vim /Library/Developer/CommandLineTools/usr/share/git-core/gitconfig
And comment out the line credential.helper=osxkeychain
Solution 4 - Git
Note: in GitHub, with passwords being deprecated in favour of tokens, this problem may come up again for many users.
In my case (macos 11.5 BigSur) the command line config git config --unset credential.helper
did not help, nor did any variations on the local, global or system levels. The help from GitHub did not solve the issue either.
The solution was:
-
look for the config files using
git config --get-all --show-origin credential.helper
, as mentioned by Kim T above.You'll probably get and output like:
file:/usr/local/git/etc/gitconfig osxkeychain
file:/Users/XYZ/.gitconfig osxkeychain
-
If you're a macos newbie as I am, you might need to navigate to the file location. Just copy each output from the
show-origin
command above, go to Finder and in the Go menu select 'Go to Folder', then paste the file location. -
in each of the config files, comment out osxkeychain, as featured below:
[credential]
helper = osxkeychain
should become
#[credential]
# helper = osxkeychain
You might need to acquire permissions to edit the files. Either usesudo
when editing in the command line or go to "Get Info" on the menu when right-clicking the file in Finder. -
Then push or pull from the repo. You'll be asked for your password again, but should now provide your personal access token instead.
And voilĂ , magic should happen.
Solution 5 - Git
The config itself (git config --unset credential.helper
) isn't enough.
Make sure to kill any git-credential-osxkeychain
process (as described here) as well, or see if the issue persists after a reboot.
Also, when using GitHub for Mac, check if there is a config used internally by this tool.
Remember that git config
alone will check for system, global and local config file.
Note: with git 2.9, you can simply set the credential.helper
to "empty string" in order to disable it: see "How do I disable git's credential helper for a single repository?".