sh.* to your event_types — no new endpoints or secrets required.
Event types
Payload structure
All events share a common envelope. Thedata object varies by event type.
sh.evaluation.block
sh.evaluation.quarantine
sh.canary.triggered
sh.session.escalated
sh.campaign.detected
Signature verification
Every Safe House webhook is signed with HMAC-SHA256, identical to AIP webhooks. The signature header isX-AIP-Signature with value sha256=<hex digest>.
Always verify signatures before acting on a webhook. An unverified webhook can be spoofed.
timestamp is older than 5 minutes to prevent replay attacks.
Registration
Safe House events use the same webhook registration as AIP webhooks. Addsh.* to your event_types:
Retry logic
Webhook delivery follows the same retry policy as AIP webhooks. If your endpoint returns a non-2xx status, Mnemom retries at increasing intervals:
After 4 failed attempts, the delivery is marked
failed in aip_webhook_deliveries. You can redeliver manually:
Integration patterns
Route sh.evaluation.block to on-call
High-confidence blocks warrant immediate human attention. Page your security on-call directly.
Route sh.evaluation.quarantine to human reviewer
Quarantined items need human review before the session can continue. Post to Slack with the review link.
Treat sh.canary.triggered as a security incident
A canary trigger means an attacker has gained access to a credential planted specifically to detect exploitation. Escalate immediately.
Log all Safe House events to your SIEM
Testing your integration
Send a test event to your endpoint without waiting for a real threat:See also
- Webhook Notifications — Full webhook infrastructure documentation
- Safe House Threat Model — What each threat type means and how it’s detected
- Safe House Monitoring — Query evaluation history, metrics, and the security observatory
- Safe House API Reference — Quarantine management and configuration endpoints