A stale Restic lock should be cleared only after every listed host and process is proven inactive. The repair is a normal stale unlock, not a forced removal of all locks.
When several home servers share one repository, an old-looking lock may belong to a slow remote job, a restarted container, or a process whose clock differs from the operator's machine. Freeze new schedules first, save the lock metadata, check the named host and every maintenance controller, then use the standard cleanup path. If any owner cannot be verified, stop and preserve the lock.
Freeze New Jobs and Identify Every Lock Owner
Disable the timers, cron entries, container schedules, and orchestration jobs that can start Restic on the repository. Save the current lock list and recent service logs. For each lock, record host, process ID, user, timestamp, and whether it is exclusive, then inspect the named process on that exact host.
An exclusive repository check can block other work, and an interrupted check lock can look like an abandoned backup lock until the operation and owner are matched.
If any process is alive or its logs are advancing, wait or stop it cleanly through its service manager. If the host is unreachable, the lock is not proven stale. Continue only when every relevant process is absent, no scheduler can restart it, and the repository is not receiving writes.
Verify the Lock Is Stale From More Than Its Age
Wait through a short observation window and list locks again. A stale candidate has no living owner, no advancing log, no refresh, and no repository write activity. Compare clocks and query the same backend from another trusted client if the repository is remote.
A complete Restic repository workflow treats unlock as one administrative operation among backups, checks, retention, and restores; it is not a substitute for determining who still owns the repository.
If the lock refreshes, if a log moves, or if clients disagree about the backend view, stop. If the lock remains unchanged and its owner is conclusively dead, proceed. Age supports the result but does not create it; a slow live operation can be older than an operator expects.
Use the Standard Stale-Lock Cleanup First
Use Restic's ordinary unlock behavior so it removes stale locks while preserving locks it still judges active. Do not add a remove-all option and do not run the next command without locking. Save the command output and take a fresh lock listing immediately afterward.
The standard unlock command is specifically intended for stale locks, while forced removal is a separate, higher-risk action that should not be part of the normal repair ladder.
If the stale entry disappears and no active lock is removed, proceed to validation. If an active lock remains, respect it and return to the owner check. If a lock reappears immediately, a timer, container, or remote host has started work; disable that source and do not repeat unlock until the new owner is understood.
Validate the Original Backup and the Next Scheduled Run
Run the exact backup that was blocked and capture start, progress, exit status, and lock lifecycle. Confirm that the lock appears while Restic works and disappears after a clean exit. List the new snapshot and restore a small sample to a separate location before re-enabling automation.
If the repository behaves read-only or maintenance remains incomplete, keep the interrupted-prune state separate from stale-lock cleanup.
Re-enable the normal schedule for one cycle. The repair passes when both runs complete, their locks clear normally, and the restored sample matches. Escalate if a stale lock returns after a clean process exit, backend views remain inconsistent, or repository check and restore results disagree. Do not automate forced unlock as the recurrence fix.
Support & Tips
More to Read

How to Schedule Restic Backup, Forget, and Prune Jobs Without Lock Conflicts
A complete multi-host Restic schedule that separates frequent backups, scoped retention, physical prune, checks, retries, and restore validation.

How to Prevent Restic Prune Jobs From Blocking Scheduled Backups
A prevention plan for shared Restic repositories that separates backup windows from prune and keeps locking, retries, and alerts intact.

Why Does a Restic Backup Stall When Another Host Starts Pruning?
A focused diagnosis of Restic prune lock contention, including lock-owner checks, safe recovery, trigger-state retesting, and stop conditions.

