Approval
An approval expired before it was used
An approval left unused does not become a standing permission. It expires, and the next request starts again.
- Approvals
- 3 min read
Why expiry exists
Because an approval is a judgement made at a moment, about a state of the site at that moment. An approval granted on Monday and claimed on Friday would execute against a site nobody reviewed.
Both pending requests and approved-but-unclaimed approvals expire automatically, so neither can sit around waiting to be useful to something you did not anticipate.
What you see
- The agent reports the request as refused, with retry guidance.
- The activity record shows the request expired without executing.
- Nothing in WordPress changed.
If it happens on every run
That is a workflow mismatch, not a bug. Something is systematically slower than the review window:
- The agent runs on a schedule and nobody is watching. A nightly job that requires approval will expire every night. Either move it to a time when someone reviews, or reconsider whether the Ability should be on allow.
- Nobody knows a request is waiting. The queue only works if someone opens it.
- The agent does not retry. Approval authorizes a retry; it does not perform one. If the agent gave up after the first 403, it will never claim the approval.
The right answer is usually a permission change
If a request type expires unreviewed over and over, the decision to require approval is not being exercised — it is just blocking work. Either commit to reviewing it, or make the decision properly in the permission matrix.
Approvals
Keep the boundary while you fix the problem.
A good fix restores intended behaviour without creating a second path around WordPress or the governed request lifecycle.
