All tools / Safe
approveHash versus exec
Tell approveHash apart from execTransaction so an approval is not mistaken for execution.
Result
Why it matters
approveHash stores an approval. execTransaction performs the call. Mixing them up is how a queued approval gets treated as already executed.