Skip to main content
A failure tells you more than a pass, but only if you read the right file. The order below goes from cheapest to most detailed.

1. Which required check failed

result.json names it, and the CLI prints it:
The detail on each check carries the numbers behind the verdict — 0 of 2 moved to USR-003 tells you the agent did nothing, while 1 of 2 moved tells you it started and stopped.

2. Did the world change at all?

An empty diff on a state-changing task is the single most diagnostic signal in Silo. The agent read but never wrote. It may have described the work convincingly in its output — that is exactly the failure Silo exists to catch. If the diff is non-empty but the task still failed, the agent acted on the wrong thing. Compare the ids it touched against the ones the task was about.

3. How did the run end?

run.json
agent_error with 0 tool calls and a near-zero duration almost always means the agent never reached its model — a model server that is not running, or a missing API key. A genuine model failure shows up after some work, as tool errors or a timeout.

4. Read the trace

trace.jsonl is the record of what actually happened, in order.

Common failures

A runaway loop

The trace shows the same call ten times. The agent is not incorporating results into its next decision. Cap it low while debugging — --max-tool-calls 10 turns a two-minute timeout into an instant, readable failure.

The agent keeps sending bad arguments

Silo already names the correct parameter. If the model repeats the mistake, the problem is usually your loop — check that you are feeding result.output back into the conversation rather than discarding errors.

The right answer, graded wrong

Check what the verifier expected:
Rounding, currency symbols and thousands separators are the usual culprits. Parse generously and compare with a tolerance.

A task nothing can solve

If no agent can pass, the environment may be at fault rather than the agent. Ask:
  • Is the information reachable? If the task needs to know which users are inactive and no tool reports it, the task is unsolvable no matter how good the model is. Missing tools look like agent failures.
  • Is the answer unique? If two reps tie for “most stalled deals”, a correct agent can still fail.
  • Does the instruction contain what a person would need? Names, ids, and any parameter that is a decision rather than a deduction.
Run the task with a hand-written agent that does exactly the right thing. If that fails, the environment is wrong.

Is it the agent or is it chance?

One failure proves nothing about a non-deterministic agent.
Best 1.00 means the task is solvable and your agent can solve it — this is a reliability problem. If every run sits at the same low score, it is a capability or environment problem, and repeating it will not tell you more.

Before blaming the agent

An environment that does not compile can still run, because type-only imports are erased before execution. If validation fails, fix that first — the run you are debugging may be meaningless.