Gate an inbound webhook before it mutates state — replay protection, signature checks, and a dossier per delivery.
For: Backend teams whose webhooks trigger money movement or record writes
Blocks a delivery whose signature does not verify against the shared secret.
Blocks a delivery whose timestamp is outside the accepted replay window.
Restrains a delivery whose idempotency key was already processed.
# Webhook Execution Receipt
# Fork: set the replay window and the mutation actions you care about.
apiVersion: decionis.dev/v1
kind: PolicyPack
metadata:
name: sdk-webhook-execution-receipt
surface: sdk
standards: [SOC2-CC6.1, ISO27001-A.8.20]
defaults:
mode: shadow
emit_dossier: true
fail_closed: true
replay_window_seconds: 300
rules:
- name: signature_requirement
when: "always"
decision: |
BLOCK IF delivery.signature_valid == false
ALLOW OTHERWISE
reason_code: webhook_signature_invalid
- name: replay_window
when: "always"
decision: |
BLOCK IF abs(now - delivery.timestamp) > replay_window_seconds
ALLOW OTHERWISE
reason_code: webhook_outside_replay_window
- name: idempotency_restraint
when: "delivery.mutates_state == true"
decision: |
RESTRAIN IF delivery.idempotency_key in processed_keys
ALLOW OTHERWISE
reason_code: duplicate_delivery
Fork it, change the thresholds to match your environment, and deploy in shadow mode first — it defaults to listen-only so nothing in your live pipeline changes.
Follow the install path for this surface, then paste the forked YAML as your policy config.
This recipe is one step in a path. The same five steps apply to every recipe in the exchange.
Run the policy against a realistic action in the browser. Push it past what the rules allow and watch the verdict come back. No account.
See exactly what was decided and why: the rule that fired, the evidence it read, the policy version in force, and an Ed25519 signature you can verify yourself.
Measure what the policy would have caught on your own traffic without touching the live path. Every recipe defaults to shadow, so the first deployment carries no execution risk.
Point the same policy at the system where the action actually originates — a checkout, an ERP posting, a Zap, an agent's tool call.
Publish the proof: a public verification link, an embeddable badge, a PR comment, or an anonymized shadow-mode finding. This is how the next person discovers Decionis.