{
  "id": "MSG-SHAFT-FIREARMS",
  "slug": "msg-shaft-firearms",
  "title": "No firearms sales or promotion",
  "statement": "Campaign content must not promote firearms, ammunition, or weapon parts.",
  "rationale": "The F in SHAFT, and the letter where the published guidance most tempts you into the wrong fix. T-Mobile, Verizon, Bandwidth and Bird all treat firearms as age-gateable, so a dealer reads the codes, builds the gate, and is then refused anyway by Twilio and AWS, which ban the category outright with no path. Under the strict-superset rule the ban is what the registry applies, which means the age gate is wasted work here even though it is the correct answer one letter over.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.description + campaign.sample[] + campaign.message_flow",
  "severity": "BLOCKING",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "HARD_STOP",
  "authorities": [
    "Twilio",
    "TCR",
    "T-Mobile",
    "AT&T",
    "CTIA"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30957",
      "remediable": false,
      "generation": "gen2"
    },
    {
      "provider": "Twilio",
      "code": "30457",
      "remediable": false
    },
    {
      "provider": "Bandwidth",
      "code": "702",
      "remediable": true
    },
    {
      "provider": "Bird",
      "code": "702",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Do not build an age gate for this: unlike alcohol, gating does not open a path at the strictest providers and Twilio publishes no conditional route on short code, toll-free or long code. Remove product content of every kind — complete firearms, ammunition, magazines and components — and register on services instead: range bookings, training and safety courses, membership renewals and event logistics are registrable when nothing is offered for sale. Done when no message, no description sentence and no linked page names a product with a price.",
  "pitfalls": [
    "Accessories are inside the category, not outside it — optics, magazines and ammunition are refused on the same code as the weapon, which is what catches retailers who moved their copy to \"gear\" and resubmitted."
  ],
  "notes": "Discharges the catalog's remediation constraint (MSG-185) as well as the content prohibition — the withheld age-gate path is the substance of that row. MSG-185 is recorded as Twilio-conditional in the catalog; the rule is left universal because the catalog's own reconciliation resolves the divergence to the ban, and a provider tag here would hand the age-gate path back to everyone who is not on Twilio.",
  "catalogIds": [
    "MSG-181",
    "MSG-185"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-firearms/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-shaft-firearms.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
