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| Verdict | Means |
|---|---|
PASS | The change does what you asked, and the evidence (tests run, code read) backs it up. |
PARTIAL | Some of it is done or some of it could not be confirmed. The summary says what is missing. |
FAIL | The change does not do what you asked, or breaks something. The summary says why. |
UNVERIFIED | The 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:
| Line | Means |
|---|---|
Verified: ran <command> | A check command ran after the last change and passed. |
Checked: <command> failed, so the change is not working yet | The last check command failed. |
Not verified: no tests or commands were run after the last change | Nothing 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,.protofiles, or code under folders such asapi/,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 } }| Setting | Effect |
|---|---|
"verification": false | No end-of-turn check. |
"verification": { "enabled": true, "maxSeconds": n } | On, with a time limit of n seconds (5–900, default 120). |
SYNTIC_TURN_VERIFIER=0 | Off 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.