BACK TO DIRECTORY

Royal AI Firewall

by Royal Plugins

0.0
(0 ratings)

Every AI company is scraping WordPress sites to train models, feed AI search engines, and answer questions using your content — usually without your knowledge and rarely with a link back. Royal AI Firewall gives you agency at the WordPress layer: see every AI agent hitting your site, and decide who gets through with one-click per-bot policies.

Whether you want to allow AI search engines but block training crawlers, log everything for a month before deciding anything, or block every AI bot with one click — this plugin gives you the visibility and enforcement to make that choice.

This plugin gives you:

  • A live dashboard of which AI agents have visited your site in the last 24 hours
  • A per-bot dropdown to allow, block, or log-only any of 60+ recognized AI bots
  • A master “Block all AI bots” panic button on every dashboard load
  • A first-run setup wizard that detects your CDN (Cloudflare, Bunny CDN, Fastly, KeyCDN, Sucuri, StackPath, or Akamai) and, when it finds Cloudflare, tells you exactly which CF settings to dial down so this plugin can take over the AI-bot layer
  • Compatibility detection for GuardPress and other popular security plugins
  • A bundled bot fingerprint catalog that refreshes on every plugin update, with an optional opt-in to fetch fresher catalogs daily from fingerprints.royalplugins.com (see External Services below)

Free, Self-Hosted, Fully Featured

Royal AI Firewall is fully featured in its free, GPL-licensed release. There is no Pro version — every feature ships in the wp.org plugin, and updates go through the standard WordPress plugin updater.

Your data stays on your server. The plugin never sends your site’s traffic, customer data, IP addresses, or credentials to any third party. See the External Services section below for the full list of endpoints the plugin can contact, when, and how to disable each one.

AI Bots Recognized (69 as of v1.0.6)

The bundled catalog covers the major AI bot families. Each entry includes the bot’s owner, intended purpose, default policy, and the blocking consequences (for example, “blocking GPTBot may remove your site from ChatGPT search results”).

Training crawlers: GPTBot, ClaudeBot, anthropic-ai, Bytespider, TikTokSpider, FacebookBot, Meta-ExternalAgent, GoogleOther, GoogleOther-AI, Google-Extended, Google-CloudVertexBot, MistralBot, KimiBot, cohere-ai, cohere-training-data-crawler, ai2bot, ai2bot-dolma, Amazonbot, PetalBot

Retrieval bots (on-demand): ChatGPT-User, OAI-AdsBot, ClaudeBot-User, Claude-Web, claude-code, Perplexity-User, Kimi-User, YandexAdditionalBot, Meta-ExternalFetcher, facebookexternalhit, APIs-Google

AI search engines: OAI-SearchBot, PerplexityBot, Claude-SearchBot, Kimi-SearchBot, MistralAI-Index, YandexAdditional, meta-webindexer, Applebot-Extended, MicrosoftCopilotBot, DuckAssistBot, YouBot, PhindBot, iAsk, Komo, Liner, Brave Leo, Andi

Search engines (always-allow guarded): Googlebot, Googlebot-Image, Googlebot-Video, Googlebot-News, Google-InspectionTool, Bingbot, BingPreview, Applebot, DuckDuckBot

Other search engines: Baiduspider

Agent browsers (newer category): OperatorAgent, ChatGPT-Atlas, Claude-Computer-Use

Dataset scrapers: CCBot (Common Crawl), Diffbot, ImagesiftBot, Omgilibot, Timpibot

Other Google crawlers: Storebot-Google, Mediapartners-Google, AdsBot-Google, adidxbot

The Dashboard

Open the AI Firewall menu in your WordPress admin to see:

  • A hero metric — total AI bot hits in the last 24 hours and the number of distinct bots involved
  • A per-bot list with hit count, bandwidth used, and a one-click policy dropdown for each row
  • An MCP / Abilities API activity widget when an MCP server plugin (Royal MCP or any plugin implementing the WordPress Abilities API) is detected on your site
  • A Cloudflare visibility status card with an honest estimate of how many AI bots may have been filtered by Cloudflare at the edge before reaching WordPress
  • Click any bot row to expand a drill-down view: top URLs the bot hit, recent activity, and what blocking the bot would cost you

Per-Bot Policy Controls

Each recognized bot row has a dropdown with four options:

  • Use default policy — falls back to your global mode (Log only, Block training, or Block all)
  • Always allow — bot is allowed regardless of default mode
  • Log only — bot is allowed and recorded; never blocked
  • Block — bot receives a 403 response immediately, before WordPress runs any heavy work

Major search engines (Googlebot, Bingbot, Applebot, DuckDuckBot) are protected from accidental blocking. The per-bot dropdown is disabled for these bots, and the API rejects block requests for them unless you explicitly enable the “Search engine override” toggle in Settings — with a clear warning that blocking Googlebot removes your site from Google Search.

Cloudflare Compatibility

If your site is behind Cloudflare, the setup wizard’s Cloudflare screen tells you exactly which CF settings to turn off so this plugin can take over the AI-bot layer:

  • AI Audit set to “Allow”
  • AI Labyrinth OFF
  • Custom WAF rules blocking AI bots DELETE (the per-bot controls in this plugin replace them)
  • Security Level Medium or Low

And which CF settings to leave on (they don’t conflict):

  • DDoS protection
  • Managed WAF rules
  • SSL/TLS
  • Bot Fight Mode (basic tier)
  • Browser Integrity Check
  • Caching

The dashboard also detects Cloudflare on every admin page load (looking for cf-ray, cf-connecting-ip, or CDN-Loop: cloudflare headers) and shows a status card with the detection state. A persistent 24-hour state ensures the UI stays stable even when an occasional admin request doesn’t pass through CF.

Other CDN Compatibility

The setup wizard also recognizes 6 additional CDNs by their vendor-forwarded request headers: Bunny CDN, Fastly, KeyCDN, Sucuri, StackPath, and Akamai. Detection is header-sniff only — no outbound HTTP, no DNS lookups.

When any of these are detected, the wizard shows a compatibility note rather than a network-specific dial-down (Cloudflare remains the only CDN with a full walkthrough because its AI controls are the most common source of operator confusion). Royal AI Firewall sees AI bot traffic that reaches WordPress regardless of which CDN sits in front — if you have edge-side AI-bot rules configured on your CDN, consult its documentation, as the two layers can coexist.

Other Security Plugin Compatibility

The plugin auto-detects these plugins when they’re active and shows compatibility notes on the dashboard and Settings page:

  • Edge-firewall security plugins — their firewalls run before WordPress loads. AI bots they block at their layer won’t appear in this plugin’s dashboard, but the two layers don’t conflict.
  • WordPress-layer security plugins — coexist cleanly at the WordPress layer.
  • GuardPress (Royal Plugins) — first-party Royal Plugins integration.
  • Royal MCP (Royal Plugins) — when Royal MCP is detected, MCP tool invocations from connected AI agents appear in the MCP Activity widget on the dashboard.

WordPress Abilities API & MCP Server Integration

This plugin listens for the WordPress Abilities API hooks wp_before_execute_ability and wp_after_execute_ability (WP 6.9+) and logs every ability invocation regardless of which MCP server triggers it. If you have any MCP server plugin installed and an AI agent calls an ability, you’ll see it in the MCP Activity widget on the dashboard.

If Royal MCP 1.4.33 or later is installed, an additional first-party bridge captures every MCP tool call from that server with full tool name and result status.

Search Engine Guard

Major search engines are protected from accidental blocking by default. The dashboard dropdown is disabled for Googlebot, Bingbot, Applebot, and DuckDuckBot. The REST API endpoints reject block attempts on these bots with a 409 Conflict response unless the customer has explicitly enabled the “Search engine override” toggle in Settings. The override toggle includes a clear warning that blocking Googlebot removes the site from Google Search.

Telemetry and Data

Anonymous usage data is OFF by default. The plugin makes no outbound HTTP call for telemetry unless you explicitly opt in — via the setup wizard’s final step or the “Anonymous usage data” toggle in Settings.

If you opt in, once per week the plugin POSTs a small JSON payload to telemetry.royalplugins.com. The payload contains:

  • Plugin version
  • WordPress version
  • PHP version
  • An opaque one-way hash of your site URL — used only to count unique installs. The URL itself cannot be recovered from the hash (SHA-256 with a per-install random salt that never leaves your site).
  • Whether you have completed the setup wizard
  • How many per-bot policy overrides you have configured
  • A bucketed range for AI bot hits in the last 24 hours (e.g. “11–50”)

The following are NEVER sent, regardless of toggle state:

  • Your site URL or domain (only its salted hash)
  • Customer email addresses
  • Invocation log contents
  • Specific IP addresses
  • Specific bot identities
  • User-Agent strings of visitors

Data retention: raw payloads are retained for 90 days. Aggregated statistics are retained indefinitely. Per-site fingerprints are purged after 12 months of no reports. You can revoke consent at any time in Settings — the plugin unschedules the weekly cron immediately.

The other outbound HTTP call the plugin can make (also opt-in) is a single daily GET request to fingerprints.royalplugins.com for a fresher bot catalog when you enable “Keep catalog updated between releases.” That request body is empty and includes only the plugin version in the User-Agent header. See the “External Services” section below.

Log retention defaults to 7 days. The retention window is filterable via raif_log_retention_days for developers who need a different value.

How Activation Works

On activation the plugin:

  • Creates five custom database tables: raif_invocation_log, raif_daily_rollup, raif_bot_policy, raif_bot_access_baseline, raif_page_type_daily
  • Seeds safe default options (Log only mode; telemetry off; uninstall data-delete off; live catalog updates off)
  • Schedules WP-Cron events for hourly rollup and daily log prune, both running entirely inside your WordPress install with no network calls
  • Loads the bundled bot fingerprint catalog from the plugin zip
  • Redirects the activating admin to the 4-step setup wizard
  • The wizard is skippable from any step

No outbound HTTP calls are made until the customer explicitly opts in to live catalog updates on the wizard’s final screen or via Settings Bot fingerprint database. The plugin is fully functional without ever making a network call — the bundled catalog refreshes from the plugin zip on every plugin update.

On deactivation the plugin unschedules all WP-Cron events. Data is preserved by default so a re-activation continues where you left off. To remove all data on uninstall, check the “Delete all logs, tables, and options when the plugin is uninstalled” toggle in Settings Data before deactivating.

External Services

The plugin can contact five categories of endpoint. Two are opt-in and off by default. Three run automatically to support features the plugin advertises (bot signature verification, bot-access alerting, and Content Signals). Every endpoint is disable-able. No customer data, IP address, credentials, or site traffic is ever transmitted to any third party.

You can globally block every outbound request by setting define( 'WP_HTTP_BLOCK_EXTERNAL', true ); in wp-config.php. The plugin degrades cleanly when blocked.

1. Royal AI Firewall Fingerprint Catalog (opt-in, off by default)

  • Endpoint: https://fingerprints.royalplugins.com/v1/index.json
  • When it runs: Only when the customer enables the “Keep catalog updated between releases” toggle. Off by default.
  • Frequency: Once per day via WordPress cron (raif_fingerprint_update).
  • Data sent: None. Request body is empty. User-Agent header carries the plugin version (e.g. royal-ai-firewall/X.Y.Z), plus a standard If-None-Match cache validator. No site URL, no IP address, no customer data.
  • Data received: A JSON catalog of recognized AI bot fingerprints, approximately 55 KB.
  • How to disable: Untick the toggle in Settings Bot fingerprint database, or filter raif_fingerprint_endpoint to an empty string.
  • Privacy Policy: royalplugins.com/privacy/
  • Terms of Service: royalplugins.com/terms/

2. Anonymous Usage Telemetry (opt-in, off by default)

  • Endpoint: https://telemetry.royalplugins.com/v1/raif/report
  • When it runs: Only when the customer enables the telemetry toggle in Settings Data.
  • Frequency: Once per week via WordPress cron (raif_telemetry_report).
  • Data sent: Plugin version, WordPress version, PHP version, a locally-salted install fingerprint hash (not derivable back to a URL), coarse-bucketed feature-usage counters. No site URL, no IP address, no bot hit content, no customer data.
  • How to disable: Untick the telemetry toggle in Settings Data.
  • Privacy Policy: royalplugins.com/privacy/

3. Web Bot Auth Key Directories (runs automatically)

  • Endpoints:
    • https://openai.com/.well-known/http-message-signatures-directory (OpenAI)
    • https://www.anthropic.com/.well-known/http-message-signatures-directory (Anthropic)
    • https://www.perplexity.ai/.well-known/http-message-signatures-directory (Perplexity)
    • https://developers.google.com/.well-known/http-message-signatures-directory (Google)
    • https://www.facebook.com/.well-known/http-message-signatures-directory (Meta)
  • When it runs: Weekly via WordPress cron (raif_web_bot_auth_refresh), scheduled at activation.
  • Data sent: None. Request body is empty. Default WordPress wp_remote_get User-Agent. No site URL, no customer data.
  • Data received: Public JWK signing keys the operators publish so RAIF can verify cryptographically-signed bot requests (RFC 9421 Web Bot Auth). Keys are cached locally.
  • Purpose: Enables the “trust verified operator” policy tier so bots that sign their requests with published keys can be distinguished from user-agent spoofers.
  • How to disable: Filter raif_web_bot_auth_directories to an empty array, or block outbound HTTP globally with WP_HTTP_BLOCK_EXTERNAL.

4. Bot Access Self-Probe (runs automatically)

  • Endpoint: Your own site’s home URL (home_url()).
  • When it runs: Twice daily via WordPress cron (raif_bot_access_check), scheduled at activation.
  • Data sent: Two GET requests. One with a browser User-Agent, one with a Googlebot User-Agent. No body, no site data beyond the requests themselves.
  • Data received: HTTP status code and a truncated response body used to detect whether upstream CDNs/hosts are silently blocking real search-engine bots.
  • Purpose: Powers the “Bot Access” alerting that warns when your site becomes unreachable to major search bots. Zero external calls; the probe loops back to your own origin.
  • How to disable: Untick “Enable bot access monitoring” in Settings, or filter raif_bot_access_probe_enabled to false.

5. Content Signals robots.txt read (runs automatically)

  • Endpoint: Your own site’s /robots.txt (via home_url( '/robots.txt' )).
  • When it runs: At most once every six hours during a live bot request that requires signal evaluation. Loops back to your own origin.
  • Data sent: One GET request. No body, no site data.
  • Data received: Your robots.txt content, parsed for Content Signals declarations (ai_train, ai_input, search).
  • Purpose: Lets the classifier know which AI purposes you’ve opted out of so it can flag violators.
  • How to disable: Delete the Content Signals lines from your robots.txt, or filter raif_content_signals_source to return an empty array.

DNS lookups. For search-engine bots that publish a verification method (Googlebot, Bingbot, Applebot, DuckDuckBot, YandexBot), the plugin performs reverse-DNS and forward-confirm lookups against the bot’s IP. These are DNS queries, not HTTP requests; they hit whatever resolver your PHP install is configured to use. Cached for 24 hours per IP.

Dashboard rendering, bot classification, policy decisions, and logging all run entirely inside your WordPress install. The endpoints above are the complete list; no license check, license activation, or analytics beacon is ever contacted.

Screenshots

Dashboard — hero metric of AI bot hits in the last 24 hours, per-bot list with dropdown controls, MCP Activity widget when applicable, and Cloudflare visibility status when Cloudflare is detected.

Dashboard — hero metric of AI bot hits in the last 24 hours, per-bot list with dropdown controls, MCP Activity widget when applicable, and Cloudflare visibility status when Cloudflare is detected.

Setup wizard, welcome step — one-screen summary of what the plugin does before the walkthrough starts.

Setup wizard, welcome step — one-screen summary of what the plugin does before the walkthrough starts.

Setup wizard, environment detection — the wizard reports which security plugins and MCP servers it found on the site and how it will coexist with each.

Setup wizard, environment detection — the wizard reports which security plugins and MCP servers it found on the site and how it will coexist with each.

Setup wizard, Cloudflare screen — step-by-step list of which Cloudflare settings to turn off so this plugin can take over the AI-bot layer.

Setup wizard, Cloudflare screen — step-by-step list of which Cloudflare settings to turn off so this plugin can take over the AI-bot layer.

Setup wizard, default policy — pick the global stance (Log only, Block training crawlers, or Block all) with a plain-language description of what each mode does.

Setup wizard, default policy — pick the global stance (Log only, Block training crawlers, or Block all) with a plain-language description of what each mode does.

Settings page — default policy, search engine override, Cloudflare detection diagnostic, security plugin compatibility, bot fingerprint database status, log retention, telemetry opt-in.

Settings page — default policy, search engine override, Cloudflare detection diagnostic, security plugin compatibility, bot fingerprint database status, log retention, telemetry opt-in.

Plugin Details

Active Installs
40
Total Downloads
1,426
Version
1.0.11
Requires WP
6.4
Requires PHP
8.0
Tested Up To
7.1.3
Added
2026-07-02
Last Updated
2026-09-30 9:20am GMT

Ratings

5
0
4
0
3
0
2
0
1
0