Tofu
CLI · tofu replay

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 stripe

Replay the most recent event for the stripe hook to every enabled target.

tofu replay evt_01HX... --hook stripe

Replay a specific event ID. Useful when reproducing a bug seen earlier in the day.

tofu replay latest --hook stripe --target local

Replay 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.

Terminal
$ 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