Automatic checks

An agent saying “done” is not proof. After a bigger change, Syntic Code has a second, read-only agent look at what was changed and compare it with what you asked for. The result is one line at the end of the turn, so you know how much to trust the work before you look at it yourself.

The Checked: line

Checked: PASS — the retry now backs off and the two new tests cover it
VerdictMeans
PASSThe change does what you asked, and the evidence (tests run, code read) backs it up.
PARTIALSome of it is done or some of it could not be confirmed. The summary says what is missing.
FAILThe change does not do what you asked, or breaks something. The summary says why.
UNVERIFIEDThe check could not reach a verdict: it errored, gave no verdict, or ran out of time. The turn still ends normally.

When the check does not run, you may still see a simpler line, based on whether a test or other command ran after the last edit:

LineMeans
Verified: ran <command>A check command ran after the last change and passed.
Checked: <command> failed, so the change is not working yetThe last check command failed.
Not verified: no tests or commands were run after the last changeNothing was run to prove the change.

When it runs

The check runs at the end of a turn in your main conversation when any of these is true:

  • the turn wrote three or more files;
  • it changed a backend or configuration file: for example .toml, .yaml, .env, .sql, .tf, .proto files, or code under folders such as api/, server/, db/, migrations/, infra/, deploy/, k8s/ or .github/;
  • your request asked for the work to be finished (“finish the migration”, “tell me when it’s done”).

It does not run in plan mode, inside sub-agents, for turns that changed nothing, or when you turn it off.

What the checker sees and can do

The checker is the built-in verification agent. It gets your request, the git diff of the files the turn wrote, and the commands the turn ran. It can read, search and look things up (Read, Glob, Grep, web tools) but cannot edit, write or run commands, so a check never changes your project.

Turn it off or give it more time

{ "verification": { "enabled": true, "maxSeconds": 300 } }
SettingEffect
"verification": falseNo end-of-turn check.
"verification": { "enabled": true, "maxSeconds": n }On, with a time limit of n seconds (5–900, default 120).
SYNTIC_TURN_VERIFIER=0Off for this process only.

In scripts

With -p --output-format json, the result carries a verification object: verified (true or false) and line (the line shown above), plus verdict, summary, evidence, trigger, files, checks and duration_ms when the checker ran. See Scripting & CI.

Sub-agent reports are checked too

When a sub-agent finishes and reports that it created files, edited them, ran commands or got tests passing, the main agent checks those claims against what really happened: the sub-agent’s own tool calls, the files on disk and git status. The report then ends with a verdict such as:

[verification: PASS — 1 file claim, 1 command claim checked]

PARTIAL or UNVERIFIED means some claims could not be matched to evidence. Reports with nothing to check (an answer, a plan) get no verdict.

Want proof that the software actually runs, not just that the code looks right? Use /verify: it builds and runs the project, exercises the change like a user would, and reports what it saw.