ASSET DCOPS-TRIAGEPLATFORM Cloudflare OS GatekeeperMODEL Claude via AI GatewaySTATUS Live on Cloudflare OS · 29 tests passing

DC Ops Triage

An AI-assisted triage pipeline for data center incidents. Policy code makes the calls an auditor needs to trust, Claude writes the handover, a human approves what leaves the system, and every step lands in a tamper-evident evidence ledger mapped to SOC 2, ISO 27001 and FedRAMP controls.

7 sample incidents · 7 sites · 4 regions triaged in — ms 21 evidence records, hash-chained Download PDF
The problem

Capable teams, manual pipes

The Senior Manager, Infrastructure Operations and Compliance role covers 24x7 incident response and continuous audit readiness across 750+ sites. The posting is direct about where the toil is, and this project takes aim at two of the named targets: incident triage and compliance evidence generation.

"operationally capable but structurally manual"Who you are
"identifying and prioritizing automation opportunities in access reviews, decommissioning evidence collection, portal data extraction, and incident triage"Automation & Operational Efficiency
"maintain audit readiness continuously, not just at cycle time"Position overview
Triage board · real output from npm run demo

One queue, every decision explained

Pick an incident. Severity, owner, shift, SLA clock, escalations and controls all come from the policy rules, and each carries its reason. Notes here are the demo's template notes, because it ran without an API key; with one, Claude writes them (see the example after the board).

    Live · deployed to my own Cloudflare OS instance

    Running live in Cloudflare OS

    The same Gatekeeper, deployed as a Worker into a self-hosted Cloudflare OS. A Claude Sonnet 5.5 agent read the incidents through it, wrote the triage note for the Frankfurt UPS incident, and the filing stopped for a human to approve. Screenshots from the live run.

    My prompt: “List open incidents most severe first, then triage INC-24101: read it, write a triage note, and file it.”
    Cloudflare OS approval card titled File SEV1 triage for INC-24101 (FRA03), with Deny and Approve buttons, showing the policy severity and the full on-call post the agent wrote.
    The filing waits for approval. The card shows the policy severity and the exact on-call post Claude wrote, including “Likely cause: Unknown” and what would confirm it.
    Agent reply listing four evidence records for INC-24101, received, decided by policy, note attached, filed by human approval, and confirming the hash chain verified.
    After approval: four evidence records, the last signed by human approval, and a verified hash chain.
    Cloudflare OS Admin, Gatekeepers tab, with DC Ops Triage listed as an auto-provisioned Gatekeeper set to Enabled.
    Admin view: DC Ops Triage sits beside Cloudflare’s own Gatekeepers, enabled for every user.
    What Claude adds

    The note, and the attack it ignored

    The carrier email for INC-24103 ends with an injected instruction. The alert is fenced as untrusted data, the note format has no severity field, and the policy rates it SEV2 regardless.

    Architecture

    Where each decision lives

    Evidence ledger · verified in your browser

    Try to change the record

    These are the 21 records the demo wrote. On load, this page recomputes every SHA-256 hash with your browser's own crypto. Quietly downgrade the Frankfurt power incident from SEV1 to SEV4 in record 8, and watch verification fail at that exact record.

    Verifying…
    seqincidenteventactorprev hashhash
    Design choices

    Guardrails an auditor can follow

    Rules decide, AI writes

    Severity drives paging, SLAs and regulatory clocks, so it comes from short, reviewable code. Claude does what it is good at: reading messy vendor text and writing a clear handover.

    Untrusted input stays data

    Alert text is fenced and labelled as data in the prompt. Output must match a strict format or it is rejected. A test proves a model-supplied severity is dropped.

    Humans approve, agents keep moving

    Posting and filing go through the Cloudflare OS approval queue. The Gatekeeper simulates pending filings, so the agent finishes the queue and the lead approves in one pass.

    Fails safe

    If the model is down or returns junk, a labelled template note is used, the error is written to evidence, and the rule-based triage is unaffected.

    How I'd roll it out

    Prove it, then widen it

    1. Shadow mode, one regionAgent drafts notes; engineers compare against their own triage for two weeks. Tune thresholds with the shift leads. Measure baseline minutes per triage and MTTA.
    2. Filing with approval for SEV3–4Lower-risk incidents go through the approval queue first. Track SLA attainment by shift and region from the ledger.
    3. All severities, all shiftsAPAC, EMEA and NASA on one queue and one evidence trail. GRC reviews the control mapping.
    4. Decommissioning chain of custodySame pattern from "decom triggered" through unracking, ITAD destruction, certificate of destruction and serial verification to "evidence archived", closing the Maintain-to-DCSC handoff gap.
    5. Physical access reviewsAgent pre-compares colo access lists with HR status and approved tickets for MAR/QAR cycles; reviewers approve exceptions in bulk.
    Proof

    Run it yourself

    The Gatekeeper is a drop-in for the example in cloudflare-os-starter and type-checks against Cloudflare OS's own Gatekeeper, GatekeeperUser and ApprovalQueue interfaces. The demo needs nothing but Node.

    npm install npm test # 29 tests npm run demo # template notes, no key needed ANTHROPIC_API_KEY=sk-ant-... npm run demo # notes written by Claude