tofu replay — re-send stored webhook events
Replay re-sends a stored event from Tofu to your targets with the original body and headers. The provider sees nothing; you get to iterate on a handler without asking Stripe to send another test event.
tofu replay latest --hook stripeReplay the most recent event for the stripe hook to every enabled target.
tofu replay evt_01HX... --hook stripeReplay a specific event ID. Useful when reproducing a bug seen earlier in the day.
tofu replay latest --hook stripe --target localReplay only to one target, even if the hook has several. Iterate against localhost without re-hitting staging.
Signature verification still works
Replay preserves the raw body bytes and the original signing headers. Stripe's Stripe-Signature, GitHub's X-Hub-Signature-256, and similar provider signatures still verify, as long as your handler reads the raw request body.
Replay window
Replay only works while the event's payload is still inside the retention window. After payload expiry the event is still visible but cannot be replayed. See payload retention.
Replay into CI
Use replay with a temporary target inside a CI job to drive real webhook traffic against a preview environment. See CI targets.
$ tofu targets add ci-$GITHUB_RUN_ID "$PREVIEW_WEBHOOK_URL" --hook stripe$ tofu replay latest --hook stripe --target ci-$GITHUB_RUN_ID$ tofu targets delete ci-$GITHUB_RUN_ID --hook stripe