Raxx · internal docs

internal · gated

RCA — Bot Fight Mode disabled on raxx.app (operator-authorized pre-launch window)

Incident ID: 2026-06-18-bfm-disabled-window Date: 2026-06-18 Severity: SEV-2 Duration: Ongoing until re-secure path is completed (see Action items) Blast radius: GitHub Actions Azure-ASN CI runners blocked from vault.raxx.app; Sprint readiness gate and BCP export workflows failing with HTTP 403 at vault universal-auth/login Author: sre-agent

Summary

Cloudflare Bot Fight Mode (BFM) on the raxx.app zone was scoring GitHub Actions runners (AWS/Azure ASN egress) as bot traffic and returning CF error 1010 before CF Access could authenticate service-token headers. This blocked all CI workflows that load secrets from vault.raxx.app. The operator authorized disabling BFM as a pre-launch bridge while the permanent WAF CF-Access skip rules (Priority 0.5 vault + Priority 1 generic, tracked in #2328 and #2378) are deployed. BFM was disabled at 2026-06-18T11:22:19Z UTC via CLOUDFLARE_RAXX_AUTOMATION_API_TOKEN which carries Zone:Bot Management:Write scope.

Timeline (all times UTC)

Impact

What went well

What didn't go well

Root cause analysis

Detection

Resolution

Exposure window and risk

BFM fight_mode=False means Cloudflare's bot heuristics no longer automatically challenge high-bot-score traffic on raxx.app. This degrades WAF posture:

Re-secure path (in order)

  1. Complete cross-stack state migration: docs/ops/runbooks/waf.md §Cross-stack ruleset migration (Issue #2378, Option C). Requires valid CF_WAF_EDIT_RAXX_APP token and CF_ACCESS_MGMT token.
  2. Apply Priority 0.5 vault Infisical auth skip rule and Priority 1 CF-Access-Client-Id generic skip rule via terraform/waf (Issues #2328, #2378).
  3. Verify both skip rules are live: vault auth probe from a non-operator IP returns 200; CF WAF Events shows no blocks on /api/v1/auth/*.
  4. Re-enable BFM: PUT /zones/f12dbb5cac57d5591a5058874498a6d1/bot_management {"fight_mode": true} using CLOUDFLARE_RAXX_AUTOMATION_API_TOKEN.
  5. Verify: vault auth probe still returns 200 (the skip rule must preempt BFM for vault path).
  6. Close Issue #3634.

Action items

# Action Owner Due Issue
1 Complete WAF cross-stack state migration and apply Priority 0.5 + Priority 1 skip rules operator 2026-06-25 #2378
2 Re-enable BFM fight_mode after skip rules are verified live sre-agent (after #2378) 2026-06-25 #3634
3 Document CLOUDFLARE_RAXX_AUTOMATION_API_TOKEN Bot Management Write scope in cloudflare-tokens.md inventory sre-agent 2026-06-20 n/a
4 Add daily synthetic vault-auth probe from non-operator IP to detect BFM regressions before they block CI sre-agent 2026-06-25 n/a

References