Mergify CLI
Drive Mergify from your terminal and CI pipelines:
stacked pull requests, the merge queue, CI Insights, scheduled freezes, and
configuration — all from a single self-contained binary that reuses your
existing GitHub (gh) login.
mergify stack push # turn your local commits into stacked PRs
mergify queue status # inspect the merge queue
mergify ci junit-process report.xml # upload test results to CI Insights
- One static binary. No runtime, no dependencies — drop it on a developer laptop or a CI runner and go.
- One command to sign in.
mergify auth loginapproves the CLI in your browser and keeps the credential in your OS keychain;MERGIFY_TOKENor--tokenfor scripting. - Built for pipelines. Logs to stderr, structured
--jsonoutput on read commands, and stable exit codes for scripts and runbooks. - Cross-platform. Linux, macOS (x86_64 + aarch64), and Windows.
Installation
Homebrew (recommended for macOS)
brew install mergifyio/tap/mergify-cli
The fully-qualified name taps and installs in one step. Upgrade with
brew upgrade mergify-cli — not mergify self-update, which overwrites the
Homebrew-managed binary. See the tap
for tap-trust and short-name details.
Install script (recommended for Linux; also macOS — x86_64 and aarch64)
curl -fsSL https://raw.githubusercontent.com/Mergifyio/mergify-cli/main/install.sh | sh
Installs to ~/.local/bin/mergify. Override with MERGIFY_INSTALL_DIR=/usr/local/bin
or pin a version with MERGIFY_VERSION=<version>. Upgrade with mergify self-update.
Manual download (Windows, or to bypass the script)
Grab the matching archive from the latest release:
- Windows — download
mergify-<version>-x86_64-pc-windows-msvc.zip, extract it, and putmergify.exeanywhere on yourPATH. - Linux / macOS — download
mergify-<version>-<target>.tar.gz(e.g.mergify-2026.4.23.1-aarch64-apple-darwin.tar.gz), extract withtar -xzf, and put the resultingmergifybinary anywhere on yourPATH.
Verify against SHA256SUMS from the same release if you care.
Authentication
Sign in once:
mergify auth login
It opens the approval page in your browser, and prints the URL and the code
as well: pass --no-browser, or run it where there is no browser to open,
and the printed pair is all you need. Once you approve, the
credential lands in your OS keychain — or, on a machine with none (a
container, an unattended agent, a headless box with no D-Bus session), in a
restricted file under your configuration directory. mergify auth status says
which account you are signed in as, and mergify auth logout asks the Mergify
API to revoke the credential rather than only deleting the local copy.
The commands that talk to the Mergify API resolve a credential in this order:
| # | Credential | |
|---|---|---|
| 1 | --token / -t |
|
| 2 | MERGIFY_TOKEN |
|
| 3 | the credential stored by mergify auth login |
keyed by API URL |
| 4 | GITHUB_TOKEN |
deprecated |
| 5 | gh auth token |
deprecated |
A GitHub token still authenticates against the Mergify API and prints a
deprecation warning once per run. It will stop working in a future release;
run mergify auth login instead. In CI, set MERGIFY_TOKEN — nothing about
that changes.
mergify ci skips step 3. Those endpoints require an organization
application key, which is what MERGIFY_TOKEN holds in a CI job; the
per-user credential mergify auth login mints is refused there by design.
mergify stack also calls the GitHub API directly, and resolves that
token separately (--token, MERGIFY_TOKEN, GITHUB_TOKEN, gh auth token). It is unaffected by the deprecation above: stack needs a GitHub
credential and Mergify never issues one. A Mergify-issued token (mut_…) is
skipped there rather than sent to GitHub, which would only answer 401 Bad credentials — in MERGIFY_TOKEN, in GITHUB_TOKEN, and in what gh auth token returns, since it echoes GITHUB_TOKEN when that is set. Only an
explicit --token is sent as given.
The repository and API URL resolve as before:
| What | --flag |
then env | then |
|---|---|---|---|
| Repository | --repository / -r |
GITHUB_REPOSITORY |
git remote (origin) |
| API URL | --api-url / -u |
MERGIFY_API_URL |
https://api.mergify.com |
Credentials are stored per API URL, so one machine can hold a credential for the hosted service and one for an on-premise install.
Mergify application keys come in two classes, and a few commands will not
accept the narrower one. A ci key is scoped to what a CI job does — trace
upload, ci scopes-send, quarantine evaluation and the quarantine list.
Reading test health (mergify tests show) and changing the quarantine
(mergify tests quarantines add / remove) need an admin key or a user
credential — the one mergify auth login stores, or a GitHub PAT — and
answer a ci key with 403 Forbidden. Note that GITHUB_TOKEN inside
GitHub Actions is the ephemeral installation token, not a PAT, and does not
reach the Mergify API.
See the authentication guide for details.
Quick start
# Stacked pull requests — one PR per commit, kept in sync
mergify stack setup # once per repo: install the git hooks the stack needs
mergify stack push # push commits and create/update their PRs
mergify stack list # show the stack and its PR status
mergify stack sync # rebase the stack onto its trunk
# Merge queue
mergify queue status # current queue state for the repo
mergify queue status --json # same, as machine-readable JSON
# CI Insights — from inside your pipeline
mergify ci junit-process report.xml --test-language python
# Configuration
mergify config validate # check .mergify.yml against the schema
Run mergify --help for the full command list and mergify <command> --help
for any command's flags.
Commands
Every command group maps to a section of the CLI reference.
mergify auth— Sign in to Mergify and manage the stored credential (login,logout,status).mergify stack— Create and maintain stacked pull requests. Docsmergify queue— Inspect and control the merge queue. Docsmergify events— Browse the events Mergify recorded for the repository or one pull request, as a timeline or JSON.mergify ci— Send JUnit results and pull request scopes from any CI provider. Docsmergify tests— Look up test health and manage the flaky-test quarantine. Docsmergify freeze— Schedule merge freezes for release windows and maintenance. Docsmergify config— Validate your configuration and simulate actions before you merge. Docsmergify self-update— Update the CLI to the latest release.mergify completions <shell>— Print a shell completion script (see below).
Run mergify <command> --help for a group's subcommands and flags.
Shell completions
Generate a completion script for your shell — bash, zsh, fish,
elvish, or powershell:
# zsh — write to a directory on your $fpath
mergify completions zsh > ~/.zfunc/_mergify
# bash — load in your current session (add to ~/.bashrc to persist)
source <(mergify completions bash)
# fish
mergify completions fish > ~/.config/fish/completions/mergify.fish
Global options
These are accepted on every command:
| Flag | Description |
|---|---|
-v, --verbose |
Increase log verbosity: -v info, -vv debug, -vvv trace. Logs go to stderr so stdout stays pipeable. |
--debug |
Shorthand for at least debug-level logging (like -vv). |
--color <auto|always|never> |
When to colorize terminal output. |
Environment variables
| Variable | Effect |
|---|---|
MERGIFY_TOKEN |
API token. Takes precedence over a stored mergify auth login credential. |
GITHUB_TOKEN |
Deprecated as a Mergify API credential (falls back to gh auth token); still the GitHub token mergify stack uses. |
GITHUB_REPOSITORY |
Default owner/repo when --repository is omitted. |
MERGIFY_API_URL |
API base URL (default https://api.mergify.com). |
RUST_LOG |
Fine-grained log filtering; overrides --verbose. |
NO_COLOR |
Disable colored output. |
MERGIFY_INSTALL_DIR, MERGIFY_VERSION |
Install-script target directory / pinned version. |
Exit codes
Commands return stable exit codes so scripts and runbooks can branch on them:
| Code | Meaning |
|---|---|
0 |
Success. |
1 |
Unclassified runtime failure (I/O error, bug, or captured panic). |
2 |
Argument parsing / usage error. |
3 |
Stack, branch, or commit not found. |
4 |
Rebase or merge conflict. |
5 |
GitHub API request failed. |
6 |
Mergify API request failed. |
7 |
CLI invariant violated (e.g. run outside a valid context). |
8 |
Configuration or credentials missing, unparseable, or failing validation (including "not logged in"). |
AI Agent Skills
Mergify CLI provides AI skills for managing stacked PRs and Git workflows, compatible with Claude Code, Cursor, and many other AI agents.
Install via npx (all agents):
npx skills add Mergifyio/mergify-cli
Install as a Claude Code plugin:
/plugin install mergify@claude-plugins-official
Documentation
Full reference and guides live at docs.mergify.com/cli.
Contributing
Contributions are welcome — open an issue or a pull request. The workspace is a Rust monorepo; see AGENTS.md for the crate layout, build, and test workflow.
License
Apache License 2.0 — see LICENSE.
Metadata
Release files for mergify-cli 2026.9.16.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mergify_cli-2026.9.16.1.tar.gz | 582.2 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mergify_cli-2026.9.16.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| mergify_cli-2026.9.16.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| mergify_cli-2026.9.16.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 32.1 MB
Release files / mergify_cli-2026.9.16.1.tar.gz
| Download URL | mergify_cli-2026.9.16.1.tar.gz |
|---|---|
| Size | 582.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a64b5f68dd369e28d73b4547160a6d5785a517d4557d5281806ea47b85f77af
|
|
BLAKE2b-256 checksum How to use checksums |
f16a29eb484df1cba7007807cbaaee8830075909ea0ef3b1d2ab53e7c6a4fc1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / mergify_cli-2026.9.16.1-py3-none-win_amd64.whl
| Download URL | mergify_cli-2026.9.16.1-py3-none-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b64707455bfdba93361af1baed2980e3622407cefea7889e3e0d904b207daadf
|
|
BLAKE2b-256 checksum How to use checksums |
0fe31e80cd0a89f3279a7bc5057b4ed9b5056f9fe369c3bfefb08339c2d3be53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 7.1 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
7a6799b28dd1c170e7b5776dfcc17e68a415419cee2176b2b0e52be2ef4fd119
|
|
BLAKE2b-256 checksum How to use checksums |
7d3cc4ea006efc5a7fa01b27f5284c8eb7d860b7043e82e32ce4f1264294915b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | mergify_cli-2026.9.16.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
9bac872bb25b2051499a40744f7876dfc1eaf74754349055fa611aced6a88dd9
|
|
BLAKE2b-256 checksum How to use checksums |
1e2033ee27c057c72bc4789be9d56c73401f42c8cea75f3f2addc1d3d63aacd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / mergify_cli-2026.9.16.1-py3-none-macosx_11_0_arm64.whl
| Download URL | mergify_cli-2026.9.16.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.6 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7b5cd4ed441c2a4d3dba2be38b7fe487f7c0382af516ea3799d16ecd1eefd48d
|
|
BLAKE2b-256 checksum How to use checksums |
8388e5856cf081ff4859b51be5be53bc12e0dcfb1c90d6b48c41f30cf93a3998
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / mergify_cli-2026.9.16.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | mergify_cli-2026.9.16.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
fdfbd7b43eafa6d3af2d68dd774940f58df3363dc6068b78587286497d6c6502
|
|
BLAKE2b-256 checksum How to use checksums |
3412ee34b859609cfb358bbb39c5a2d978669c0f4fc9a26f1e569cce9667c97d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency log