Skip to content

Secrets expiry

Secrets expiry #1

# Secret-expiry guard (ADR-0045; ADR-0021: SHA-pinned, least-privilege).
# Fails on a schedule once a documented Actions secret enters its rotation
# window or lapses. Credential-free: the job reads only the committed
# .github/secrets-expiry.json record and never touches a secret.
name: Secrets expiry
on:
schedule:
# Daily at 06:41 UTC. A rotation window is measured in weeks, so a daily
# failing run is the notification; nothing here blocks a pull request.
- cron: "41 6 * * *"
workflow_dispatch: {}
permissions: {}
concurrency:
group: secrets-expiry
cancel-in-progress: false
jobs:
org-secrets:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- uses: jdx/mise-action@3c2e0cf82a5b2e5249f0d3635a4d83d0ae861518 # v4.2.5
# Zero-dependency Node script: no `npm ci`, no registry access.
- run: npm run check:secret-expiry