If your test PR doesn’t merge automatically
Visit Trunk Support for additional assistance or to contact the support team.
- Check the status comments for the PR in the Trunk Dashboard to see what it’s waiting for
- Stuck in “Queued”: Usually means branch protection rules haven’t passed (missing required status checks or code review) or there are merge conflicts. In parallel mode, it can also mean no impacted targets were uploaded for the PR’s head SHA — the PR waits in
Queueduntil they arrive. If the status looks correct but the PR still won’t enter the queue, try removing and re-adding by commenting/trunk mergeagain on the PR. - Fails when attempting to merge: Check that squash merges are enabled for your repository in GitHub settings (
Settings > General > Allow squash merging). Trunk Merge Queue requires squash merges to be enabled. - “Permission denied” errors: Review the Branch Protection guide to make sure
trunk-temp/*andtrunk-merge/*branches aren’t protected by wildcard rules like*/*. - Status checks not running: Verify your CI is configured to run on draft PRs (or
trunk-merge/**branches if using push-triggered mode). See the Branch Protection guide for details.
Common errors and stuck states
"Permission denied on trunk-merge/* branch"
"Permission denied on trunk-merge/* branch"
Cause: Branch protection rules are applying to Trunk’s temporary branches.Solution: Follow the “Exclude Trunk’s Temporary Branches” section above to make sure
trunk-temp/* and trunk-merge/* are not protected.Pull request stuck as "Queued" in the queue
Pull request stuck as "Queued" in the queue
A PR stays in
Queued until it’s eligible to be tested. In parallel mode that means two conditions, either of which can block it.Cause 1: Required status checks are not completing or not configured correctly.- Click on the pull request in the Trunk Dashboard to see which checks it’s waiting for
- Verify those checks are running in your CI provider
- If using Push-triggered mode, make sure the check names in
trunk.yamlexactly match your CI job names
Queued indefinitely. The PR detail page in the Trunk Dashboard shows whether targets are the blocker.- Re-run the CI job that posts impacted targets, or push a commit so it runs against the new head SHA
- As a one-off, post targets directly with
/setImpactedTargets— sendingALLunblocks the PR immediately, though it serializes that PR against the rest of the queue - If this happens to many PRs right after switching to parallel mode, see Cutting over from single to parallel mode
Required status checks not running
Required status checks not running
If using Draft PR mode: Verify your CI workflows are triggered by pull requests (including draft pull requests).If using Push-triggered mode:
- Verify your CI workflows trigger on pushes to
trunk-merge/**branches - Check that the workflows actually ran in your CI provider’s interface
- Make sure the
trunk-iobot has permission to push to create these branches