Agent Detection Lite

Local plugins ::: local_agentdetect
Maintained by Joseph Thibault
Detect AI Agent (Agentic browsers) across courses and your site. This local plugin expands log data to capture information from the browser and page interactions from the end user. It has been tested with Atlas (OpenAI), Neon (Opera), Gemini (Chrome), extensively with Comet (Perplexity) in their autonomous Agent mode. The system scores usage-based on aggregated session data.
Latest release:
18 sites
139 downloads
5 fans
Current versions available: 1

Yes, You Can Detect AI Agents in Your LMS.

How do I know? Because I’ve done it.

Blackboard published a post late in 2025 which concluded (emphasis is mine):

AI Agents don’t show up as separate apps or users—they look identical to normal student activity in the LMS. Because they operate at the web interaction and automation layers—filling in forms, clicking buttons, making API calls, etc.—they fall outside what the LMS itself can control. Many are completely invisible to the platform.

It is true that current/standard LMS log data that Blackboard collects cannot differentiate between users. This is as true for Student A and Student B as it is for Student A and Agent A. In fact, this is why we built Cursive (ensuring the right student is the learner is an essential foundation for assessment validity).

But this is untrue when log data are expanded. This plugin expands log data locally to capture and finger print users using their browser and page interaction data (mouse movements, key presses, clicks), and identifies AI-mitigated access to your LMS by systems and agents like OpenClaw and it's derivatives.  

  1. All data remains local (no API required)
  2. User sessions are not impacted
  3. Thresholds can be set by an administrator

Note:

  1. for operational security, the best version of this plugin is not available for download so please contact us for the best and latest version. 
  2. a paid, more robust version of this plugin is available that covers AI extensions, Quiz Solvers, Open Claw, and more: contact us.  
  3. this plugin can be part of a set, including an Authentication and Cursive Text Editor plugin which can be used to take automatic actions against Agents on the LMS.
  4. if you intend to use this to protect integrity of an examination please consider alternative/additional means (proctoring, in class exams, lockdown browsers). 

Potential privacy issues

This plugin has integrated the Moodle Privacy API and no data is transferred outside of your Moodle installation.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5

Contributors

Joseph Thibault (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments

Show comments
  • Plugins bot
    Wed, 18 Feb 2026, 4:20 AM
    Approval issue created: CONTRIB-10327
  • Przemek Kaszubski
    Sat, 18 Apr 2026, 7:49 PM
    I get this warning after installing Release 0.3.2 into my Moodle 5.0.* :

    Callback before_footer in local_agentdetect component should be migrated to new hook callback for core\hook\output\before_footer_html_generation

    line 7229 of /lib/moodlelib.php: call to debugging()
    line 7296 of /lib/moodlelib.php: call to {closure}()
    line 71 of /lib/classes/hook/output/before_footer_html_generation.php: call to get_plugins_with_function()
    line 974 of /lib/classes/output/core_renderer.php: call to core\hook\output\before_footer_html_generation->process_legacy_callbacks()
    line ? of unknownfile: call to core\output\core_renderer->footer()
    line 130 of /lib/classes/output/plugin_renderer_base.php: call to call_user_func_array()
    line 325 of /admin/renderer.php: call to core\output\plugin_renderer_base->__call()
    line 944 of /admin/index.php: call to core_admin_renderer->admin_notifications_page()
  • Joseph Thibault
    Mon, 20 Apr 2026, 10:59 PM
    @przemek, thanks for flagging that. I've released a new version and updated the footer call for Moodle 5.0.*. That call back should be fixed.
  • Przemek Kaszubski
    Tue, 21 Apr 2026, 2:13 AM
    @joseph - Thanks a lot! Just over-installed Release 0.4.0, and the debug warning is indeed gone smile .
  • Germán and Temudgin
    Fri, 24 Apr 2026, 3:11 AM
    I am looking forward to trying this plugin in my server with my students smile

    When I translated the english language strings for this plugin in AMOS,
    I did not really know what the meaning of two English language strings:

    report:fp | local_agentdetect , currently 'FP'
    report:int | local_agentdetect , currently 'Int'
  • Joseph Thibault
    Fri, 24 Apr 2026, 4:51 AM
    German! thanks for flagging that I will update our strings because those are short hand:

    FP = fingerprint
    Int = interaction

    Hope that helps!
Please login to post comments