Skip to content

Close the pinning loopholes: gate github_actions auto-merge, declare app secrets, pin internal action refs - #18

Merged
george-elphick-talieisin merged 1 commit into
mainfrom
fix/close-pinning-loopholes
Aug 22, 2026
Merged

george-elphick-talieisin merged 1 commit into
mainfrom
fix/close-pinning-loopholes

Conversation

@george-elphick-talieisin

Copy link
Copy Markdown
Contributor

Summary

  • Dependabot PRs in the github_actions ecosystem never auto-merge and never enter the AI upgrade queue — a human reviews every workflow/action bump, which is what makes consumer SHA-pinning of the org workflows meaningful (raised by caersid's Codex review during its pin-adoption, issue caersid#290).
  • TALIEISIN_TRIGGER_APP_ID / TALIEISIN_TRIGGER_APP_PRIVATE_KEY declared as optional workflow_call secrets on auto-merge.yml, so callers can pass them by name instead of secrets: inherit (inherit callers unchanged; absent-secret fallback path unchanged).
  • The three internal validated-push@main self-references pinned to fea67b6 — they resolved @main at run time underneath consumers' pinned workflow SHAs.

Test plan

  • package-ecosystem output value verified against fetch-metadata source at the pinned SHA (chunks[1] of dependabot/github_actions/* branch names)
  • YAML validated locally (all three files)
  • Next org-workflow Dependabot bump in any consumer lands as a review-required PR with the explanatory comment (observable on its next natural occurrence)

https://claude.ai/code/session_012EuXdzh4NJzL5mxmsqRDzR

1. Auto-merge admission gate: github_actions-ecosystem Dependabot PRs never
   auto-approve and never enter the AI upgrade queue — SHA-pin bumps of the
   org workflows now always get a human, which is what makes consumer
   pinning meaningful. Ecosystem string verified against fetch-metadata
   source (parsed from the dependabot/github_actions/* branch name).
2. TALIEISIN_TRIGGER_APP_ID/_PRIVATE_KEY declared (required:false) in
   auto-merge.yml workflow_call.secrets so callers can pass them by name
   instead of secrets:inherit; inherit callers unchanged.
3. Internal validated-push@main self-references (dependabot-upgrade x2,
   copilot-response x1) pinned to fea67b6 — the outer pin was mutable
   underneath while these resolved @main at run time. This repo's own
   dependabot bumps them (and after item 1, those bumps get reviewed).

Claude-Session: https://claude.ai/code/session_012EuXdzh4NJzL5mxmsqRDzR
Copilot AI lite review requested due to automatic review settings August 22, 2026 13:03
@george-elphick-talieisin
george-elphick-talieisin merged commit a43a143 into main Aug 22, 2026
1 check passed
@george-elphick-talieisin
george-elphick-talieisin deleted the fix/close-pinning-loopholes branch August 22, 2026 13:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens the org’s Dependabot automation for GitHub Actions by preventing unreviewed workflow/action bumps from auto-merging, making reusable-workflow SHA pinning meaningful, and removing @main resolution in internal action calls.

Changes:

  • Gate Dependabot auto-merge (and the AI major-upgrade queue) for GitHub Actions ecosystem updates.
  • Declare optional trigger-app secrets in auto-merge.yml so callers can pass them explicitly by name.
  • Pin internal validated-push action references to a specific commit SHA instead of @main.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/dependabot-upgrade.yml Pins internal validated-push action to a commit SHA to avoid runtime @main resolution.
.github/workflows/copilot-response.yml Pins internal validated-push action to a commit SHA for deterministic behavior under pinned workflows.
.github/workflows/auto-merge.yml Adds workflow_call secret declarations and gates auto-merge/AI-queue paths for GitHub Actions ecosystem bumps.
Suppressed comments (4)

.github/workflows/auto-merge.yml:75

  • Same ecosystem string mismatch here: if package-ecosystem is github-actions, this condition won’t fire and the explanatory comment won’t be posted.
        if: >-
          steps.meta.outputs.package-ecosystem == 'github_actions' &&
          (github.event.action == 'opened' || github.event.action == 'reopened')

.github/workflows/auto-merge.yml:99

  • Same package-ecosystem value mismatch (github_actions vs github-actions) — this may incorrectly queue GitHub Actions bumps into the AI upgrade pipeline.
        if: steps.meta.outputs.update-type == 'version-update:semver-major' && steps.meta.outputs.package-ecosystem != 'github_actions' && steps.trigger-token.outcome == 'success'

.github/workflows/auto-merge.yml:122

  • Same ecosystem string mismatch here; fallback comment may be posted for GitHub Actions bumps if the output is github-actions.
        if: steps.meta.outputs.update-type == 'version-update:semver-major' && steps.meta.outputs.package-ecosystem != 'github_actions' && (github.event.action == 'opened' || github.event.action == 'reopened') && steps.trigger-token.outcome != 'success'

.github/workflows/auto-merge.yml:91

  • This check uses github_actions, but elsewhere in the repo the ecosystem is referenced as github-actions. If the metadata output is github-actions, this step will still run for workflow/action bumps.
        if: steps.meta.outputs.update-type == 'version-update:semver-major' && steps.meta.outputs.package-ecosystem != 'github_actions' && (github.event.action == 'opened' || github.event.action == 'reopened')

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +63 to +65
if: >-
steps.meta.outputs.update-type != 'version-update:semver-major' &&
steps.meta.outputs.package-ecosystem != 'github_actions'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants