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

Repeated expiry is a signal

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.