-
Notifications
You must be signed in to change notification settings - Fork 130
Open
Labels
troubleshootingPermissions issues, unique scenarios, etc. May indicate a bug upon further inspection.Permissions issues, unique scenarios, etc. May indicate a bug upon further inspection.
Description
- 🆗 I have searched through the current issues and did not find any that were related.
The manual-approval action failed to block dependent jobs after the 6-hour timeout expired. Specifically, on June 27, 2025, the approval step timed out (as expected), but jobs that depended on it were still executed — even though no manual approval had been provided.
Interestingly, on June 30, 2025, we triggered another workflow run using the exact same configuration, and this time the behavior was correct: the approval step timed out and downstream jobs were not executed. This indicates non-deterministic behavior, possibly due to a race condition or inconsistent job state propagation within GitHub Actions.
To Reproduce:
- Use trstringer/manual-approval@v1 in a workflow with minimum-approvals: 1.
- Add downstream jobs that depend on the manual-approval job using needs: [approve].
- In the downstream jobs, use a conditional like if: ${{ always() && !failure() && !cancelled() }}.
- Trigger the workflow but do not approve it.
- Wait for the 6-hour timeout to expire.
- Observe whether the downstream jobs run or not — in our case, they did run on 27.06, but did not run on 30.06, despite no changes to the workflow.
Expected behavior
- When the approval step times out:
- The approve job should fail.
- All jobs that depend on it should not run, unless explicitly configured to bypass approval logic.
jobs:
approve:
runs-on: ubuntu-latest
steps:
- uses: trstringer/manual-approval@v1
with:
secret: ${{ github.TOKEN }}
approvers: someone
minimum-approvals: 1
follow-up-job:
needs: approve
runs-on: ubuntu-latest
if: ${{ always() && !failure() && !cancelled() }}
steps:
- run: echo "Running follow-up task"
Additional context
- The issue appears to be intermittent. Our June 27 run demonstrated the failure scenario; our June 30 run behaved correctly.
- The job was not approved in either case.
- We suspect either a timing/race condition or an inconsistency in how GitHub Actions handles needs: relationships when a job times out due to manual-approval.
Metadata
Metadata
Assignees
Labels
troubleshootingPermissions issues, unique scenarios, etc. May indicate a bug upon further inspection.Permissions issues, unique scenarios, etc. May indicate a bug upon further inspection.