Moodle 5.3 AI: what core does and when you need a plugin

Moodle 5.3 ships four AI actions, two placements and seven providers. What that covers, what it does not, and when a custom AI plugin is the right call.

Drawing of a cabinet of four closed drawers, with two hands fitting a new blue drawer into the empty slot.

Short answer: Moodle 5.3 can generate text and images inside the text editor, and summarise or explain a course page for a student. That is the whole list. It connects to seven AI providers, including a self-hosted Ollama server, and gives admins rate limits, a usage policy and usage reports. If “add AI to Moodle” means those four things, you need configuration, not code. If it means AI feedback on assignments, a tutor that answers from your course material, or generated quiz questions, core does not do it and you need a plugin.

This post is for the person at a school or training company who has been handed that request. It covers what core ships, what the admin controls do, where your data goes, and a table of which needs core meets. For what AI costs, see our post on Anthropic’s S-1 and AI pricing. For the developer side of 5.3, see our 5.3 review.

What AI actions does Moodle 5.3 ship?

An action is one thing a user can ask the AI to do. Moodle 5.3 has four, and they are the only action classes in core’s aiactions folder:1

ActionWhat it does (core’s own description)Added in
Generate text”Generates text based on a text prompt.”4.5
Generate image”Generates an image based on a text prompt.”4.5
Summarise text”Summarises the text content on a course page.”4.5
Explain text”Explains the text content on a course page.”5.0

The descriptions are from core’s language file.2 The version column is from the release notes: the AI subsystem, both placements, OpenAI and Azure arrived in 4.5, and the “Explain” course placement in 5.0.34

There is no chat action, no grading action, no translation action and no question generation action in 5.3.

Where do users see AI in Moodle?

A placement is the part of the interface where an action shows up. Core ships two:1

  • Text editor placement. “AI generate text” and “AI generate image” buttons in the TinyMCE editor, in the contexts where the placement is enabled.5
  • Course assistance placement. “Summarise” and “Explain” buttons on course pages. The result opens in an “AI-generated content drawer” with copy and regenerate buttons.6

Since 5.1, a course has an “Allow AI tools for this course” setting, and each activity has “Allow AI tools in this activity” with a choice of which AI features are available (MDL-85738).27

One thing to check before you switch anything on: all four placement capabilities (aiplacement/editor:generate_text, generate_image, courseassist:summarise_text, explain_text) are allowed for the student archetype by default.8 Once an admin enables a provider and a placement, students can generate text in the editor unless you change the role or the course and activity settings. For a school, that may or may not be what you want.

Which AI providers does Moodle 5.3 support?

A provider is the connection to an AI service. Seven ship in core:

ProviderIn core sinceText actionsImage generation
OpenAI4.5YesYes
Azure AI4.5YesYes
Ollama (self-hosted)5.0YesNo
DeepSeek5.1YesNo
Amazon Bedrock5.2YesYes
Gemini5.2YesYes
Anthropic Claude5.3YesNo

Versions come from the release notes for 4.5 to 5.3.347910 The image column is from each provider’s settings strings: only OpenAI, Azure AI, Bedrock and Gemini have generate-image settings.1 The MoodleDocs provider page confirms it for Claude: “Image generation is not supported by the Claude API.”11 So a site that wants image generation and only uses Claude needs a second provider.

Since 5.0 you can create several instances of the same provider, set models per action, and order the instances, so a cheap model can handle summaries while a stronger one handles generation (MDL-82977, MDL-82980, MDL-83216).411 MoodleDocs also notes that many other services and AI routers “offer an OpenAI API-compatible layer”.11

What controls do admins get?

Everything lives under Site administration > General > AI.12 The controls are:

  • Enable or disable each provider instance, each placement, and each action within a provider and a placement.
  • Rate limits. A site-wide limit and a per-user limit, both counted as requests per hour.2 They stop runaway use. They do not cap spend, which is the point we made in the costs post.
  • AI usage policy. Users must accept a policy before their first AI action, and there is an AI policy acceptance report (MDL-83396, 5.0).4
  • Usage reports. A site-level AI usage report since 5.0 (MDL-83395), and a course-level report in 5.3 (report_aiusage, MDL-80893) with its own report/aiusage:view and report/aiusage:viewown capabilities.413 The detail view shows “the full prompt sent to the provider and its full generated response”.2
  • Per-action system instructions. Each provider has an editable system instruction per action, with the warning “Editing this instruction is not recommended unless absolutely required.”1

What is missing: there is no token or money budget, no per-course quota, and no per-role model choice in core.

What data leaves the site?

The default policy text users accept is plain about it: the feature is “based solely on external Large Language Models”, anything they share “will be handled according to the privacy policy of those LLMs”, and “a record of your interactions with the AI features may be saved in this site.”2

In practice:

  • Sent to the provider: the prompt text. For summarise and explain, that is the page content. For the editor, it is whatever the user typed. The provider’s privacy strings say data retention depends on your account settings with that provider.1
  • User identity: the OpenAI, Azure, Gemini, DeepSeek, Ollama and Bedrock providers say no user data is explicitly sent. The Anthropic provider sends “a one-way hash of the site identifier and the user id” for abuse detection, and says it “does not identify the user”.1
  • Stored in Moodle: each action is logged with the user, course, provider, model and token counts, and the prompt and generated content are stored in per-action tables.2 Admins with the report capability can read them. Cover this in your own privacy notice.
  • Keeping it in-house: Ollama is the only core provider that runs on your own server, so prompts never leave your infrastructure.11 You trade that for running and sizing the model server yourself, and no image generation.

When does core meet the need, and when do you need a plugin?

What you were asked forCore 5.3What it takes
Teachers draft text or images in the editorYesEnable a provider and the editor placement
Students get a summary or explanation of a pageYesEnable the course assistance placement
Keep prompts on your own serversYesOllama provider, text only
See who used AI and how muchYesUsage reports, 5.0 and 5.3
A provider not in corePartlyOpenAI-compatible endpoint, or a provider plugin
AI feedback or grade suggestions on assignmentsNoPlugin
A course tutor or chat that answers from course materialNoPlugin, plus a retrieval index of your content
Generate questions into the question bankNoPlugin
Feedback on quiz attemptsNoPlugin
Translation workflows for course contentNoPlugin
Token or cost budgets per course or departmentNoPlugin that reads the AI logs
Analytics on learning, not just AI usageNoPlugin or report source

The common thread: core AI works on one piece of text the user is looking at right now. Anything that needs to read many things (all submissions, a whole course, the question bank), write into Moodle data (grades, questions, feedback), or keep a conversation going is outside it.

Which community AI plugins already exist?

Several, described here as their Moodle Marketplace listings describe them on 31 October 2026. We have not tested them.

  • ByCS suite. local_ai_manager is “a central interface for connecting and managing different language models”, with tenants based on user fields, credit management per tenant and role-based model choice. It lists Moodle 4.4 to 5.2.14 block_ai_chat is a chat block with history that requires it, also 4.4 to 5.2.15 qbank_questiongen generates questions with an LLM, requires local_ai_manager, and lists 5.0 to 5.2.16 The suite uses its own provider layer rather than core’s providers.
  • qbank_genai. Generates multiple choice and essay questions from course files into the question bank. It needs an OpenAI API key and lists Moodle 4.1 to 5.3.17
  • local_aigrade. Teachers grade assignment submissions with AI against the description or a rubric, and review before finalising. Its listing says it “uses the core Moodle AI connection” and supports 4.5 to 5.1.18

Note the version ranges. On 31 October 2026, of these five only qbank_genai lists 5.3. If you are upgrading to 5.3 LTS, check each plugin’s listing for the version you will run before you plan around it.

What does MDL-89121 mean for plugin design today?

Third-party plugins can add providers and placements today, because both are plugin types. They cannot add new actions. MDL-89121, “Make AI subsystem extendable”, is the open epic for that: “Third-party plugins can extend AI subsystem actions.” It was created on 9 July 2026, is open, and has no fix version.19 Moodle 6.0 is planned for April 2027, so do not count on it before then.

What that means in practice for a plugin that wants to use core’s providers, say an AI grading plugin:

  • It has to call the AI manager with one of the four core actions, almost always Generate text. The generate_text constructor takes a context, a user id and the prompt text, nothing else.20
  • The system instruction for that call is the one the admin set for Generate text, which was written for the editor. The plugin’s own instructions (the rubric, the output format) must go inside the prompt.
  • Its usage shows up in the reports as “Generate text”, mixed with editor use, and it shares the same rate limits.
  • The placement capabilities and per-course AI settings were designed for core’s placements, so the plugin needs its own permission checks.

That is workable, and it is the right trade for most sites: you keep the admin’s providers, rate limits, policy and logs, and you do not store another API key. A plugin that brings its own connection, like the ByCS suite or qbank_genai, gets full control over prompts and models but sits outside core’s reports and limits, and you manage keys in two places.

Our approach today: use core’s manager and Generate text for one-shot jobs like feedback drafts and question generation, keep prompts and output parsing in a class the plugin owns, and keep that call behind one small interface so it can switch to a proper action once MDL-89121 lands. Build a separate connection only when you need something core cannot give, such as streaming chat, embeddings for retrieval, or per-tenant budgets.

DevLMS can build these on the core AI subsystem: assignment feedback, question generation, course tutors with retrieval, and cost controls. If you need one, hire a Moodle developer for a fixed price.

Sources

  1. Moodle, core AI source, MOODLE_503_STABLE (actions, placements, providers and their language files). ↑ ↑ ↑ ↑ ↑ ↑

  2. Moodle, core AI language strings, MOODLE_503_STABLE. ↑ ↑ ↑ ↑ ↑ ↑

  3. Moodle HQ, Moodle 4.5 release notes. ↑ ↑

  4. Moodle HQ, Moodle 5.0 release notes. ↑ ↑ ↑ ↑ ↑

  5. Moodle, Text editor placement strings. ↑

  6. Moodle, Course assistance placement strings. ↑

  7. Moodle HQ, Moodle 5.1 release notes. ↑ ↑

  8. Moodle, Course assistance capabilities and Text editor capabilities. ↑

  9. Moodle HQ, Moodle 5.2 release notes. ↑

  10. Moodle HQ, Moodle 5.3 release notes. ↑

  11. MoodleDocs, AI providers (5.3). ↑ ↑ ↑ ↑

  12. MoodleDocs, AI subsystem (5.3). ↑

  13. Moodle, core_ai UPGRADING.md, MOODLE_503_STABLE. ↑

  14. Moodle Marketplace, AI Manager (local_ai_manager). ↑

  15. Moodle Marketplace, AI Chat (block_ai_chat). ↑

  16. Moodle Marketplace, AI questions generator (qbank_questiongen). ↑

  17. Moodle Marketplace, Generative AI Question Bank (qbank_genai). ↑

  18. Moodle Marketplace, AI Grade (local_aigrade). ↑

  19. Moodle Tracker, MDL-89121: Make AI subsystem extendable. ↑

  20. Moodle, generate_text action class. ↑

Need a Moodle plugin built or rescued?

Tell the scoping assistant what you need. You get a fixed price and a timeline in a few minutes, and an engineer reviews it within one business day.

Get a fixed quote