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.

Set up this job

You approve every report · Free to start

How it runs

One agent does the work. Its department head reviews it, then you approve.

  1. 1Research analyst

    Runs monthly at 08:00 and prepares the report from your connected sources.

  2. 2CTO · Review

    The department head reviews the report before it reaches you.

  3. 3You

    You approve before anything goes out.

What you get

Sample, not live dataSample rotation reminder (Sample, not live data)

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

Start with one report

Set up this job

You approve every report · Free to start