ML.ai

Approve the work before it starts

ML.ai proposes a task list for you to approve, then holds each turn to the files it said it would change. Task lists cover what gets done, and scope declaration covers where.

Plan

Pick the tasks to do

3 tasks

The rest stay visible as cancelled

Scope

This edit reaches files outside the declared scope

Declared

src/checkout/PayButton.tsx

src/checkout/charge.ts

New

src/checkout/retry.ts

Asked once per turn

Plan

Pick the tasks to do

3 tasks

The rest stay visible as cancelled

Who task lists and scope are for

Developers and teams who want to approve what an AI coding agent will do, and know which files it may touch, before any code changes.

  • Developers who want a plan first

    See the proposed tasks and their priority, then pick which ones the agent does.

  • Teams with sensitive code paths

    Keep each turn to the files it declared, and get asked before an edit reaches anywhere else.

  • Anyone tired of surprise edits

    A turn asks once on the Scope card, not once per file, and verification flags anything that changed some other way.

How it works

Each turn runs in one order. ML.ai proposes tasks, you pick them, the agent declares its files, and verification compares what changed with that scope.

Approve the task list before any file changes

A Plan card shows the proposed tasks and their priority, and you pick which ones to do. Pick none and no files change.

Declare the files a turn will change

A turn names its files or folders before it edits, runs a command that changes files, or delegates to a subagent that can. A declared folder covers everything inside it.

State what will be true before the first edit

For code changes, the agent writes acceptance criteria first. Each one can be checked on its own, and verification reads them at the end of the turn.

Check the changed files against the scope

Verification compares the files that changed with the declared scope and flags any file that changed some other way, such as through a shell command.

Rules worth knowing

The details behind approval, scope and verification.

  • Approval lasts one turn

    If the list changes during a turn, you’re asked only about tasks you haven’t seen. Status updates never ask again and never change what the agent may edit.

  • Declined tasks stay declined

    A task you declined stays declined, even if the agent sends it again. A reworded task keeps its approval when it reads as a rewrite of one that left the list.

  • Read-only work still declares

    An empty list doesn’t count as a declaration. When a turn only investigates, the agent says so, for example “none, investigation only”.

  • The limit is what was declared

    There is no fixed file count. A 30-file migration that declares 30 files runs without interruption, while a one-line fix that spreads to a second file stops and asks.

  • Some files are exempt from the check

    Lockfiles, build output and files your request names are exempt. A flagged file doesn’t mean the change was wrong, so the agent declares it for your approval and doesn’t undo the work.

  • Scope is checked before permissions

    Scope sets where a turn may work, and permissions decide whether each action runs. The scope check comes first, so you aren’t asked to approve an action that would be refused anyway.

Continue or keep to the declared files

Continue

The new files join the scope, and the rest of the turn runs without asking again.

Keep to what was declared

Those files are refused. The agent finishes the declared work and says what it left undone. Dismissing the card does the same.

How a turn runs, step by step

The Plan card and the Scope card are the two points where you decide.

1The agent proposes tasks and filesBefore changing code, ML.ai writes a task list and names the files it expects to change.
2You pick the tasks on the Plan cardThe agent does only the picked tasks. Pick none and no files change.
3Edits outside the scope stop and askIf an edit reaches outside the declared scope, a Scope card asks once whether to continue.
4Verification compares changes with the scopeAt the end of the turn, files that changed some other way, such as through a shell command, are flagged.

When a turn resumes or an agent skips the scope step

Each turn normally declares its own scope and gets its own approval. Resumed work and a few agents follow different rules.

A turn is cut off by an error, such as a dropped connection

What happens

The next turn keeps its scope and approvals, so “continue” doesn’t ask again. This lasts one turn.

You select Stop

What happens

The next turn declares a new scope. Your approved and declined tasks are kept, so you see only new work.

general runs as a delegated subagent

What happens

It doesn’t declare a scope of its own, because it has no task list. The agent that delegated the work must have declared one.

planSubAgent runs

What happens

It doesn’t declare a scope, because it can write only its plan file.

explore or architect runs

What happens

Neither needs a scope, because neither can edit files.

Where scope declaration has limits

Three things to know before you rely on it.

Shell commands changing other files

Shell commands need a declared scope, but they are not checked file by file as they run, so a command can change a file outside the scope.

How ML.ai handles it

Verification at the end of the turn flags any file that changed some other way. The agent declares it for your approval and does not undo the work.

A task you declined coming back

The agent can send a task again after you have declined it.

How ML.ai handles it

Declined tasks stay declined, even if the agent sends them again, so you are not asked twice.

A scope that is too narrow

A one-line fix can spread to a second file the agent did not declare.

How ML.ai handles it

The turn stops and shows a Scope card once, naming the declared files and the new ones, instead of asking for every file.

ML.ai
New sessionAutomationsReview

Sessions

Clean the workspace and rebuildRotate refresh tokens on use1hAdd rate limiting to /api/search6mUpgrade to React 192dFlaky checkout test3d

The agent proposes

$git statusRead&&rm -rf ~Irreversible deletion

ReadPromptRefuse

Earlier in this session

Command safety

How each shell command is classified by effect before it reaches a permission prompt.

ML.ai

Explorer

src/auth/registration.tssession.tsvalidate.tsapi/search.tstests/registration.test.tssession.test.tspackage.jsontsconfig.json

Fix the registration validation bug and run the relevant tests.

plan.md

Fix registration validation

  1. 1.Reproduce: an empty email passes signupSchema
  2. 2.Tighten email and password rules in src/auth/validate.ts
  3. 3.Add empty, whitespace and short password cases to tests
  4. 4.Run pnpm test registration
Edit refused in Plan modeInvestigate and describe the fix instead: switch to Build to apply it.

Ask ML.ai...

Plan mode

Get a plan first with edit and write tools denied, then switch to Build and approve changes one diff at a time.

FAQs

What happens if I pick only some of the tasks?

The agent does only those tasks. The rest stay visible as cancelled, and if an approved task turns out to need one of them, the agent stops and asks.

How often does the Scope card ask?

Once per turn, the first time an edit reaches outside the declared scope. The card names the declared files and the new ones together, so you answer once instead of once per file.

Which actions need a declared scope?

Editing files, running a command that changes files, and delegating to a subagent that can edit. Read-only work still declares, for example “none, investigation only”, because an empty list doesn’t count as a declaration.

Do shell commands get checked against the scope?

A command needs a declared scope before it runs, but it isn’t checked file by file while it runs. Verification at the end of the turn flags any file it changed outside the scope, and the agent declares that file for your approval.

Which agents skip the scope step?

general, when another agent delegates work to it, doesn’t declare a scope of its own, so the delegating agent must have declared one. planSubAgent can write only its plan file, and explore and architect can’t edit files, so none of them need a scope.

Know what will change before it changes

Approve the task list, see the files a turn will touch, and decide when an edit goes further.