Automate monthly API key and secret rotation reminders
Long-lived keys outlast the people who made them. A scheduled agent reads a key inventory of names and dates each month, lists keys past your rotation limit with their owners, and drafts a reminder its department head reviews and you approve.
What you’ll set up
Connections
Works from files you share
Inputs
Rotation limit (days) · Required
Number, default 90
Warn this many days ahead · Optional
Number, default 30
Where to send the reminder · Optional
Text, no default
Keys exempt from rotation · Optional
Text, no default
Brief · Required
Text, prefilled and editable during setup.
Runs
Runs monthly at 08:00
Done by Research analyst
You approve before anything goes out.
You approve every report · Free to start
How it runs
One agent does the work. Its department head reviews it, then you approve.
- 1Research analyst
Runs monthly at 08:00 and prepares the report from your connected sources.
- 2CTO · Review
The department head reviews the report before it reaches you.
- 3You
You approve before anything goes out.
What you get
Sample, not live data. Key names, owners and dates are invented.
Key rotation, 1 Nov (sample)
Past the 90-day limit:
- mail-service-prod, owner Dana, 142 days
- deploy-token-ci, owner Sam, 101 days
Due within 30 days: storage-readonly-key, owner Dana, 74 days.
No owner listed: legacy-webhook-key.
Needs your approval before it is sent.
Why keys age unnoticed
AWS describes access keys as long-term credentials and recommends short-lived alternatives where you can. In practice a team still holds some keys: a payment provider, a mail service, a deploy token. They get created once, pasted into a config, and forgotten. A key will not remind you of its own age. Without a date on a calendar, the key lives until it leaks or the person who created it leaves.
What goes into the inventory
You keep a simple sheet with one row per key, shared as an upload. Example columns:
| Key name | System | Owner | Last rotated | Limit (days) | |---|---|---|---|---| | mail-service-prod | Mail | Dana | 2026-06-01 | 90 |
It holds names and dates. Never put secret values, key IDs or tokens in it; the agent stops and reports if a row looks like one. For AWS users, each key's metadata includes a creation date and a last-used lookup is available, so the sheet can be filled from there.
How the scheduled job works
On the 1st of each month a scheduled agent reads the sheet and works out the age of every key from its created or rotated date. It lists keys past their limit, keys that will pass it in the next 30 days, and keys with no owner. It orders each list by age and names the owner to ask. It reads and reports. It does not create, rotate, disable or delete any key, and it has no access to your systems.
Review and approval
Before the reminder reaches you, the department head agent checks it: are the ages computed from the right date, is any key listed in two groups, and does any row look as if it contains a secret. Then you approve, edit or skip the reminder, and nothing is sent until you do. After you rotate a key, update its date in the sheet so it drops off the list next month.
Questions
Related jobs
Connects to: GitHub repository (read Actions) (required)
Automate a daily CI failure digest from GitHub Actions
One daily digest of yesterday's failed Actions runs, grouped by workflow and failing step.
Connects to: AWS IAM access key (read-only cost access) (required)
Automate a weekly AWS cost report with anomaly flags
A weekly AWS spend report: totals, biggest movers by service, and anything that looks like an anomaly.
Connects to: GitHub repository (required)
Automate weekly release notes from merged pull requests
A weekly changelog drafted from merged pull requests, grouped by what customers notice.
- AWS IAM User Guide: Manage access keys for IAM users (long-term credentials, temporary alternatives recommended)
- AWS IAM User Guide: Update access keys (create a second key, then deactivate and delete the old one)
- AWS IAM API Reference: AccessKeyLastUsed (last-used date tracking)
- AWS IAM API Reference: AccessKeyMetadata (CreateDate per key)