--- type: howto title: Rotating Forgejo Runner Tokens summary: Steps to rotate a Forgejo Actions runner registration token without losing queued jobs. tags: - type/howto - tool/forgejo scope: global last_updated: 2026-06-22 date: 2026-06-22 update_note: experience-driven --- Forgejo Actions runners register with a token scoped to an org or repo. Rotating it periodically (or after a suspected leak) is a manual process — there's no auto-rotation. ## Steps 1. On the Forgejo web UI, go to the org (or repo) Settings → Actions → Runners. 2. Generate a new registration token; copy it immediately (it's shown once). 3. On the runner host, stop the running `act_runner` service before touching config: `systemctl stop act_runner`. 4. Edit `.runner` in the runner's data directory (or re-run `act_runner register` interactively) and replace the token value. 5. Restart the service: `systemctl start act_runner`. 6. Confirm the runner reappears as "Online" in the Runners settings page within ~30s. ## Gotchas - Rotating the token does **not** cancel jobs already queued against the old runner identity — they'll pick up once the runner reconnects with the new token, as long as you don't also delete the runner record. - If you delete the old runner record instead of just rotating its token, any in-flight job assigned to it is orphaned and needs to be manually re-triggered. - Multiple runners sharing one token (a pool) all need re-registering — there's no bulk rotation across a pool.