For the longest time, I believed there was no such thing as a bad prompt. When you ask AI to do something and get an unexpected result, that result gives you feedback. You may have left an important constraint implicit or used a word such as simple that you and the model interpreted differently. Change the prompt and try again. Learn from what happened.
Working with AI forces us to make explicit countless assumptions about what good looks like. We normally carry those assumptions in our heads, where other people can infer them from context or ask questions. AI exposes them by following what we said rather than what we meant. Calling the prompt bad always seemed too easy because the failure revealed what the instruction left unclear.
I still believe that a bad result can teach you something useful about your instruction. When we call a prompt bad, we usually mean that it produces an undesired result. That definition however overlooks prompts that produce the desired result only some of the time. Those prompts are even worse because a successful run can make them look dependable.
Getting the right result once proves very little
Imagine that you write a prompt and get exactly what you wanted. You run it again, and the result is even better. Would you ship it? Run it a few more times first, because the next result may be mediocre while another completely misses the point.
What is the quality of that prompt? You have established that it can produce an excellent result. Yet, you have no evidence yet that it works reliably. If you need the instruction to work tomorrow and thousands of times after that, one excellent run tells you remarkably little.
Now compare it with another prompt that you also run five times. Every result is good, although none is as impressive as the best result from the first prompt. Which one would you choose for a product? I’d choose the second one because I can depend on it.
Judge the prompt across runs
We usually judge prompts along one dimension: did I get the result I wanted? An undesired result leads us to call the prompt bad, inspect why it failed and improve the instruction. A desired result gives us no reason to look further, which allows unreliable prompts to pass as good ones.
Prompt quality has another dimension: will I get the result I want again? That question matters because an occasional success can hide an underspecified instruction. You run it once and like what you see, so you conclude that you wrote a good prompt. All you have proved is that one possible execution happened to satisfy your intent.
A consistently wrong result is at least understandable. The model interprets your instruction in a particular way, so you can compare its interpretation with your intent and clarify the instruction. Occasional success is more dangerous because it gives you false confidence. To learn whether the prompt works, you need to run it again, and again.
Reliability is part of prompt quality
A good prompt reliably produces the desired outcome. Reliability belongs in the definition because prompts are instructions that we expect to reuse. An instruction that works only when the model makes several fortunate choices leaves too much of the outcome to chance.
This changes how you improve prompts. Imagine that five runs produce three good results, one mediocre result and one unusable result. After you clarify the instruction, all five results are good. The best new result may be less impressive than the best one you got before, yet the prompt has improved substantially because you can now depend on it.
For agents, that difference matters enormously. An agent that occasionally finds an ingenious solution but frequently gets lost may be less useful than one that consistently produces an adequate solution. Capability matters, and dependability determines how safely you can use that capability without watching every step.
Variation can still produce dependable outcomes
Language models are nondeterministic, and agentic tasks often have many legitimate solutions. If you ask an agent to build a website five times, you probably want five different websites. Reliable outputs can differ while each one still satisfies your intent.
Suppose repeated runs produce wildly different outcomes. You clarify the goal and spell out the constraints. You also define what success looks like. The solutions still differ, but now you would happily use each one. You preserved the model’s freedom to choose a path while ruling out paths that lead somewhere you never wanted to go.
Some unpredictability comes from the model, while some comes from decisions we leave unspecified. The model fills those gaps differently on each run, which makes an underspecified prompt look creative when it is actually unreliable. Repeated execution exposes those hidden decisions and shows you where the instruction needs to be clearer.
Test the prompt, not the luckiest output
We spend a lot of time inspecting individual AI outputs. We write a prompt, run it, read the result, then adjust the instruction. That loop is useful while developing a prompt, but eventually we need to evaluate the kind of results the instruction produces across repeated runs.
You can start without sophisticated statistics. Run an important instruction several times and ask whether every result is acceptable. Look for failure patterns and clarify the choices that caused them. Then run the instruction again. The goal is dependable quality with room for legitimate variation.
A bad result may come from a good instruction, while a great result may come from luck. One great result shows that your prompt can work. Reliably getting good results shows that it does work. Turns out there are bad prompts after all.