Second opinion did not run
Why flux_verify did nothing: tool-calling and agent-loop turns are skipped, and so are multi-turn and pinned requests. Plus the 413 and 503 answers, and missing receipt fields.
Each entry gives the symptom, the cause and the fix. The guide is Second opinion.
No flux object and no x-flux-stamp header
Symptom. You sent flux_verify: true and got a normal answer: no flux object in the body, no x-flux-stamp or x-flux-attempts headers, and no extra charge.
Cause. The request was not eligible, so Flux served the normal flux-auto answer and skipped the check without an error. It skips:
- Tool-calling turns: any request with
tools. This is the usual cause inside coding agents, where almost every turn carries tools. - Agent-loop turns: a request an outer agent loop has marked as its own.
- Multi-turn conversations, except an "are you sure?" follow-up to the previous answer.
- Any model other than
flux-auto, includingflux-fast,flux-standard,flux-reasoningand pinned models.
Fix. Send the question as its own single-turn flux-auto request, with no tools, from your own code. For example, let your agent draft the answer, then send the final question once, on its own, with flux_verify: true. The code tabs on Second opinion show the shape.
The flag is set but seems ignored
Cause. The flag is in the wrong place, or not a true value.
Fix. Use one of the three places Flux reads: a top-level "flux_verify": true, "metadata": { "flux_verify": true }, or the header X-Flux-Verify: true. A string such as "true" or "1" works too.
413
Cause. The input alone would cost more than the per-request ceiling, so there is no room to check the answer.
Fix. Shorten the input, or drop flux_verify for this request.
503
Cause. Too many checks are running at once.
Fix. Retry after the delay in the Retry-After header, or drop flux_verify to get a normal answer now.
stamp is missing but other receipt fields are there
Cause. The check ran, and no attempt passed every check within the budget. You got the best attempt.
Fix. Nothing is broken. elevated_reason says the check was best effort, and checks_passed out of checks_total shows how close it came. Treat the answer with care, or rephrase the question more precisely.
stamp says checked, but the answer is wrong
Cause. checked means the answer passed every check in the set for that kind of task. It is not a promise that the answer is true.
Fix. Keep your own checks for anything that matters, such as running the code or testing the SQL.