Watch enough coding agents fail and the failures stop looking varied. Nearly all of them reduce to three problems, and the tools that feel good to use are the ones that have taken a real position on each.

Context selection

The context window is not the constraint people assume it is. The constraint is relevance. An agent that dumps a whole repository into the prompt performs worse than one that reads five files it chose well.

The best agents are aggressive about what they refuse to read.

Verification

An agent that cannot check its own work is a very fast way to produce plausible diffs. The tools that have earned trust are the ones that run the tests, read the failure, and iterate before showing you anything.

  • Run the test suite, not just the type checker
  • Read the actual error, not the exit code
  • Prefer a smaller verified change to a larger unverified one

Knowing when to stop

The hardest of the three. An agent that keeps going after it has lost the plot burns tokens and trust at the same rate. Stopping early and saying "I could not do this" is a feature, and almost nobody ships it well.

For more on evaluation harnesses, see eval-driven development.