Skip to main content

Documentation Index

Fetch the complete documentation index at: https://snakysec.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Auto-triage des alertes Sentry + Snyk

Architecture cible (V2)

Sentry (issue.created webhook)  ─┐
                                  ├──→  Remote Trigger Claude  ──→  Session Claude Code
Snyk (vulnerability webhook)    ─┘                                       │
                                                                          ├──→  mcp__sentry__get_sentry_resource
                                                                          ├──→  Analyse root cause
                                                                          ├──→  Écriture docs/incidents/*.md
                                                                          └──→  MR auto si fix sûr

État actuel (V1, 2026-05-01)

1. Cron de polling (session-only, mortel à la fin de la session Claude)
  • Job ID 6af8f076, fréquence 7,22,37,52 * * * * (4×/h, off-peak minutes)
  • Liste les nouvelles issues Sentry level:error,fatal firstSeen:-15m
  • Cache /tmp/triaged-issues.txt pour dédoublonner
  • Output docs/incidents/auto-triage-YYYY-MM-DD.md
  • ⚠️ Meurt quand la session Claude se ferme (la flag durable: true n’est pas honorée par le runtime). Re-armer à chaque session.
2. Webhook GitLab → app
  • Patché 2026-05-01 via API GitLab (token sync entre Vault mssp/platform/gitlab_webhook_secret et webhook id 74370314)
  • Vérification : POST /api/webhooks/gitlab retourne 200 (vs 401 avant le fix)

Setup persistent (à faire — V2 cible)

Option A — Remote Trigger via UI claude.ai

L’API Remote Trigger a un schéma protobuf que je n’ai pas pu reproduire à l’aveugle. Setup via UI :
  1. Aller sur https://claude.ai/settings/code/triggers (ou équivalent)
  2. Créer trigger “snakysec-security-alerts-auto-triage”
  3. Worker = Claude Code, repo = ce repo
  4. Initial prompt : voir auto-triage-prompt.md (à créer)
  5. Récupérer l’URL webhook + le secret généré
  6. Sentry → Settings → Integrations → Webhooks → Add :
    • URL : (depuis Claude)
    • Events : issue.created, issue.escalating, event.alert
    • Secret : (depuis Claude)
  7. Snyk → Account → Webhooks → Add :
    • URL : (depuis Claude)
    • Events : vulnerability.created filtré par severity high|critical
    • Secret : (depuis Claude)

Option B — GitLab Scheduled Pipeline

Si Claude UI inaccessible, fallback : pipeline programmée GitLab toutes les 15 min, qui :
  1. Curl Sentry API + Snyk API pour les nouveaux issues
  2. POST sur un endpoint custom de la plateforme /api/auto-triage/ingest
  3. La plateforme crée les issues GitLab, envoie un email à nicolas
Ne fait pas d’analyse Claude, juste ingestion. Pas idéal mais résiste aux Claude session deaths.

Garde-fous (intégrés au prompt du trigger)

  • JAMAIS de push direct main (toujours branche + MR)
  • JAMAIS de modif code applicatif sans tests passants
  • Fix sûr auto-applicable : sync Vault → service externe (webhook secrets, etc.)
  • Fix incertain : écriture .md only, “manuel requis”
  • Severity fatal/high → ScheduleWakeup pour relance vérif après fix

Test du flow

Une fois Remote Trigger setup :
# Sentry test event (depuis le projet)
curl -X POST -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
  https://sentry.io/api/0/projects/snakysec/mssp-platform/store/ \
  -d '{"message":"AUTO-TRIAGE TEST","level":"error","environment":"production"}'

# Vérifier dans /tmp/triaged-issues.txt + docs/incidents/auto-triage-YYYY-MM-DD.md

Coûts

  • Cron polling : 96 calls/jour à Sentry MCP (gratuit), 0 si rien à analyser
  • Remote Trigger : 1 session Claude Code par alerte ; estimation 10-50 alertes/mois en V1 → ~1$/mois