The two webhooks
Custom header values on the generic webhook are treated as secrets. Quint does not show them back to you.
Verify a signed alert delivery
Each alert webhook delivery carries three headers you can check:
To verify in plain words:
- Read the request body as raw bytes. Do not parse and re-serialise it first; any change to the bytes changes the signature.
- Compute HMAC-SHA256 over those bytes with the key Quint showed you when the destination was created or rotated.
- Encode the result as lowercase hex and prefix it with
sha256=. - Compare it with
X-Quint-Signatureusing a constant-time comparison. Reject the delivery if they differ. - If you also want to reject replays, reject a delivery whose
X-Quint-Timestampis older than you are willing to accept.
X-Quint-Signature with the old key or against X-Quint-Signature-Next with the new key. Either one is enough. Each header carries exactly one value; Quint never joins two signatures into one header.
Alert delivery body
An alert delivery is one JSON object with these fields. Fields marked optional are omitted when empty.
Approval request deliveries to an alert webhook use a different body. Field reference: ask your Quint contact.
Tool supply-chain findings
An alert for a tool supply-chain finding has one of these subtypes:mcp_tool_redefined (MCP tool redefined), mcp_tool_description_injection (Tool description injection), agent_builtin_tool_drift (Built-in tool changed) or, with an upcoming agent release, mcp_tool_cross_reference (Tool cross-reference). The alert carries tool_name and a one-line message; it carries no labels. The message for a cross-reference names both tools and both servers, unless content suppression is on.
With that release, a description flagged the first time Quint saw the tool raises an alert whose message says the tool was first advertised with a description flagged for review. A cross-reference is low severity.
Exported event fields
Every batch exporter, including the generic webhook, sends events in this shape. The generic webhook sends a JSON array of these objects. Splunk receives each one wrapped in the HTTP Event Collector envelope (event, time, index, sourcetype, source). Fields marked optional are omitted when empty.
For a tool supply-chain finding,
labels holds divergence_type (which finding it is), finding_family = supply_chain and server_id (redacted when content suppression is on). With an upcoming agent release labels also holds:
Admin audit record fields
The second stream every enabled batch exporter receives is the admin audit log: who changed what in the workspace. Token mints, role changes, enforcement changes and sign-ins are recorded here. The generic webhook sends these as a JSON array with the headerX-Quint-Stream: admin_audit.
Rotate key and Replace URL
- Rotate key (alert webhook) creates a new signing key and shows it once. Deliveries carry both signatures for 72 hours, as described above. Store the new key and switch your receiver within that window; the old key then lapses on its own.
- Replace URL (alert webhook) changes the receiver base URL. Click Send test afterwards and confirm the new receiver verifies the signature.
- Edit (generic webhook) changes the endpoint URL or custom headers.