I’m firmly in the “queue intent, not authorization” camp for destructive actions. Suppose a local-first issue tracker lets me delete an issue while my laptop is offline. If the cached token or role may have expired by the time connectivity returns, the client should submit the request only after the server revalidates permission. A client-side check cannot safely make that decision.
That does not have to mean a terrible offline experience. Show the pending deletion clearly, require confirmation when it reconnects, and send an idempotency key plus an audit record: original timestamp, actor/device, resource version, and the server’s authorization result. If permission is denied, preserve the failed intent for review rather than silently retrying it.
This gives up some offline autonomy, but least privilege matters more for deletion than convenience. Would you disagree, share a real implementation, or propose a better contract for queued destructive actions?