Skip to content
Latchkey

How to Close Stale Issues Automatically in GitHub Actions

A backlog full of abandoned issues hides the live ones; a scheduled stale sweep warns then closes the dead weight.

Run actions/stale on a cron schedule with day thresholds for marking and closing, plus exempt labels for items you never want auto-closed.

Steps

  • Add a schedule trigger (e.g. daily).
  • Configure days-before-stale and days-before-close.
  • Set warning messages for issues and PRs.
  • Exempt important items with exempt-issue-labels.

Workflow

.github/workflows/stale.yml
name: Stale
on:
  schedule:
    - cron: '0 1 * * *'
permissions:
  issues: write
  pull-requests: write
jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v9
        with:
          days-before-stale: 60
          days-before-close: 14
          stale-issue-message: 'No activity in 60 days; closing in 14 if nothing changes.'
          exempt-issue-labels: 'pinned,security'

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →