What gh Does
- Repos — create, clone, fork, view, archive
- Pull requests — create, checkout, review, merge
- Issues — create, close, comment, assign, label
- Actions — list runs, view logs, rerun, watch
- Releases — create, upload assets, generate notes
- Gists — create, list, view
- API passthrough —
gh apifor any REST/GraphQL endpoint - Extensions — install community extensions (
gh extension install) - Codespaces — create, list, ssh into Codespaces
- Copilot integration —
gh copilot explain/gh copilot suggest
Architecture
Go CLI that hits the GitHub REST + GraphQL APIs. Auth stored via OAuth device flow in keyring. Commands are composable (--json fields | jq). Extensions add new subcommands by installing binaries or scripts into ~/.local/share/gh/extensions.
Self-Hosting
CLI tool. Authenticates to github.com or your GHES instance.
Key Features
- Full PR workflow
- Issue management
- Actions monitoring and rerun
- Release management
- Gist creation
- GraphQL API passthrough
- Extension system
- Copilot CLI integration
- Cross-platform
- JSON output for scripting
Comparison
| Tool | Platform | Auth | Extensions |
|---|---|---|---|
| gh | GitHub | OAuth | Yes |
| glab | GitLab | Token | Limited |
| hub | GitHub (legacy) | Token | No |
| tea | Gitea | Token | No |
| bitbucket-cli | Bitbucket | Token | No |
FAQ
Q: What's the difference between hub and gh? A: hub is the older third-party CLI; gh is the official GitHub tool (2020+) with more features and a better experience. hub no longer gets new features.
Q: Can it be scripted?
A: Yes. gh pr list --json title,url --jq .[].url outputs JSON; paired with jq, it's easy to script CI tasks.
Q: Can I call the API directly?
A: Yes. gh api /repos/owner/repo/issues hits any REST endpoint; gh api graphql -f query=... runs GraphQL.
Sources & Credits
- Docs: https://cli.github.com/manual
- GitHub: https://github.com/cli/cli
- License: MIT