← Log
2026-05-10Thinking

Workflows that disable themselves: GitHub Actions 60-day inactivity trap

DevOpsCI/CD3 min read

Five of our repos had cron workflows that were supposed to run daily. They weren't. But not because of code failures — because GitHub silently disabled them after 60 days without a repository commit.

GitHub Actions auto-disables scheduled workflows in repositories that haven't received a push in 60 days. The workflow simply stops triggering. No notification. No alert. The state is called disabled_inactivity, and the only way to find it is to explicitly query gh workflow list and look for it.

Here's the insidious part: some workflows still showed recent run history even while disabled, because external triggers (workflow_dispatch) still worked. A workflow that appears to have runs can actually have a dead cron trigger, and you'd never know until the data stops arriving.

The fix is a monthly keep-alive workflow: a single YAML file on a 25-day cron that does an empty commit with [skip ci] in the message. This resets the 60-day counter without triggering any downstream builds.

We rolled this out to every repo with a schedule trigger. But the deeper lesson is: a disabled workflow produces zero run history. It's not a failing workflow — it's an invisible one. Monitoring must distinguish between "ran and failed" and "never ran at all."

Build something they'll remember.

YS.yogeshsahu.xyz