Don’t try to pause mid-execution - use state snapshots at transition points instead. I fixed this by adding explicit save points before each human intervention node. Let the graph finish naturally but mark pending steps as ‘awaiting_approval’ in your state store. When you resume, check the state flags to see which nodes should run vs skip based on what’s already done. Your Redis setup works fine, you’re just missing the execution control logic. Each node needs to check Redis for its completion status before running - if it’s already done in this workflow instance, return the cached result instead of re-executing. This prevents step A from rerunning when you resume at step C because it checks Redis first and finds its previous output. The trick is treating resumption as conditional execution, not actual pause/resume.