Delete approval-held workflow runs once their 30-minute window expires, instead of cancelling them. GitHub reports a held run as completed with the conclusion action_required, so the cancel endpoint answered 409. Each sweep failed on the first expired run and left the run held. Deleting the run needs only the actions: write the workflow already has. List every held run before deleting any, because deleting while the listing pages would shift the later pages. GitHub refuses to delete a queued or running run, so a late approval still reaches the existing re-check and is skipped. Update the pull-requests agent skill: an expired run is now deleted, so a new push has to start the checks. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Zoltan Kochan <z@kochan.io>