Last updated:
Key Concepts
AutoMerge scores each pull request against a set of criteria. If the score passes and the repository's configuration allows it, AutoMerge approves the pull request or merges it. Anything else stays with a person. This page defines the terms used across the AutoMerge docs.
Autonomy Levels
Every decision AutoMerge makes is capped by an autonomy level. The levels form one scale, from least to most autonomous:
| Level | What AutoMerge may do |
|---|---|
| Protected | Nothing. The pull request is held for a person and is not scored. |
| Dry run | Score the pull request and comment the result. It never approves or merges. |
| Auto-approve | Post an approving review when the score passes. A person merges. |
| Auto-merge | Approve and merge when the score passes. If CI is still running, AutoMerge arms GitHub's merge when checks pass. |
You set the level in two places: the repository's mode and its path rules.
Modes
The mode is the repository's default level. It can be Off, Dry run, Auto-approve, or Auto-merge. Off applies to the whole repository: AutoMerge evaluates nothing. New repositories start at Off.
Path Rules
A path rule gives the files that match its patterns their own level. Use path rules to protect sensitive areas, such as migrations or infrastructure, or to allow more autonomy in low-risk areas, such as a proof-of-concept directory.
Each rule has:
- Paths: One or more glob patterns. Patterns are case-sensitive and match the whole repository path.
*matches within one path segment, and**matches across segments. - Level: Protected, Dry run, Auto-approve, or Auto-merge.
- Authors (optional): The rule applies only to the named authors. For anyone else, the matched files take the repository mode, or Dry run or Protected if you choose that instead.
Resolved Level
A pull request runs at the least autonomous level of any file it touches. Each file takes the most restrictive rule that matches it, or the repository mode if no rule does. For example, a repository in Auto-merge with a Dry run rule for billing/** runs a pull request that touches one billing file as a dry run.
Dash0 shows the resolved level as Ran as on each pull request.
Triggers
The trigger decides when an evaluation starts:
- Automatic: AutoMerge evaluates each push to an open pull request once its CI checks finish, at most once per commit. Switching to Automatic does not evaluate pull requests that already exist.
- Manual: Nothing is evaluated until someone asks, through the Run evaluation link in the bot's comment or Evaluate now on the pull request in Dash0.
Draft pull requests are never evaluated. New repositories start with Manual.
How a Decision Is Made
Each evaluation runs on one commit, fixed when it starts, and follows the same order:
- Size gate: A pull request that changes 3,000 or more files is held for a person without scoring.
- Protected paths: A pull request that touches a file whose level resolves to Protected is held for a person without scoring. Renamed files are checked under their old path too, so moving a file out of a protected directory is still caught.
- Verified reverts: If Fast-track verified reverts is on and the pull request exactly reverts one that AutoMerge approved, it passes without scoring.
- Scoring: Otherwise, each criterion is scored, and the scores are combined and compared with the threshold.
- Action: If the decision is to approve, the resolved level decides whether AutoMerge only reports it, approves, or approves and merges.
AutoMerge fails closed. If any criterion fails to produce a score, the evaluation fails and nothing is approved. In Auto-approve and Auto-merge, AutoMerge does not approve a commit whose CI is failing, and it drops the approval if a new commit was pushed while it was scoring.
Criteria and Scoring
A criterion is one question an AI evaluator answers about the change. It returns a score from 0 to 100, where higher means safer, and a short rationale. Each criterion has a weight, a prompt, and the evaluator tools it may use. Every repository starts with three criteria:
| Criterion | Default weight | What it judges |
|---|---|---|
| Blast radius | 34% | How far a failure could reach, and how easily the change can be rolled back. |
| Evidence quality | 33% | How strongly tests, passing checks, and reviewer signal show the change is correct. |
| Change footprint | 33% | How routine the change is, from a mechanical edit to new code that other parts of the system depend on. |
Combined Score and Threshold
The combined score is the weighted average of the criterion scores. AutoMerge approves when the combined score reaches the threshold, set as Acts at confidence. The default threshold is 75.
Criterion Floors
A criterion can also have a floor, set as Rejects below. A score below the floor rejects the pull request whatever the combined score is, so strong scores elsewhere cannot make up for it. A score equal to the floor passes.
Deciding Criterion
Dash0 shows the reason for each outcome as its deciding criterion: a criterion name, Protected path, or Verified revert. Use it to find the criterion that holds back the most pull requests.
Verified Reverts
With Fast-track verified reverts on, AutoMerge approves a pull request that exactly reverts one it approved earlier, without scoring it. The revert must restore exactly the files and content the original pull request changed. Anything else is scored as usual. In Auto-merge, the revert is merged too.
What AutoMerge Writes to GitHub
- Comment: One comment per pull request, updated in place, with each criterion's score and rationale. Turn it off with Suppress comments.
- Check: A Darkplane auto-approval check on the evaluated commit. The check is informational and never blocks a merge.
- Review: An approving review, in Auto-approve and Auto-merge.
- Merge: In Auto-merge only.
When a new commit is pushed, AutoMerge dismisses the approvals it gave on older commits. It never overrides a person: if a reviewer dismissed its approval, it does not approve that pull request again.
Agreement With Humans
Dash0 grades each decision against what reviewers did next:
- Correct approval: AutoMerge approved, and reviewers let the change through.
- Incorrect approval: AutoMerge approved, and a reviewer sent the change back.
- Correct hold: AutoMerge held the pull request, and a reviewer sent the change back.
- Unnecessary hold: AutoMerge held the pull request, and reviewers let it through.
A reviewer sends a change back when someone other than the author requests changes, or comments and the author then pushes. A decision nobody responds to counts as agreement. The share of correct decisions is shown as Agreement with humans on the repository's Overview tab.
Trust Boundaries
- The pull request cannot change its own rules: The configuration comes from Dash0, and steering files such as
CLAUDE.mdandAGENTS.mdare read from the base branch. - Pull request text is a signal, not proof: The title, description, and file names come from the author, and the evaluators weigh them accordingly.
- Evaluators only read: Evaluator tools read the repository and the pull request. They never run the code.
- Only admins change the configuration: Changing a repository's mode, rules, or criteria requires the
Adminrole.
Further Reading
- About AutoMerge: What AutoMerge does and how it decides.
- Configure a Repository: Mode, trigger, threshold, criteria, and path rules.
- Evaluator Tools: What each criterion can read while it scores.
- Operate AutoMerge: Review decisions, leave feedback, and change modes.