Royal AI Firewall logs and controls AI bot traffic at the WordPress layer. Every site on the public web is now visited by AI crawlers — GPTBot, ClaudeBot, PerplexityBot, ByteSpider, CCBot, and dozens of others — and most site owners have no way to see what’s happening or decide who gets through.
This plugin gives you:
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 makes no outbound network calls by default. The bundled bot catalog ships with each plugin release and refreshes automatically when you update Royal AI Firewall, so customers who never opt in to live updates still get fresh bot definitions on every plugin update. If you want even fresher catalogs between releases, an optional toggle in Settings (and on the final wizard step) opts in to one HTTP GET per day to fingerprints.royalplugins.com. The plugin never sends your site’s traffic, customer data, IP addresses, or credentials to any third party regardless of toggle state.
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, MistralBot, ai2bot, ai2bot-dolma, cohere-ai, Amazonbot, PetalBot
Retrieval bots (on-demand): ChatGPT-User, ClaudeBot-User, Claude-Web, Perplexity-User, Meta-ExternalFetcher, facebookexternalhit, APIs-Google
AI search engines: OAI-SearchBot, PerplexityBot, Applebot-Extended, MicrosoftCopilotBot, DuckAssistBot, YouBot, PhindBot, iAsk, Komo, Liner, Brave Leo, Andi
Search engines (always-allow guarded): Googlebot, Googlebot-Image, Googlebot-Video, Googlebot-News, Bingbot, BingPreview, Applebot, DuckDuckBot
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
Open the AI Firewall menu in your WordPress admin to see:
Each recognized bot row has a dropdown with four options:
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.
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:
And which CF settings to leave on (they don’t conflict):
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.
The plugin auto-detects these plugins when they’re active and shows compatibility notes on the dashboard and Settings page:
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.
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.
The plugin is off by default for telemetry. The “Anonymous usage data” toggle in Settings is unchecked on activation. If you explicitly opt in, the plugin sends:
The following are NEVER sent, regardless of toggle state:
Log retention defaults to 7 days. The retention window is filterable via raif_log_retention_days for developers who need a different value.
On activation the plugin:
raif_invocation_log, raif_daily_rollup, raif_bot_policyNo 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.
The plugin makes no outbound HTTP calls by default. The bot fingerprint catalog is bundled with the plugin zip and refreshes automatically on every plugin update — customers who never opt in still get fresh bot definitions through the normal WordPress plugin update channel.
If — and only if — the customer explicitly enables the “Keep catalog updated between releases” toggle (off by default, found on the final wizard step and in Settings Bot fingerprint database), the plugin will then make one HTTP GET per day to the service described below. No outbound HTTP call is made before that explicit opt-in.
Service: Royal AI Firewall Fingerprint Catalog (opt-in only)
raif_fingerprint_update), scheduled at opt-in time and unscheduled if the customer disables the toggle.royal-ai-firewall/1.0.0) and a standard If-None-Match cache validator. No site URL, no IP address, no customer information, no telemetry payload.raif_fingerprint_endpoint filter to point at an empty string, or set WP_HTTP_BLOCK_EXTERNAL in wp-config.php to block all external requests.This is the only outbound request the plugin can ever make. There is no telemetry, license check, license activation, traffic beacon, analytics call, or any other call to Royal Plugins servers — even when the opt-in is enabled. Dashboard rendering, bot classification, policy decisions, and logging all run entirely inside your WordPress install.