Stale Approvals: Re-Check the Draft Before You Execute It A developer outlined a fingerprinting technique for preventing "stale approvals" in AI workflows, where a human approves an AI-drafted action that becomes invalid before execution. The approach hashes the action together with its context—such as the latest message ID, order status and amount—at approval time, then recomputes the fingerprint before execution and routes the action back to the reviewer if anything has changed. The code also uses the action ID as an idempotency key to avoid duplicate execution. A reviewer approves an AI-drafted refund at 4 pm. The workflow executes it at 4:05. Between those times, the customer wrote "never mind, found it." Who is right? This is the stale approval problem, and it shows up in almost every human-in-the-loop approval step in an AI workflow https://www.nxflowai.com/blog/custom-ai-vs-off-the-shelf-chatbots once volume grows. Approve a specific snapshot, not "the refund for customer X." python import hashlib, json def fingerprint action, context : payload = {"action": action, "last msg id": context "last msg id" , "order status": context "order status" , "amount": action.get "amount" } return hashlib.sha256 json.dumps payload, sort keys=True .encode .hexdigest def request approval store, action, context : fp = fingerprint action, context store.save action id=action "id" , fingerprint=fp, status="pending" return fp python def execute if still valid store, action, load context, run : record = store.get action "id" if record.status = "approved": return "not approved" if fingerprint action, load context action = record.fingerprint: store.update action "id" , status="needs review" return "stale back to reviewer" run action, idempotency key=action "id" store.update action "id" , status="done" return "done" We write about scoping these decisions in our guide to auditing a workflow first.