Nothing changes on disk until you say so.

Chat cannot write files by itself. Every edit and every command an agent proposes goes through the same permission gate before it touches your machine, and for file operations that gate shows you a real diff, not a description of one.

ML.ai

Found the refresh path. Updating the session helper now.

Working · 3 operations completed
  • Fs.read app/auth/session.ts
  • Fs.read app/auth/refresh.ts
  • Fs.grep app/auth
  • Fs.write app/auth/session.ts
Permission required
AllowAlwaysDeny
medium

Ask ML.ai... @ to delegate

BuildML.ai StandardAsk
Awaiting approval

How it works

Every edit and command routes through one gate: Allow, Always, or Deny. A native diff opens before you decide, and a denial is passed back to the model with its reason.

01

See the diff before you approve

For edit and write operations, a native VS Code diff opens before the permission card is even answered. You approve a change you have looked at, not a summary of it.

02

Allow, Always, or Deny

Allow permits this one occurrence. Always saves a rule so matching operations stop asking from now on. Deny rejects it, and that specific path is not retried through another tool.

03

A denial is informative, not silent

When you deny an operation, the reason goes back to the model, letting it retry with something smaller or different instead of attempting the same denied thing again.

04

Revert is a reviewed operation, not an undo button

Requesting a revert stages it first, binds the preview to the snapshot taken at the time of the original change, and won’t write anything back to disk until you have opened that diff.

The Always risk, and how to check it

    1

    You’re working in a scratch folder

    Not a Git repository, just a loose folder you opened to try something. ML.ai proposes a write, and a permission card appears.

    2

    You click Always

    In a non-git workspace, that rule is saved globally: across every folder you open on that machine, not just this one. A single click here can silently stop ML.ai from ever prompting again anywhere else non-git.

    3

    Approvals stop appearing, elsewhere

    Days later, in an unrelated non-git folder, an operation that should have prompted just runs. This is that same global rule firing again, not a bug.

    4

    You check the saved-permissions list

    Every saved rule appears there individually and can be revoked on its own. This list is hidden entirely when there are none, so it only shows up once you have something to review.

ML.ai Code
scratch-folder (not a Git repository)
Permission required
AllowAlwaysDeny

This rule saves globally, across every non-git folder on this machine, not just this one.

Review saved rules individually, anytime

Worth knowing

  • Shell commands and MCP tool calls show their command or input instead of a diff, since ML.ai cannot know in advance what an arbitrary command or third-party tool will actually change on disk.

  • In a workspace that is not a Git repository, an Always rule is saved globally, across every non-git folder you open on that machine, not just the current one. Every saved rule can be reviewed and revoked individually from the saved-permissions list.

  • Revert only ever touches file contents. It never rewrites the conversation transcript itself.

Questions worth asking

Related

Command safety classifier

Every shell command is lexed and classified by effect before it runs. Reads never prompt, writes and higher-risk effects do, and a short list of absolute refusals holds regardless of mode.

Read more

Agents

Choose a subagent for the composer and it stays selected until you remove or replace it. Each one is built for a different kind of work, and only general carries out changes end to end.

Read more

Try ML.ai Code today, or talk to us about what is next.

Install the editor agent on your own machine, or book a call to talk through your team's workloads.