mrkeyoor.com_
Sat 31 Oct 15:03 UTC
Dev Toolsevaluationupdated 12 Oct 2026

cli review

GitHub CLI lets you manage pull requests, issues, and GitHub workflows from the terminal where your code already lives. It gives repeated GitHub tasks commands you can use interactively or in scripts, while Git keeps handling version control.

+72stars / 7d
Verdict

Our GitHub CLI build passed in 67 seconds, but the test step ended with 307 passes and 3 failures, so everyday adoption is easier to recommend than a claim of a clean contributor setup. Use it for repeated GitHub work with explicit token permissions and a pinned release. Avoid automatic branch cleanup across unrelated checkouts until the open deletion report is resolved for your workflow.

We ran it

Lab card: what happened when we ran cliScreenshot of cli (cli.github.com)
Install✓ · 59s460 packages
Build✓ · 67s
Tests✗ · 381s307 passed · 3 failed of 310 (go test)
Repo1493 files~303,913 lines of source · 24.4 MB · 14 CI workflows · tests dir

Answers from our run

Does cli build from source?

Dependencies installed in 59 seconds (460 packages), and the build succeeded in 67 seconds. We cloned commit ec5b512 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cli's tests pass?

No. The project's own test command finished in 381 seconds and reported 307 passed, 3 failed (go test).

Who should not use cli?

Teams whose repositories live on GitLab: the README supports GitHub services, so GitLab CLI is a closer fit.

What are the alternatives to cli?

GitLab CLI, hub. Our GitHub CLI build passed in 67 seconds, but the test step ended with 307 passes and 3 failures, so everyday adoption is easier to recommend than a claim of a clean contributor setup.

Setup4/5Packaged routes and a successful build; authentication needs care
Docs5/5Platform guides, command manual, and specific operational warnings
Community5/5Recent push plus current issue and PR discussion
Maturity4/5Established interfaces; failed lab suite and open cleanup report

Discussed on

  1. hnGitHub CLI26 points

Who it’s for

Developers who repeatedly open and review GitHub pull requests from local checkouts.
Maintainers who want structured output for GitHub automation and can manage token permissions.
GitHub Enterprise users who can configure the correct host and authentication.

Who it’s NOT for

Teams whose repositories live on GitLab: the README supports GitHub services, so GitLab CLI is a closer fit.
Shared-machine users who require credential-store-only persistence: the documented login fallback writes tokens to plaintext.
Scripts that close remote PRs and delete local branches across unrelated checkouts: open issue 14550 reports same-name branch deletion.
Release automation that assumes every expected branch-protection check appears in CLI status: open issue 6448 reports missing expected checks.

Setup reality

Our sandbox installed commit ec5b512 in 59 seconds with 460 packages, and the build passed in 67 seconds. The Go test step failed after 381 seconds with exit 1: 307 passed and 3 failed out of 310. Its tail shows successful package results followed by FAIL, without identifying the failures.

Useful GitHub operations need authentication and suitable permissions. Browser login uses a credential store but can fall back to plaintext. Headless use accepts environment tokens, and Enterprise hosts need explicit configuration.

The run used golang:1.24-bookworm on Debian with 3 CPUs and 8 GB RAM. Check the source guide for your revision's toolchain. Existing official APT/RPM installations may need the documented September signing-key refresh.

GitHub work belongs beside your checkout

Opening a pull request shouldn't require leaving the branch you're working on. GitHub CLI gives that task its own terminal command, alongside issue management and workflow inspection. The useful distinction is where it stops: gh handles GitHub's service, while Git still handles your commits. For someone who spends the day reviewing changes and checking Actions, that division is easy to learn. You can keep the browser for visual discussion and use the terminal for repeated operations.

The source checkout is substantial: our lab counted 1,493 files, about 303,913 lines of source, and 24.4 MB before installation. Most users should take the packaged binary route documented in the README. Contributing to this tool is a different commitment from using it. Its breadth earns its place when GitHub work repeats throughout your day; occasional repository browsing offers less reason to add another command to your habits.

What happened when we ran it

Our run installed GitHub CLI commit ec5b512 in 59 seconds, adding 460 packages, then built successfully in 67 seconds. We used an unprivileged Debian container on October 11, 2026, with 3 CPUs, 8 GB of RAM, no secrets, and the golang:1.24-bookworm image. Those results establish that the measured source snapshot installed and compiled under the lab's conditions. They don't measure API latency or demonstrate an authenticated pull-request workflow.

The test step failed with exit 1 after 381 seconds: the lab's Go summary recorded 307 passes and 3 failures out of 310. The supplied tail shows successful package results for workflow viewing, command utilities, extensions, and other packages, followed by FAIL. It doesn't name the failing packages or show their assertions. A missing system package, network restriction, or code defect would be a guess. Our scan also found 14 CI workflow files and a tests directory, with no Dockerfile.

Authentication can leave a plaintext token behind

The login implementation documents a browser authentication flow and a system credential store. If that store is unavailable or fails, gh falls back to a plaintext file. That deserves attention on shared development machines and headless containers. gh auth status identifies the stored location. For automation, the official environment guide supports tokens supplied through environment variables, including separate settings for Enterprise hosts.

Because our 381-second suite ran without secrets, it gives no evidence that your chosen token can perform your intended operation. Permissions still matter after a successful compile. Select the host deliberately, check the token's resource access, and start with a read operation before granting a script permission to change repositories. The CLI also supports structured JSON output and filtering, documented in its formatting guide, so automation can consume fields rather than parse terminal tables.

Automatic branch cleanup has a specific open report

Issue 14550 reports that closing a pull request by URL with --delete-branch can force-delete a same-named local branch in an unrelated checkout. The reporter identifies the close command's cleanup path and describes a mocked reproduction against a September trunk build. The issue remained open in the October 12 check. This is a user report about that path, not a failure reproduced by our lab, and it warrants avoiding unattended cleanup across repositories until you establish the behavior you need.

The 307 passing results in our lab summary cannot answer that branch-safety question. A separate open report, issue 6448, concerns required checks that are expected but never run: the reporter says gh pr checks and gh pr status don't display that state. If a release script depends on complete branch-protection visibility, validate that scenario directly. Command convenience doesn't make the CLI's view interchangeable with every rule GitHub applies when merging.

Linux packages need the rotated signing key

The README puts a September 5, 2026 signing-key rotation warning near the top. Its linked announcement applies to official APT and RPM repositories and explains how existing users should refresh their keyrings. Homebrew and release-binary users follow different paths. This is a concrete maintenance chore for old base images: a package update can fail because the image retains an expired key, even while the project itself remains active.

Our 59-second install measured the source route, so it doesn't establish whether an existing APT image has the correct keyring. The current source guide also requests a newer Go toolchain than the label on our lab image suggests; use the instructions for your selected revision rather than treating an image label as a supported-version promise. GitHub-hosted Actions runners include gh, but the README advises explicit installation when a workflow needs a particular release.

Recent maintenance supports adoption with version discipline

GitHub recorded a last push on October 9, 2026, and 1,110 open issues and PRs. Issue and PR updates continued through October 12, so the queue sits alongside recent activity rather than proving neglect. Release v2.102.0, published September 30, documents fixes for symbolic-link download destinations, attestation-policy matching, and skill-search option injection. Use that release history when choosing a version; our sandbox supplied no vulnerability audit for this project.

For ordinary GitHub development, the successful 67-second build and documented command interfaces justify trying gh, while the 3 failed results keep the contributor experience from earning an unqualified pass. Choose GitLab CLI when your forge is GitLab. Keep hub only if its Git-wrapper design is an existing requirement, a distinction GitHub's own comparison explains. Start with read commands, pin the release used by automation, and leave local branch deletion out of scripts that hop between unrelated checkouts.

Alternatives

ProjectWhat it isPick it when
GitLab CLIA terminal client for GitLab projects and merge requests.pick this instead when your repositories and review workflow live on GitLab.
hubA Git wrapper that adds GitHub operations.pick this instead when existing scripts require the Git-wrapper interface described in GitHub’s comparison.

What people are saying

  1. [hackernews] Once: Cache CLI Commands
  2. [producthunt] NOVA CLI v1.0
  3. [github-trending] stripe/stripe-cli
  4. [github-trending] npm/cli
  5. [lobsters] Flatpak from the CLI sucks
  6. [github-trending] urfave/cli

Sources

  1. GitHub CLI README
  2. Authentication and credential fallback
  3. Branch cleanup report
  4. Expected checks report
  5. Linux signing key rotation
  6. Release v2.102.0
  7. GitLab CLI documentation

More dev tools reviews

rufus · linux-insides · cat-catch · date-fns · okhttp · the-craft-of-selfteaching · the whole board →