F5-rotate — Operator-initiated + scheduled webhook secret rotation #487
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#487
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
As an operator, I want a one-click "rotate" on any watched repo plus an optional scheduled auto-rotation, so that I can switch from a shared-file secret to a per-repo one and keep secrets fresh on a cadence.
Acceptance criteria
POST /watched-repos/{owner}/{name}/rotate-secret: generates a new 32-byte secret, callseditWebhookon the row'sforge_type, updates the row. Updatesupdated_at.Web app shows "Rotate" on every watched-repo row; migrated rows (
webhook_id IS NULL) get a red dot + tooltip ("Migrated row — rotate to take ownership of the webhook").agents.jsonconfig block:Default disabled. When enabled, hourly background tick rotates every row whose
webhook_id IS NOT NULLandupdated_atolder thaninterval_days. Cannot auto-rotate migrated rows (operator does those manually).Auto-rotation log line:
[rotate] forge=<t> repo=<o/n> reason=auto age_days=<n>. Failures retry on next tick.Boot validation:
interval_days >= 7(refuse silly values).Out of scope
References
docs/specs/forge-auth-repo-selection.md§F5-rotate, §10Dependencies