fix(ci): merge Dependabot PRs as a user so CI and releases trigger - #99
Merged
Conversation
Auto-merge worked, but merged with secrets.GITHUB_TOKEN. GitHub deliberately does not trigger workflows from pushes made with GITHUB_TOKEN -- it is the built-in recursion guard -- so every auto-merged dependency bump landed on main with no Test run, no Lint run, and no Release Please run. Two consequences, both silent. main went untested after each bump: #80, #81, #86, #88, #90 and #95 all merged with zero workflow runs against the resulting commits. And `fix(deps)` commits never cut a release, which defeats the whole point of 59d889c -- the prefix was right, but the workflow that acts on it was never invoked. Confirmed via `gh pr view 81 --json mergedBy` -> app/github-actions, and `gh run list --commit <sha>` returning empty for every auto-merged commit. Switch only the merge step to GH_PAT so the merge is attributed to a real user and downstream workflows fire. release-please.yml already uses GH_PAT for this exact reason. The other four steps stay on the scoped, auto-rotating GITHUB_TOKEN: they only read Dependabot metadata and check results, so there is no reason to widen their credentials. Verified current main locally in the meantime, since CI never did: task dev:full passes and govulncheck reports no vulnerabilities.
This was referenced Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Auto-merge was fixed in #73 and genuinely works —
fetch-metadatanow returnsupdate-typecorrectly. But it merges withsecrets.GITHUB_TOKEN, and GitHub does not trigger workflows from pushes made withGITHUB_TOKEN(its recursion guard).Impact — two silent failures
maingoes untested after every dep bump. fix(deps): bump github.com/urfave/cli/v3 from 3.9.1 to 3.10.1 #80, fix(deps): bump github.com/mattn/go-isatty from 0.0.22 to 0.0.24 #81, fix(deps): bump github.com/mattn/go-colorable from 0.1.14 to 0.1.15 #86, fix(deps): bump golang.org/x/sys from 0.46.0 to 0.47.0 #88, fix(deps): bump github.com/aws/aws-sdk-go-v2/service/servicequotas from 1.35.7 to 1.37.1 #90, fix(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.59.0 to 1.66.0 #95 all merged with zero Test/Lint/govulncheck runs against the resulting commits. A bad bump would land silently.fix(deps)commits never cut a release. This defeats ci: make Go module bumps cut a patch release #75/fix(ci): repair invalid dependabot.yml allow block #77 entirely — the prefix is correct, but Release Please is never invoked to act on it. The gap that left thex/textandcrypto/tlsCVEs unreleased is still open.Fix
Switch only the merge step to
GH_PAT, so the merge is attributed to a real user and downstream workflows fire.release-please.yml:23already usesGH_PATfor precisely this reason.The other four steps stay on the scoped, auto-rotating
GITHUB_TOKEN— they only read Dependabot metadata and check results, so there's no reason to widen their credentials. This keeps the long-lived PAT's blast radius to a single step.Trade-off
A PAT is long-lived and broadly scoped versus
GITHUB_TOKEN's auto-rotation. The alternative is dropping auto-merge and reviewing dep PRs by hand. Given auto-merge is already gated on Test and Lint passing, and restricted to patch/minor viafetch-metadata, the PAT is scoped to the narrowest possible step here.Verification
Since CI never ran on those merged bumps, I validated current
mainlocally:mainis healthy — the missing runs hadn't masked a real break.The real proof is the next Dependabot auto-merge: Test, Lint, and Release Please should all run on the resulting
maincommit, and a0.9.2release PR should appear on its own.