ML.ai

Scanner findings in, tested patches out

Point ML.ai at a scanner report. It checks who uses the code, patches each finding, tests the fix, and tells you what only you can do.

Who uses ML.ai for security fixes

Developers with a scanner report and a backlog of small, careful patches.

  • Teams with a scanner backlog

    Findings nobody has had time to patch.

  • Anyone who committed a secret

    A live key that has to leave the code.

  • Reviewers who want proof

    A patch tested against the exploit.

A finding is fixed when the exploit stops working

A patch that reads right can still be wrong.

A chat window sees one pasted snippet

It never sees the full report, the rest of the file, or who else calls the code.

It checks who uses the code

ML.ai read the report, opened both files, and searched for callers of stripeKey and findUserByName. None outside those files.

It tests the fix

It ran Node with an injection string as the name. The string went through as a bound parameter.

It says what a patch cannot fix

A committed key stays leaked. ML.ai told you to rotate it in Stripe and set STRIPE_API_KEY.

Fixing findings by hand versus handing them off

By hand

You patch the line the report names and hope nothing else called it. The secret is still in history.

With ML.ai

You point at the report. ML.ai checks callers, patches, tests, and flags what is left for you.

Which agent actually does this

Build · Read report · Search callers · Patch · Test

Patches the findings and tests them

Reads the report and the code, searches for callers, patches each finding, and runs the code to check.

explore · Read · Search · Write

Optional: see the blast radius

Read-only. Ask where a function or secret is used before anything changes.

From scanner report to tested patch

A finding names a line. The safe fix depends on who else uses it.

1Point it at the reportIn the run, a Semgrep-format text file with two findings. ML.ai reads the report; it does not run the scanner.
2It reads the code and its callersIt opens each flagged file and searches for anything that uses what it will change.
3It patches each findingIt lists the work, asks which parts to do, and writes each patch as a diff.
4It tests and flags the restIt runs the exploit string against the fix and tells you to rotate the leaked key.

Where security fixes go wrong

Three common failures, and what ML.ai did about each in a real run.

A fix that breaks callers

Changing a function to close a finding breaks code you forgot about.

How ML.ai handles it

ML.ai searched for callers of findUserByName and stripeKey first. None outside the two files.

A patch that only looks right

The diff reads like a fix, and nobody tried the exploit.

How ML.ai handles it

ML.ai ran an injection string through the patched query. It went through as a bound parameter.

A leaked secret marked as fixed

The key leaves the code, the ticket closes, and the key still works.

How ML.ai handles it

ML.ai said to treat the key as compromised and rotate it in Stripe, which it cannot do from the repo.

Where this stops

What to expect, so nothing surprises you.

01
01

Secret rotation is yours

ML.ai changes the code and tells you to rotate the key. It cannot reach Stripe.

02
02

It stops at undeclared files

Editing a file outside its stated list needs your OK.

03
03

Check the blast radius first

Use @explore, which is read-only, to see where a function or secret is used before patching.

uuid 3.4.0 to 14.0.3

  • npm install uuid@latest14.0.3
  • require("uuid") in this CJS projectv4 works
  • npm test2 passed
ids.js+1 −1
1-const uuidv4 = require('uuid/v4')
1+const { v4: uuidv4 } = require('uuid')

Upgrade dependencies

ML.ai bumps a package, fixes the code the new version breaks, and runs your tests.

Root cause in session.ts

The store returns null before the session write finishes, so the middleware rejects a valid token.

session.ts+2 −1
40export async function getSession(id) {
41- const s = store.get(id)
41+ const s = await store.get(id)
42+ if (!s) throw new SessionNotFound(id)
AllowAlwaysDeny

Debug

Give ML.ai a failing test or a stack trace. It finds the actual cause and proposes a fix you approve.

FAQs

What does ML.ai do with scanner output?

It reads the report you point it at and works each finding: open the code, check callers, patch, test. It does not run the scanner.

Does it check that the fix works?

Yes. It ran the patched query with an injection string and showed it bound as a parameter.

What about a committed secret?

It moves the secret out of the code and tells you to rotate it. Removing it from source does not un-leak it.

Where does my code go?

Per ML.ai’s docs, prompts, selected file content and tool results go to the ML.ai model service; the engine runs locally. Check your organization’s policies for confidential code.

Try ML.ai 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