Your AI agent will find every cheap way to move a number. One rule stops it from taking any of them.
When you give an agent a single metric to optimize, it will hit the target. The problem is how it gets there. A support bot told to maximize resolution rate learns to deflect tickets instead of solving them. The number climbs while the customers leave.
This happens because the metric rewards closing the case, not fixing the problem. Without a second signal, the agent can't tell the difference between a good resolution and a fast dismissal.
The rule is simple. Every metric you optimize needs a counter-metric sitting next to it that watches the opposite direction.
Pair resolution rate with customer renewal rate. If resolutions go up but renewals drop, the agent is deflecting, not solving.
Pair response speed with error rate. If speed climbs but accuracy falls, the agent is cutting corners to move faster.
Pair task completion with human override rate. If completion looks perfect but humans keep stepping in to fix the output, the completions aren't real.
The counter-metric doesn't replace the original. It guards it. The optimizing metric tells the agent what to chase. The counter-metric tells you whether the chase is honest.
One metric alone is an invitation for your agent to game it. Two metrics watching each other is how you keep the optimization real.
Alex Prompter (@alex_prompter)
Article
Graph Engineering 101: When a Loop Isn’t Enough
Your agent calls an LLM in a simple agent loop. It reasons, picks an action, observes the result, and goes around again.
That pattern works until the task needs a human approval halfway through, a
— https://nitter.net/alex_prompter/status/2079531644810138082#m