AI Tools Blocklist
Home AI Tools Database Taxonomy Pricing
Solutions
Enterprise IT & CISO Education Firewall Admins Shadow AI Prevention REST API Customer Login
Download Free Sample
Custom URL Category

Adding a Custom AI URL Category
to Your Next-Gen Firewall

Extend your firewall's URL filtering with a dedicated "AI Tools" category — populated with 17,410+ classified domains and updated automatically every 24 hours.

17,410+AI Domains
18Categories
4+Vendor Platforms
DailyUpdates
NGFW EDL
UTM Threat Feeds
Cloud SWG API
DNS Destination Lists
18-Category Taxonomy
Daily Updates
Custom Categories

How Custom URL Categories Extend AI Tool Coverage

Every NGFW ships with a vendor-maintained URL database. Custom URL categories let you layer additional, specialized domain intelligence on top of these built-in classifications.

Rapid AI Growth

The AI tool landscape evolves faster than any other software category, with new domains launching daily across chatbots, code generators, image tools, and autonomous agents.

Specialized Coverage

A dedicated AI domain feed provides deep, continuously updated coverage across 17,410+ domains organized into 18 functional categories.

Daily Updates

Custom categories populated by external feeds refresh automatically, ensuring your firewall policy reflects the latest AI tool discoveries.

A broad surface that needs dedicated classification

The AI tool landscape spans writing assistants, code generators, image synthesizers, voice cloners, data extraction tools, and autonomous agent platforms.

  • AI writing assistants and content generation platforms
  • Code generators and IDE plugins with cloud backends
  • Image synthesizers, voice tools, and media generation
  • Data analysis tools and autonomous agent platforms
Custom Categories Work Alongside Built-In Filtering

Custom URL categories complement your firewall's built-in classifications. They provide a dedicated "AI Tools" category that you control, populated from a specialized feed and enforced through the same security policy rules you already use.

Universal Architecture

Creating a Custom AI Category in 4 Steps

Every major firewall supports custom URL categories. The implementation differs by vendor, but the architecture is the same.

1

Define

Create the custom URL category

2

Populate

Load domains from AI-tool feed

3

Reference

Attach to security policy rules

4

Automate

Schedule daily feed updates

Next-Gen Firewall

Creating a Custom AI URL Category on a Next-Gen Firewall

Next-gen firewalls typically support two approaches for custom URL categories. For 17,410+ AI domains that change daily, the EDL approach is the only practical option.

Static Custom Category

Manually add domains. Limited to ~50,000 entries. Requires a commit for every update — impractical for daily automation in production.

External Dynamic List (EDL)Recommended

The firewall polls a remote URL on a schedule. No commits needed for updates. Supports 150K+ entries on current hardware.

The workflow: host the AI-tool domain list as an External Dynamic List, configure your firewall to consume it, then reference the EDL in a URL Filtering Profile attached to your security policy rules.

Step 1: Configure the External Dynamic List

Navigate to Objects → External Dynamic Lists in the web interface. Set the type to "URL List," point the source URL at your feed, and set the refresh interval.

# NGFW CLI — Configure an External Dynamic List for AI tool domains

configure

# Create the EDL object
set objects external-list AI-Tools-EDL type url url \
  "https://edl.yourcompany.internal/ai_domains.txt" # hosted internally, regenerated daily from the API CSV

# Set the refresh interval (hourly recommended for enterprise)
set objects external-list AI-Tools-EDL type url recurring hourly

# Optional: add a description for audit trail
set objects external-list AI-Tools-EDL type url description \
  "AI Tools Blocklist - 17,410+ domains - Updated daily"

# Commit the configuration
commit

# Verify the EDL is populated
request system external-list show name AI-Tools-EDL

Step 2: Create a URL Filtering Profile

Create or modify a URL Filtering Profile that references the EDL. The profile tells the firewall what action to take when a session matches a domain in the list.

Pro Tip — start with alert mode: use "alert" for the first week to identify false positives or legitimate business tools. Switch to "block" once you have validated the list against your environment.
# NGFW CLI — URL Filtering Profile referencing the EDL

set profiles url-filtering AI-Block-Profile \
  block-list AI-Tools-EDL
set profiles url-filtering AI-Block-Profile \
  action block
set profiles url-filtering AI-Block-Profile \
  block-list-action block

# Attach the profile to a security policy rule
set rulebase security rules Block-AI-Tools \
  from trust \
  to untrust \
  source any \
  destination any \
  application any \
  service application-default \
  action allow \
  profile-setting profiles url-filtering AI-Block-Profile

commit
Immediate enforcement: after committing, the firewall immediately evaluates sessions against the EDL. Any HTTP/HTTPS request to a listed domain is blocked according to your profile action.
UTM Appliance

Custom AI URL Category on a UTM Appliance

UTM appliances support custom URL categories through web filter features. The external threat feed method is recommended — it supports automatic refresh without a firmware commit for each update cycle.

What the external threat feed supports
  • Consumes a plain-text domain list hosted on an HTTPS URL — configure as an External Connector, reference in a Web Filter Profile
  • The appliance polls the URL at your set interval and updates the local cache transparently
  • Supports up to 131,072 entries — comfortably fits our 17,410+ domain list
  • Apply the profile to a firewall policy to begin enforcement
# UTM CLI — Configure external threat feed for AI tool domains

config system external-resource
    edit "AI-Tools-Feed"
        set type category
        set resource "https://edl.yourcompany.internal/ai_domains.txt" # hosted internally, regenerated daily from the API CSV
        set refresh-rate 1440    # Refresh every 1440 minutes (24 hours)
        set status enable
    next
end

# Create a web filter profile that blocks the AI category
config webfilter profile
    edit "Block-AI-Tools"
        config ftgd-wf
            config filters
                edit 1
                    set category 192    # Custom category ID for AI-Tools-Feed
                    set action block
                next
            end
        end
    next
end

# Apply the web filter profile to a firewall policy
config firewall policy
    edit 10
        set name "Block-AI-Outbound"
        set srcintf "internal"
        set dstintf "wan1"
        set action accept
        set utm-status enable
        set webfilter-profile "Block-AI-Tools"
    next
end
SIEM integration: the appliance logs every blocked request in the web filter log category. Forward logs to your SIEM to build AI usage dashboards.

Matched Domain

Each log entry includes the blocked domain, category name, source IP, and timestamp.

User Identity

With your identity integration configured, logs include user identity for department-level reporting.

Trend Analysis

Track which departments generate the most block events and whether block volume is trending up or down over time.

The Data Underneath

AI Domain Feed at a Glance

One classified corpus populates every custom category, on every platform, in every format.

17,410+AI domains classified
18Functional categories
300KDomains scanned daily
102MTotal domain corpus
EDL / URL List External Threat Feed Cloud SWG API DNS Destination List CSV / REST API
Cloud Platforms

Custom AI Categories on Cloud Security Platforms

Cloud platforms handle custom categories differently from on-prem firewalls. The core concept is the same — define, populate, enforce — but the mechanics are cloud-native (API upload or portal integration).

Cloud Web Gateway

Cloud web gateways support custom URL categories. Create a category, add AI domains, then reference it in a URL filtering rule with a "Block" action.

  • Add domains individually, by CSV upload, or via the platform API
  • The platform API supports bulk upload for automated daily refreshes
  • Applies to all gateway-connected users regardless of physical location
  • Ideal for organizations with distributed or remote workforces
# Cloud SWG API — Create custom URL category and add AI domains
# Step 1: Authenticate and get API token

curl -X POST "https://your-swg-api.example.com/api/v1/authenticatedSession" \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "username": "[email protected]",
    "password": "YOUR_PASSWORD"
  }'

# Step 2: Create or update custom URL category
curl -X POST "https://your-swg-api.example.com/api/v1/urlCategories" \
  -H "Content-Type: application/json" \
  -H "Cookie: JSESSIONID=YOUR_SESSION" \
  -d '{
    "configuredName": "AI Tools - Blocked",
    "superCategory": "USER_DEFINED",
    "urls": [
      "openai.com", "chat.openai.com", "claude.ai",
      "anthropic.com", "midjourney.com", "jasper.ai"
    ],
    "dbCategorizedUrls": [],
    "customCategory": true,
    "type": "URL_CATEGORY"
  }'

# Step 3: Activate changes
curl -X POST "https://your-swg-api.example.com/api/v1/status/activate" \
  -H "Cookie: JSESSIONID=YOUR_SESSION"

DNS Filtering Platform

DNS filtering platforms use destination lists instead of URL categories. Blocking happens at the DNS layer — before any HTTP connection is established.

How DNS-layer blocking works: create a destination list, populate it with AI domains, and associate it with a DNS policy set to "block." The client's DNS query returns a block page IP instead of the real address — transparent to users, no proxy configuration required.
Batching required: DNS platform APIs typically accept up to 500 domains per request, so a full update of 17,410+ domains requires batched calls. Our integration scripts handle this automatically.

Cloud-Native Enforcement

Cloud security platforms enforce the block regardless of user location. Remote workers, branch offices, and mobile devices are covered without VPN hairpinning.

API-Driven Updates

Both platforms expose REST APIs for managing categories and destination lists. Automate daily refreshes with a scheduled script. No manual portal clicks after initial setup.

Automation

Automating Custom Category Updates Across Vendors

A custom URL category is only as useful as its last update — an AI-tool list accurate in January is missing hundreds of new domains by March. The strategy depends on your platform, but the pattern is consistent: fetch domains, push to your firewall, verify success.

EDL / Threat Feed Approach

For on-premises NGFW and UTM appliances.

  • Firewall handles polling and refresh
  • Configure URL once, set interval
  • No external scripts or cron jobs

Script-Based Approach

For cloud web gateways or when you need custom filtering.

  • Daily cron fetches from our REST API
  • Computes delta, pushes via platform API
  • Filter by category or apply local allowlist
#!/usr/bin/env python3
# Automated AI URL category updater — multi-vendor support
# Schedule via cron: 0 3 * * * /opt/scripts/update_ai_category.py

import requests, json, csv, io, sys, logging

logging.basicConfig(level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s')
log = logging.getLogger('ai-category-updater')

# Configuration
API_KEY    = "YOUR_API_KEY"
API_BASE   = "https://www.aitoolsblocklist.com/api/database/"
STATE_FILE = "/var/lib/ai-blocklist/last_sync.json"

def fetch_delta():
    """Re-download the database when it changes; diff locally."""
    try:
        with open(STATE_FILE) as f:
            state = json.load(f)
    except FileNotFoundError:
        state = {"last_updated_unix": 0, "domains": []}

    # Poll metadata; skip the download if nothing changed
    info = requests.get(API_BASE,
        params={"action": "database_info"},
        headers={"X-API-Key": API_KEY},
        timeout=30).json()
    if info["last_updated_unix"] <= state["last_updated_unix"]:
        log.info("Database unchanged since last sync")
        return {"added": [], "removed": [], **state}

    # Download the CSV (domain,category,subcategory) and diff locally
    resp = requests.get(API_BASE,
        params={"action": "download_database"},
        headers={"X-API-Key": API_KEY},
        timeout=120)
    resp.raise_for_status()
    current = {row["domain"]
               for row in csv.DictReader(io.StringIO(resp.text))}
    previous = set(state["domains"])

    data = {"added": sorted(current - previous),
            "removed": sorted(previous - current),
            "last_updated_unix": info["last_updated_unix"],
            "domains": sorted(current)}
    log.info(f"Delta: {len(data['added'])} added, {len(data['removed'])} removed")
    return data

def update_ngfw_edl():
    """Force the firewall to refresh its EDL immediately."""
    import subprocess
    result = subprocess.run([
        "curl", "-sk",
        "https://firewall.local/api/?type=op&cmd="
        ""
        ""
        "&key=PAN_API_KEY"
    ], capture_output=True)
    log.info(f"Firewall EDL refresh: {result.returncode}")

def update_cloud_swg(added, removed):
    """Push delta to cloud SWG custom URL category."""
    session = requests.Session()
    # Authenticate to SWG API
    session.post("https://your-swg-api.example.com/api/v1/authenticatedSession",
        json={"apiKey": "SWG_KEY", "username": "admin", "password": "pass"})
    # Get current category, merge delta, PUT update
    cat = session.get("https://your-swg-api.example.com/api/v1/urlCategories/CUSTOM_CAT_ID").json()
    urls = set(cat["urls"])
    urls.update(added)
    urls -= set(removed)
    cat["urls"] = list(urls)
    session.put(f"https://your-swg-api.example.com/api/v1/urlCategories/{cat['id']}", json=cat)
    session.post("https://your-swg-api.example.com/api/v1/status/activate")
    log.info(f"Cloud SWG updated: {len(urls)} total domains")

if __name__ == "__main__":
    delta = fetch_delta()
    update_ngfw_edl()
    update_cloud_swg(delta["added"], delta["removed"])
    # Save sync state
    with open(STATE_FILE, "w") as f:
        json.dump({"last_updated_unix": delta["last_updated_unix"],
                   "domains": delta["domains"]}, f)
    log.info("All platforms updated successfully")
This script is a starting point — add these safeguards for production
  • Error handling for API rate limits and transient network failures
  • Notification hooks (Slack, email, PagerDuty) for update failures
  • Rollback mechanism if the new list triggers anomalous support tickets
  • Expanded examples available in our API documentation
Policy Design

Designing Category-Based Security Policies

A custom AI URL category is a policy building block, not a policy by itself. Attach it to different rules with different actions for different user groups, zones, or time windows.

Granular governance: our 18-category taxonomy lets engineering keep code assistants, marketing lose AI copywriting tools, and nobody upload files to AI data extraction services.

Hard Block Categories

Block for all users with no exceptions: "Deepfake & Synthetic Media," "Data Extraction & Scraping," "Adult & NSFW AI." These categories represent tools with no legitimate business use and high risk of misuse or data exfiltration. Action: block, log, alert SOC.

Monitor-Only Categories

Allow but log and monitor: "Code & Development," "Research & Academic AI." These tools may have legitimate productivity value. Action: allow, log, generate weekly usage report. Revisit quarterly to decide if controls should tighten.

Group-Based Categories

Differentiate by department: block "Text & Language" for finance and legal, allow for marketing. Block "Image & Visual" for all except the design team. Requires user-ID integration (LDAP/AD group mapping) on your firewall.

Time-Based Policies

Some organizations allow AI tool access during lunch hours or outside business hours but block during core working hours. Time-based schedules on your firewall policy rule enable this without changing the custom category itself.

Single Category vs. Multiple Categories

Single Category

All 17,410+ AI domains in one category. Simpler to maintain — one feed URL, one EDL, one refresh job. Best for getting started quickly.

Multiple Categories

Separate EDLs filtered by our taxonomy. More feed URLs and EDL objects, but full policy granularity per AI function. Best as governance matures.

Multi-Vendor

Managing a Unified AI Category Across a Heterogeneous Firewall Estate

Enterprise networks rarely run a single firewall vendor. Without a unified approach, inconsistencies between platforms create policy gaps users will find.

The Challenge

  • NGFW at the perimeter, UTM appliances at branches
  • Cloud SWG for remote users, DNS filtering for DNS
  • Four separate APIs, update scripts, and monitoring

The Solution

  • Our feed as single source of truth
  • One script fetches, then pushes to all platforms
  • Identical domain list everywhere; only delivery differs
Infrastructure as code: Ansible and Terraform can formalize this. Template the EDL URL into NGFW configs, the external resource block into UTM appliances, and API calls into cloud gateways — all from a single set of variables. Change the feed URL or rotate an API key in one place and push to all platforms simultaneously.
Multi-Vendor Deployment Checklist
  • Single feed URL as source of truth
  • Platform-specific delivery scripts
  • Centralized API key management
  • Identical domain list on all platforms
  • Unified logging to SIEM
  • Update failure alerting per platform
  • Allowlist synchronized across vendors
  • Quarterly review of category coverage
Auditability: when compliance asks "are we blocking AI tools everywhere?" — one script queries each platform's category and compares domain counts against the feed total. If all platforms report 17,410+ domains, coverage is confirmed. Drift is flagged and auto-resynced on the next run.

Ready to Add an AI Category to Your Firewall?

Tell us your firewall platform and we will send a ready-to-import domain feed in the exact format your custom URL category expects — EDL, threat feed, API, or plain-text domain list.

Request a Custom AI URL Category Feed

Specify your firewall vendor, firmware version, and whether you need a single all-categories feed or per-category filtered feeds. We will respond within 24 hours.

Related Resources

Keep Building Your AI Control Stack