Skip to content

Detectors

Each detector is an independent, individually toggleable plugin that reads a normalized session and emits zero or more findings — a named waste pattern with severity, wasted tokens, wasted dollars, an evidence trail, and a prescribed fix. Third-party detectors register the same way the built-in ones do, via a wattage.detectors entry point (see CONTRIBUTING.md for how to write one).

Detector Detects Quality risk
prefix_churn Re-sent context not being cached None
cache_gap Caching attempted but under-redeemed by reads None
verbosity Output over-generation with no cap Low
redundant_tool_calls The same tool call repeated pointlessly None
nonconvergence Agent loops thrashing/oscillating/stalling without progress None
retrieval_thrash Repeated retrieval yielding no new evidence Review
model_mismatch A premium model used for a step a cheaper one would handle Review
reasoning_overspend Excess reasoning tokens on a simple step Review

Quality risk, explained

Every finding is tagged with a quality risk tier:

  • None — the fix is purely a billing/caching change; it can't affect what the model actually sees or produces.
  • Low — the fix nudges output format/length; a small, usually-safe behavior change.
  • Review — the fix could plausibly change output quality (a cheaper model, less reasoning, less retrieval). These findings always show up in the report so you know about them, but they never count toward the Token Efficiency score unless you supply a --quality quality.json map showing the fix is actually safe. That's a hard rule, not a default that can drift: a cheap-but-wrong agent can't score well just because nothing was measured.

A shared limitation, stated once

Several detectors approximate signals that would be exact if message content were captured (prompt diffing, precise per-call token attribution) — most production traces don't capture full message content for privacy/size reasons, so Wattage falls back to token-count-based heuristics with explicit guards against the most obvious false positives. Each detector's page names its specific approximation and the guard that keeps it honest, rather than glossing over it.