Work with multiple GitHub accounts using the gh cli.
Important
Official multi-account support was added to the gh cli in v2.40.0. This repository will no longer be maintained, and it is suggested to use the official multi-account implementation. See GitHub's multi-account docs here.
gh extension install gabe565/gh-profileSee the generated usage docs, or see a summary of each subcommand below.
Note As of v2.26.0, the gh cli now uses secure auth tokens by default. Secure auth tokens are not yet supported by gh-profile, so when logging into GitHub, make sure to run:
gh auth login --insecure-storage
-
gh profile create [NAME]: Creates a new profile.Details
Aliases:
c,new,addParams:
NAMEis optional. If not set, command will run interactively.
Example:
$ gh profile create example ✨ Creating profile: example 🔧 Activating global profile: example
-
gh profile switch [NAME] [--local-dir]: Activates a profile.Details
Aliases:
activate,active,sw,sParams:
NAMEis optional. If not set, command will run interactively.- If set to
-, gh-profile will switch back to the previous profile.
- If set to
--local-dir/-lactivates the profile only for the current directory.- For this to work, you must install a per-directory env tool like direnv.
Example:
$ gh profile switch example 🔧 Activating global profile: example
-
gh profile rename [NAME] [NEW_NAME]: Renames a profile.Details
Aliases:
mvParams:
NAMEandNEW_NAMEare optional. If not set, command will run interactively.
Example:
$ gh profile rename example example2 🚚 Renaming profile: example to example2 🔧 Activating global profile: example2
-
gh profile list: Lists all profiles. Active profile will be bold with a green check.Details
Aliases:
ls,lExample:
$ gh profile list ✓ example gabe565
-
gh profile remove [NAME]: Removes a profile.Details
Aliases:
delete,rm,dParams:
NAMEis optional. If not set, command will run interactively.
Example:
$ gh profile remove example2 🔥 Removing profile: example2
-
gh profile show: Prints the active profile name. If no profile is active, nothing will be printed. Useful as a prompt element.Details
Example:
$ gh profile show example
gh profile show is useful for displaying the current profile in your
shell's prompt. This command will work for any prompt, but configuration
with Powerlevel10k is provided
below.
Powerlevel10k ships with a custom formatter for git repositories. This
formatter can be easily modified to show the current profile.
- Edit
~/.p10k.zsh. - Find the
my_git_formatterfunction - Find the line
local res - Add the following below that line:
local profile="$(gh profile show 2>/dev/null)" [[ -n "$profile" ]] && res+="$profile "
Now, the current profile will be shown when you are in a git repo!
| Before | After |
|---|---|
![]() |
![]() |


