ML.ai CodeConcepts

Conversations

How messages, tool activity, todo lists, and session history work in the ML.ai panel.

Message structure

Each assistant message carries two streams that render together: the assistant's text, and a separately-streamed record of tool activity (file reads, edits, commands run). Both are attached to the same message rather than shown as disconnected log lines.

The Working block

Tool activity renders as a "Working" block:

  • A spinner shows while a step is running; a check mark replaces it when the step finishes.
  • A failed step stays expanded rather than collapsing away.
  • Any row can be expanded to see its output.
  • Once a group of steps completes, it auto-collapses to keep the transcript scannable.
ML.ai Code
Working · 10 operations completed
  • Fs.read app/robots.js
  • Fs.read app/sitemap.js
  • Fs.glob app/llms.txt/**/*
  • Fs.read .env.local
  • Permission required
    AllowAlwaysDeny
  • Fs.read .env.example
Ask

Fix the refresh path. Show me the diff before writing.

BuildML.ai StandardAsk
VS Code Cursor
A Working block mid-run, reads complete and a write gated on approval

Todo lists

For multi-step work, a todo list renders above the composer, attached to the message that produced it.

Todo lists refresh at turn boundaries, not continuously. Treat the list as a plan record from the last completed turn, not a live progress bar for the turn in progress.

Copying content

Copy controls are available on full responses, on your own messages, on individual tool call details, and on any expanded output or error text.

Clickable file paths

Any file path in a response, whether written as a Markdown link or as inline code like src/foo.ts:42, opens that file at that line when clicked.

@ in the composer is for selecting subagents, not for referencing files. Typing @ does not open a file picker.

Session history

Sessions are stored per workspace and persist across restarts. You can switch between sessions, create new ones, delete old ones, and see which sessions have runs currently in progress. Sessions are titled from their content, not from a timestamp; this includes sessions created by delegated background runs.

If you're upgrading from a version of ML.ai that stored history per Git branch, a one-time recovery step migrates that history into the new per-workspace scheme the first time you open the panel.