=== AgentDecoy Guard ===
Contributors: simgenagentgrade12
Tags: security, bots, ai agents, honeypot, headers
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.7.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Decoys that catch hostile AI agents and attack bots in the act, with threat intelligence shared across every protected site. Never blocks search.

== Description ==

Hackers now send AI agents to break into websites. The agent hunts for leaked keys and passwords, tries them, and keeps going while its owner sleeps. AgentDecoy Guard puts decoys on your WordPress site that catch them in the act, tells you who they were and how far they got, and shares every catch with every other protected site, so an attacker caught once is refused everywhere.

Attack bots and AI agents ask for files no person ever opens: .env, .git/config, .aws/credentials, wp-config.php.bak, backup.zip. AgentDecoy Guard answers those requests with believable fakes and logs who asked. The fakes carry their own tripwires: a fake API key, a fake AI key, a webhook and an admin password that all report back the moment someone uses them, a note only AI agents read, fake API documentation and a fake MCP server for agents that read first and act second.

Verified search engines (Google, Bing, Apple, DuckDuckGo, Yandex, Amazon) and AI search bots (OpenAI, Perplexity) are checked by reverse DNS or their published address lists and get a plain 404. They are never blocked, in any mode.

Every catch is sorted as a script (a scanner, the bulk of it), a browser (a person) or an AI agent (one that read the note only AI sees, spoke to the fake MCP server, signed itself as an agent, or filled the fake login by program while pausing to think like a model). AgentDecoy also says how sure it is (confirmed, likely or possible), how far each address got (looked, took a secret, used a secret, tried to take over), which network owns the address, and where to report the worst ones. The settings page shows which caught addresses also hit other AgentDecoy sites, and counts which verified AI and search crawlers actually read your pages each day, so you can see your AI visibility, not just your exposure.

Every site that joins makes every other site safer and smarter: an address that uses a stolen secret on one AgentDecoy site is on the shared known-attacker list within the hour, and Guard mode can refuse its logins and comments everywhere.

Also included: security headers, a bot guard on the comment and login forms, an optional shared known-attacker list for Guard mode, robots.txt rules for the decoys, and the AgentDecoy badge.

Your grade and your reports: https://simgen.dev/agentdecoy/

== What is sent to AgentDecoy ==

With a site key set: for each catch, the address, browser string, path, method and time, plus which decoy was tripped. On the fake admin login, counts and timings of how the form was filled (mouse moves, key presses, clicks, time on the page, whether the browser reports automation); never what was typed and never which keys. Requests sent with a decoy key to the decoy AI endpoint also include the model name and the first 1,000 characters of the text sent. Records are deleted after 90 days. Nothing is sent about ordinary visitors. Privacy: https://simgen.dev/privacy/

== External services ==

This plugin connects to these services. Nothing is sent about ordinary visitors.

1. AgentDecoy (simgen.dev), run by Clouthier Simulation Labs. Terms: https://simgen.dev/terms/ Privacy: https://simgen.dev/privacy/
   * Decoy definitions: twice a day (WP-Cron) the plugin requests https://simgen.dev/api/agent-guard?config=1 with its version number, plus your site key if you set one, to get the current decoy text, new decoys, the crawler list and what your plan includes. This is how new protections arrive without an update.
   * Catches: with a site key, each decoy hit (address, browser string, path, method, time, which decoy) is sent to https://simgen.dev/api/agent-guard. Turn off Report in the settings to stop it.
   * Known-attacker list and network check: with a site key, https://simgen.dev/api/agent-guard?list=1 (hourly, Guard mode) and ?intel= (when you open the settings page, for addresses in your local log).
   * Temporary access: only when an administrator presses "Give Kyle temporary access" with the email box ticked, the login link, its expiry, the note typed and the administrator's email address are sent to https://simgen.dev/api/agent-guard-access, which emails them to kyle@simgen.dev. The link is not stored there.
   * Verified directory: only when "List my site" is ticked, the plugin tells AgentDecoy in its twice-daily config request (dir=1) and serves the token at /.well-known/agent-grade.txt; AgentDecoy then fetches that file once a day to confirm ownership, and re-grades the site.
   * Prepared fixes: the twice-daily config request returns any fixes prepared for your site. When an administrator applies, declines or undoes one, the plugin tells https://simgen.dev/api/agent-guard-fix (the fix id and the choice only).
   * Badge: if you turn on the badge, visitors' browsers load the image from https://simgen.dev/api/agent-grade-badge
2. OpenAI and Perplexity published crawler address lists (https://openai.com/searchbot.json, https://openai.com/chatgpt-user.json, https://openai.com/gptbot.json, https://www.perplexity.ai/perplexitybot.json, https://www.perplexity.ai/perplexity-user.json), fetched and cached so their real crawlers are never shown a decoy. Nothing is sent to them. OpenAI terms: https://openai.com/policies/ Perplexity terms: https://www.perplexity.ai/hub/legal/terms-of-service

== Installation ==

1. Upload the plugin folder to /wp-content/plugins/ or install the zip from Plugins > Add New.
2. Activate it.
3. Settings > AgentDecoy Guard: paste your site key (free or Pro, from simgen.dev/agentdecoy/account) and choose what to enable.
4. Open yoursite.com/.env in a browser: it should show a fake file, and the visit appears under Recent catches.

== Frequently Asked Questions ==

= Will this block Google or ChatGPT? =
No. Verified crawlers get a normal 404 on decoy paths and are never refused anywhere. Decoy paths are also listed in robots.txt, so a well-behaved crawler never visits them.

= Can an attacker tell the files are fake? =
The fakes are stable (the same visitor sees the same file all day), look like real configuration, and hold nothing real. Our decoys caught a real scanner that stole the fake AWS key and tried to take over the account within three hours.

= Does it block attackers? =
Observe mode (default) logs and reports only. Guard mode also refuses comments and logins that trip the form guard. Nothing else is ever refused.

== Changelog ==

= 1.7.0 =
Agent Grade Guard is now AgentDecoy Guard: same plugin, same settings, new name.

= 1.6.0 =
The fake admin login reports more about how it was filled (clicks with no mouse movement, click length, script-made events, automation flags), so AgentDecoy can tell a person from a scripted bot and from an AI browser agent. Counts and timings only, never keys or text. Readme describes the shared network.

= 1.5.0 =
Temporary access now asks the administrator to confirm a full backup exists before it can be given, and the prepared-fixes section reminds you to back up before applying anything.

= 1.4.0 =
Prepared fixes: changes your helper prepared (security headers, form bot guard, robots.txt lines, an llms.txt) appear on the settings page with exactly what they do. Nothing changes until an administrator presses Apply, and every applied fix can be undone. Sites managed by an agency on the Agency plan show the agency's name for help and temporary access. The temporary helper account can no longer use password reset.

= 1.3.0 =
Get help from Kyle: an administrator can give Kyle Clouthier (the plugin author) temporary access from the settings page. It creates a separate administrator account with a secret login link that ends by itself after 1, 3 or 7 days; every login is shown on the settings page and access can be ended at any time. Verified directory (opt-in): list the site at simgen.dev/agentdecoy/verified/ with a link; the plugin serves the ownership token at /.well-known/agent-grade.txt only while the listing is on. After the first catch the settings page suggests the badge.

= 1.2.0 =
flag.txt decoy and agent guest book: a flag.txt that tells a breaking-in AI agent the evaluation is over, asks it to report in with its name and model, sign a guest book and disconnect. Every check-in is counted, so you see which agents obey. Live decoy definitions: the plugin fetches its decoy text, new decoys, the AI crawler list and your plan from AgentDecoy twice a day, so new protections arrive without an update. The settings page says when a newer version is out.

= 1.1.0 =
AI visibility log: counts verified AI and search crawler visits to your pages per day (counts only) and shows them on the settings page; with a site key the counts go to your reports. Network intelligence: the settings page shows which caught addresses also hit other AgentDecoy sites. Guard mode can refuse logins and comments from the shared known-attacker list (addresses that used a stolen secret or the fake admin password on any AgentDecoy site in the last 14 days; never a mere file request; verified crawlers never listed).

= 1.0.0 =
First release.
