pulumi/pulumi · error

redelivering webhook event: %w

Error message

redelivering webhook event: %w

What it means

Wraps a failure from RedeliverStackWebhookEvent when `pulumi stack webhook delivery redeliver` asks the backend to re-send a specific webhook delivery event. The %w wrap preserves the underlying API error (unknown event ID, webhook gone, auth/network failure) while attributing it to the redelivery operation.

Source

Thrown at pkg/cmd/pulumi/stack/stack_webhook_delivery_redeliver.go:125

		cmdBackend.DefaultLoginManager, stackFlag)
}

func runRedeliver(
	ctx context.Context,
	w io.Writer,
	factory stackWebhookRedeliverClientFactory,
	stackFlag string,
	webhookName, eventID string,
	render redeliverRenderFunc,
) error {
	c, stackID, err := factory(ctx, stackFlag)
	if err != nil {
		return err
	}

	delivery, err := c.RedeliverStackWebhookEvent(ctx, stackID, webhookName, eventID)
	if err != nil {
		return fmt.Errorf("redelivering webhook event: %w", err)
	}

	return render(w, delivery)
}

type redeliverRenderFunc func(w io.Writer, d apitype.WebhookDelivery) error

func renderRedeliverJSON(w io.Writer, d apitype.WebhookDelivery) error {
	enc := json.NewEncoder(w)
	enc.SetEscapeHTML(false)
	enc.SetIndent("", "  ")
	return enc.Encode(d)
}

func renderRedeliverText(w io.Writer, d apitype.WebhookDelivery) error {
	ts := time.Unix(d.Timestamp, 0).UTC().Format(time.RFC3339)

	fmt.Fprintf(w, "ID:                %s\n", d.ID)

View on GitHub (pinned to 793f7b2e16)

Solutions

  1. Get a fresh event ID from `pulumi stack webhook delivery ls`
  2. Confirm the webhook still exists and the correct stack is targeted
  3. Re-authenticate if the wrapped error indicates expired credentials
  4. Retry on transient network/backend errors

Example fix

// before
pulumi stack webhook delivery redeliver deploy-hook 0123  # stale ID
// after
pulumi stack webhook delivery ls deploy-hook   # get current event ID
pulumi stack webhook delivery redeliver deploy-hook <current-event-id>
Defensive patterns

Strategy: try-catch

Validate before calling

pulumi stack webhook delivery ls "$WEBHOOK" --stack "$STACK" | grep -Fq "$EVENT_ID" || { echo "event $EVENT_ID not listed" >&2; exit 1; }

Try / catch

err := run("pulumi", "stack", "webhook", "delivery", "redeliver", webhook, eventID)
if err != nil && strings.Contains(err.Error(), "redelivering webhook event:") {
    // refresh event ID from delivery ls, or retry on transient causes
}

Prevention

When it happens

Trigger: Running `pulumi stack webhook delivery redeliver <webhook> <event-id>` where the backend rejects it: event ID not found (already purged or typo), webhook deleted, or a transient API/auth failure.

Common situations: Replaying an event ID copied from old delivery listings after retention window expiry; redelivering against the wrong stack or org; CI token expired.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31). Data as JSON: /api/errors/566fe22f14294f86. Report an issue: GitHub.