Use the chat
Open a Mule file, type a question in the MuleSoftForge Studio AI view, and press Enter (Shift+Enter adds a line). Include open file sends the active editor's content, unsaved edits included, with your message. New chat starts over.
Modes
The first drop-down under the message box picks the mode:
- Ask answers and explains. It can read the project but never changes files. When you ask for a review or a fix, it lists possible fixes, collapsed and unticked, for Agent mode to make.
- Agent reads the project and proposes changes for you to review. If it writes the code in its answer instead, it is asked once, straight away, to turn that code into proposed changes, so the diffs arrive with the answer.
- Plan reads the project and writes a plan: the goal, the changes per file, the risks, and how to test. Draft this plan for review in Agent mode under the answer switches to Agent and asks it to propose those changes.
- Diagnose finds why something goes wrong, with evidence. It reproduces the problem by calling the running app or reading its console, reads the Mule XML at the file and line the error names, and checks the cause with a second call, the debugger, a DataWeave run or the project checks before it states it. Every answer has the same shape: symptom, quoted evidence, cause, and how it was checked, then the fixes as a checklist for Agent mode. Once Agent has drafted the fixes, After you accept and Studio redeploys, check the fix in Diagnose mode repeats the reproduction.
Ask, Plan and Diagnose only get read tools and never change files. Diagnose is the one read-only mode that can send POST, PUT, PATCH and DELETE to the app on this machine, so it can reproduce a failing write. Attaching a console that shows a failure switches Ask or Agent to Diagnose, and when an Ask or Agent message describes an error, the answer offers Find the cause in Diagnose mode (reproduces it and reads the console) once per chat.
Buttons under an answer that start with Draft only prepare changes. They appear under Proposed changes with a diff for each file, and nothing is written until you accept them there.
The next box picks the model. Choose a suggestion or type any model id and press Enter. The list price per 1M input and output tokens shows underneath. You can switch models mid-chat and the conversation carries on.
Auto
Auto, at the top of the model list, picks a model for each message so you don't have to:
- The fast model handles Ask-mode questions with little context, such as "what does this flow do?".
- The strong model handles Agent and Plan mode, reviews, fixes, errors, new code and tests, images, long messages, and large attachments.
A step under your message says which model Auto picked and why. If that model fails before answering, with a rate limit, a server error or a timeout, Auto runs the message once on the other model and says so. Errors you need to fix yourself, such as a bad key or an unknown model, are not retried. A message never switches model part-way, so all the steps of one answer come from the same model.
Choose the two models under Preferences > MuleSoftForge Studio AI, below Model. Each provider starts with a sensible pair, such as Claude Haiku and Claude Sonnet for Anthropic. With OpenRouter you can also pick openrouter/auto, which lets OpenRouter choose. The step under each answer then names the model that actually replied.
Give it context
+ Context attaches more to your next message. Attachments show above the message box and clear once sent.
- Files or folders: files are sent with their content, folders as a list of the files inside.
- Selected lines in the editor, or the project's whole file list.
- Problems in the open file or in the project: what Studio's Problems view lists, up to 200 entries.
- Console: a console's text, such as Maven output from a failed build or a running Mule app's log. Long output keeps its last part, where errors usually are.
- Clipboard image: see Screenshots and images.
Send to MuleSoftForge Studio AI does the same from where you are working: the MuleSoftForge button on the toolbar, the right-click menu in editors (including the Configuration XML tab), Package Explorer, Problems and Console, or Cmd/Ctrl+Alt+I. It opens the view with the selected lines, files, problems, or console text attached.
On the Message Flow canvas, select one or more processors, scopes or flows (Shift- or Cmd/Ctrl-click for several), right-click, and choose Send to MuleSoftForge Studio AI. Their XML is attached, for example canvas selection in src/main/mule/employees-api.xml (2 elements: logger "Log request", http:request). A processor inside a selected flow is sent once, with its flow.
When you attach problems with errors, or console output that shows a failure, and the message box is empty, the helper fills in a request to fix them and switches from Ask to Agent mode, so the fix comes back as a change you can review.
Give it standing instructions
Two places, both sent with every message:
AGENTS.mdat the root of the Mule project, for team conventions such as "log with the JSON Logger connector" or "error types use the APP namespace". It is the same file other AI coding tools read. Put anything meant only for Studio under a## Studio AIheading.- Your instructions, in Preferences > MuleSoftForge Studio AI > Instructions, for your own preferences in every project, such as "use British English" or "keep answers short". Set Up has an example set of rules for Mule 4 metadata.
Both go below the built-in prompt, after secrets are masked, up to 8,000 characters each; longer text is cut with a note. They can change the built-in guidance (persona, style, Mule conventions). They cannot switch off the rules the helper relies on: masked values stay masked, and changes are still proposals you review. The first message of a chat shows a step such as Following AGENTS.md (1,240 characters) and your instructions (85 characters). Show built-in prompt, under the box, shows what is sent before them.
Secrets stay off the model
Passwords, API keys, tokens and client ids in properties, YAML, Mule XML, URLs, console output and your messages are replaced with «masked-N» before anything is sent to the model. Proposed edits still apply with the real values. .env files, private keys and keystores are never sent.
DataWeave scripts
Right-click in a DataWeave script, such as the script of a Transform Message, for two items under Format:
- Send to MuleSoftForge Studio AI attaches the selected DataWeave, or the whole script when nothing is selected, to your next message. It sends the text as you see it, even before you save.
- Fix with MuleSoftForge Studio AI sends the whole script and the errors and warnings Studio marks in it, straight away. If you selected part of the script, the AI is asked to focus there. When the answer contains a corrected script, click Review diff to see it beside the current one, then Apply to the DataWeave editor to replace the script. Cmd/Ctrl+Z in the DataWeave editor undoes it; save the Mule file to keep it.
Apply refuses if you changed the script, or closed its editor, after choosing Fix. Choose Fix again on the current script.
Run DataWeave with MuleSoft's CLI
With MuleSoft's DataWeave CLI installed, the AI checks the DataWeave it writes instead of guessing:
- When you give it sample input (attached, pasted, or a file such as
src/test/resources/sample.json), it runs the script on that input before it answers. If you say what output you want, it fixes the script until the run matches, and says so, for example "Ran on the sample: matches the expected output". - Without a sample, it checks the script compiles and says it was not run.
- DataWeave in a proposal, in Transform Message scripts,
#[...]values and.dwlfiles, is compiled with the checks before you review.
Runs cannot read files or the network and stop after 20 seconds. Mule-only functions such as p() and lookup() return null in a run, so give the values they would return when they matter.
Set it up in Preferences > MuleSoftForge Studio AI > DataWeave CLI. Leave the path empty and the plugin looks for dw on the PATH, in ~/.dw/bin and in Homebrew; Check shows the version it found. Download fetches MuleSoft's release (2.12.3) for macOS on Apple silicon, Windows x64 or Linux x64 from GitHub, verifies its published checksum, and uses it. Without the CLI the other proposal checks still run.
Debug with AI
When Studio's Mule debugger stops at a breakpoint or an error, a row above the message box says where, for example Debugger stopped on an error at Transform Message. Click Ask about this event, or the MuleSoftForge button on Studio's Mule Debugger view, to attach the live event to your next message: where it stopped, any error, the payload, attributes, variables, and the processor's settings as the runtime evaluated them. In the Mule Debug perspective, the AI view sits beside Evaluate; reset the perspective if it is missing.
The AI explains from that event first, naming the processor, the value and the setting at fault. It checks what it is unsure of by evaluating DataWeave against the event, such as typeOf(payload) or attributes.queryParams, and loads fields Studio has not sent yet. Before it proposes a DataWeave fix, it runs the fixed expression against the event and says what it returned.
Evaluations are read-only: the AI cannot change the event, set breakpoints or step the debugger, and tells you what to do in Studio instead. It can only evaluate while the debugger is stopped; if the app has moved on, stop at the breakpoint again.
The event is real data, so secrets in it are masked as usual, and email addresses and phone numbers become «email-N» and «phone-N». To send those as they are, clear Hide email addresses and phone numbers in live debug events under Preferences > MuleSoftForge Studio AI.
Screenshots and images
Copy a screenshot or picture, click in the chat view and press Cmd+V (Ctrl+V on Windows). It is attached as pasted image 1 instead of pasting text; text on the clipboard still pastes as text. + Context > Clipboard image does the same. On a Mac, Cmd+Ctrl+Shift+4 takes a screenshot straight to the clipboard; on Windows, use Windows+Shift+S.
- Up to 5 images go with one message. Large screenshots are scaled down to 1568 pixels on the longest side.
- An image is sent only with the message it was pasted into. Later messages and saved chats keep just its name, so it is not paid for again.
- The model must be able to read images. Claude, GPT-4o, GPT-5 and Gemini models can; in Ollama, use a vision model such as llava. If the model refuses the image, the error says so.
Review proposed changes
In Agent mode the AI can list and read the files of the open project and propose edits. Nothing is written until you accept it.

- Proposals appear under Proposed changes. Review diff (or double-click) opens Studio's compare editor: the current file on the left, the proposal on the right.
- Accept writes the file, creating it and any missing folders when the proposal adds a file, and keeps local history. Accept all writes every pending proposal in one step. To undo an edit, right-click the file and choose Replace With > Local History.
- Reject discards the proposal. With your next message the AI is told what you accepted and rejected.
- Accept refuses if the file has unsaved edits or changed on disk after the proposal was made.
- Edits must stay inside the project. Build output and settings folders such as
target/and.settings/are off limits.
Checks before you review
Every proposal to Mule XML, pom.xml or a properties file is checked against the whole project before you see it. If the change would break something, the AI is told and fixes it first. The checks catch:
- XML that is not well-formed, or a prefix such as
db:used without its namespace. - A namespace missing from
xsi:schemaLocation, or a connector with no dependency inpom.xml. - A
config-reforflow-refthat points at a name that does not exist. - A
${property}that no.propertiesor.yamlfile defines. - Error types that do not exist, such as
MULE:NOT_FOUND, or custom errors that reuse a connector's namespace. - Connector operations, attributes and error types that the connector version in your
pom.xmldoes not have, such as<db:selekt>orSFTP:NOT_REAL. - Anything placed after a flow's
<error-handler>, or an error handler inside a sub-flow. - DataWeave that does not compile, when the DataWeave CLI is set up. Only scripts the proposal changed are compiled.
Only problems the proposal adds count, so issues already in your project are not blamed on it. Anything the AI leaves unfixed is shown in a note under its answer. You can also ask, in any mode, "check this project": the AI runs the same checks over every file. They read the files only and do not build or run the app.
Connector lookup
Before the AI writes a connector element, it looks the connector up in the models Studio generates for each connector in your pom.xml. That gives it the configs, operations, sources, parameters, default values and error types of the exact version your project uses, rather than what it remembers from training. You can use this in any mode too, for example "what parameters does sftp:listener take?" or "which error types can db:select raise?".
Studio generates a model once it has resolved a dependency. If you have just added a connector and the AI says no model is available, save pom.xml or refresh the project, then ask again.
Speak instead of typing
The microphone button next to Send starts the operating system's dictation in the message box: macOS Dictation (turn it on in System Settings > Keyboard > Dictation) or Windows voice typing (Windows+H). The plugin never records audio and sends none to the provider; the system turns speech into text, and the text is sent like typing.
Saved chats and cost
Chats save automatically after every answer, in your Studio workspace, never in your Mule projects. File contents, images and API keys are not saved. History ▾ in the view lists recent chats so you can open, rename, export as Markdown, or delete them. Proposals you have not reviewed expire when a chat is closed.
The column to the right of the answers shows the model in use and its list price, and what this chat, today and this month have cost; hover for the Studio session, all time, and the project. In a new install, all costs show $0.00 until you send a message. Show prices lists the price per 1M tokens of each model. These are public list prices from OpenRouter; your provider or endpoint can set different prices, so use them as a guide. To turn saving off or change how long chats are kept, open Preferences > MuleSoftForge Studio AI > Chat history.
Each answer runs as a Studio job named MuleSoftForge Studio AI, so you can cancel it with Cancel in the view or from Studio's Progress view. If you cancel a request, the AI is told with your next message that it was dropped, so it does not assume the work was done.
The view follows Studio's light and dark themes. To change its colours, open Preferences > General > Appearance > Colors and Fonts and expand MuleSoftForge Studio AI.
Feedback and bug reports
Feedback in the view's header opens a form for a bug report or feedback. Fill in a title and what happened (or what you would like), leave the environment details ticked if you want, and click Open on GitHub. Your browser opens a public issue on the plugin's GitHub repository, already filled in; click Create there to send it. The form masks values that look like secrets before it opens the page. Never paste API keys, and leave out customer data.
See exactly what was sent
Tick Raw in the top bar of the view to record every request and response from your next message on. Each answer then gets a collapsed Raw · N calls section with one entry per model call, tool rounds included. Each entry shows the method, URL, HTTP status, model and time, and expands to the exact request and response bodies.
For OpenRouter, MuleSoft AI Gateway, OpenAI, Anthropic, Gemini, Ollama and other OpenAI-compatible endpoints, the body is exactly what went over the wire, after secrets are masked. Azure OpenAI and Bedrock use their own clients, so for them you see the request and response as the plugin built and read them. Headers are never recorded, so API keys and gateway client secrets stay out of the log.
Raw logs are kept per chat next to the saved chats, so a reopened chat shows its raw sections again. Open raw log, in the section or in History ▾, opens the whole log in Studio's text editor. Untick Raw to hide the sections and stop recording. Raw logs are deleted with their chat.