name: Close inactive PRs on: schedule: # Run daily. GitHub cron schedules use UTC. - cron: "30 1 * * *" workflow_dispatch: inputs: debug_only: description: "Dry run: log intended actions without changing PRs" required: false default: false type: boolean permissions: issues: write pull-requests: write concurrency: group: ${{ github.workflow }} cancel-in-progress: false jobs: stale-prs: runs-on: ubuntu-latest steps: - name: Mark and close inactive PRs uses: actions/stale@v10 with: days-before-issue-stale: -1 days-before-issue-close: -1 days-before-pr-stale: 365 days-before-pr-close: 7 stale-pr-label: pr:inactive close-pr-label: pr:auto-closed exempt-pr-labels: pr:keep-open stale-pr-message: > This PR has been inactive for 365 days. If there is no new activity within 7 days, it will be closed automatically. Comment, push new commits, or remove the pr:inactive label to keep it open. Add pr:keep-open to exempt it from future inactive PR cleanup. close-pr-message: > Closing this PR because it has had no activity for 7 days after being marked inactive. If this is still useful or ready to move forward, feel free to reopen it with fresh context or updated details. Sorry for any inconvenience. remove-pr-stale-when-updated: true delete-branch: false operations-per-run: 100 debug-only: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_only || false }}