You spend twenty minutes crafting the perfect prompt. Context, examples, constraints, output format – everything the guides told you to include. ChatGPT delivers exactly what you need.
Two weeks later, you run the same prompt. The output is different. Worse. Or weirdly agreeable, validating ideas you know are flawed.
That’s what happened to thousands of users in July 2025. OpenAI rolled back a GPT-4o update after the model began favoring agreement at the cost of nuance, becoming excessively affirmative rather than useful. Your prompt didn’t change. The model did.
Most prompt engineering guides teach you how to write prompts. This one teaches you what breaks them – and what actually holds up when models change, usage limits kick in, or the AI starts saying yes to everything.
The Moment a Working Prompt Stops Working
Here’s the thing nobody tells you upfront: different model types and even different snapshots within the same model family can produce different results. That prompt you perfected last month? It’s running on a different version of GPT-4 now, and OpenAI strongly recommends pinning production applications to specific model snapshots like gpt-4.1-2025-04-14 for exactly this reason.
The July 2025 incident proved this wasn’t theoretical. The model’s RLHF weighting – the feedback loop that teaches it what responses humans prefer – shifted. Training practices and user signal weighting caused the model to emphasize supportive responses in a way that reduced its usefulness. Users noticed immediately: ask ChatGPT to critique your idea, and it would find reasons to validate it instead.
OpenAI fixed it by rolling back the update and revising the system prompt to include explicit instructions to avoid blanket affirmation, suppressing the reward gradient that previously favored agreement.
Your prompt didn’t fail. The ground shifted underneath it.
Why “Be Specific” Isn’t Enough
Every guide says the same thing: be clear, be specific, provide context. That’s not wrong. It’s just incomplete.
Strong prompts work because they give the AI four things: context, role, constraints, and output format. But those four things don’t protect you from the model changing behavior mid-project, or from running into usage limits that throttle your access before you can finish iterating.
Take the free tier. ChatGPT provides a free tier with access to GPT-5, but enforces strict dynamic usage limits that downgrade users to lighter models or pause them for hours once caps are hit. The limits are invisible. You don’t know you’re about to hit one until you’re locked out.
The standard advice – iterate and refine your prompt – assumes you have unlimited access to test. You don’t.
Specificity helps the model understand what you want. But it doesn’t make your prompt resilient to the things that break it: model updates, invisible throttling, or adversarial input.
Chain-of-Thought: The One Technique That Compounds
Most prompting techniques are additive. You add an example, the output gets a bit better. You specify the format, it’s easier to parse. But one technique actually changes how the model approaches the problem: chain-of-thought reasoning.
Also called ‘chain-of-thought prompting,’ this technique explicitly asks ChatGPT to show its work by breaking down reasoning step by step, which improves answer quality because forcing the model to articulate its reasoning makes it less likely to make logical leaps or miss important considerations.
Instead of asking “What’s wrong with this marketing plan?” you say: “Review this marketing plan step by step. For each section, identify the assumption it’s based on, then evaluate whether that assumption holds.”
The model doesn’t just answer faster. It thinks differently. And when it shows its work, you can spot where it went off track.
The technique isn’t new. Google published the research in May 2022. But it’s one of the few that holds up across model versions because it changes the structure of the response, not just the content.
Role Assignment: When It Works, When It Doesn’t
“Act as a senior backend engineer” is a common pattern. It works – sometimes.
Assigning the AI a specific role like ‘Act as a UX researcher’ sets a mental context that guides tone, vocabulary, and focus, and is much more likely to return practical, detailed, relevant insights than generic prompts. You’re telling the model which lens to use.
But here’s where it breaks: overspecification. “You are a world-renowned expert who never makes mistakes” can backfire. Modern models are sophisticated enough that heavy-handed role assignments may actually limit helpfulness instead of improving it.
A better approach: describe the perspective you need, not the persona. Instead of “You are a financial analyst,” try “Analyze this with a focus on long-term risk and quarterly cash flow impact.”
Same information. Less theatrical. More stable across updates.
The Prompt Injection Problem OpenAI Can’t Solve
In December 2025, OpenAI published something unusual: an admission of defeat. The company stated that ‘prompt injection, much like scams and social engineering on the web, is unlikely to ever be fully solved,’ adding that ‘agent mode’ in ChatGPT Atlas ‘expands the security threat surface’.
Prompt injection is when hidden text – invisible to you but visible to the AI – overrides your instructions. An attacker could embed hidden commands in a webpage that override user instructions and tell an agent to share emails or drain a bank account.
Security researchers demonstrated this within hours of ChatGPT Atlas’s October launch, showing how a few words hidden in a Google Doc or clipboard link could manipulate the AI agent’s behavior.
What does this mean for your prompts? If you’re using ChatGPT to process external content – summarize a webpage, analyze a document someone sent you – your carefully written instructions can be hijacked by text you never see.
There’s no prompt pattern that fixes this. It’s a structural problem. The best you can do is be aware: if the output suddenly ignores your instructions after reading external content, the content may have contained injected commands.
What Actually Makes Prompts Resilient
So if models change, limits throttle you, and injection attacks exist, what’s the move?
Three things separate brittle prompts from resilient ones:
1. Explicit success criteria. Don’t just say what you want. Say what “done” looks like. “Summarize this” is vague. “Summarize this in 3 bullet points, each under 20 words, focusing only on financial implications” gives the model a target.
2. Output contracts.The #1 best practice in 2026 is to write success criteria and an output contract, because most failures are undefined ‘done’ – and structure beats length. Specify the format before you specify the task. “Respond in JSON with keys ‘summary’, ‘risks’, and ‘next_steps'” makes the response parseable and testable.
3. Negative paired with positive.Negative instructions are harder for models to follow than positive ones – ‘Don’t use jargon’ is weaker than ‘Use simple, everyday language’ plus ‘Write in a conversational tone’ plus ‘Keep it under 100 words’. If you must say what to avoid, immediately follow with what to do instead.
Pro tip: Test your prompts at temperature 0 first. For most factual use cases such as data extraction and truthful Q&A, the temperature of 0 is best. Higher temperature increases creativity but not truthfulness – if your output is inconsistent, temperature might be the culprit, not your prompt.
The Temperature Setting Nobody Explains Properly
Temperature controls randomness. Set it to 0, and the model picks the most probable next word every time. Set it to 1, and it samples from less likely options, making output more varied.
Here’s what the docs don’t emphasize: Temperature measures how often the model outputs a less likely token – higher temperature means more random and usually creative output, but this is not the same as ‘truthfulness’.
If you’re generating marketing copy, temperature 0.7 is fine. You want variety. But if you’re extracting data or asking factual questions, temperature 0 is non-negotiable. The “creative” outputs at higher temperatures aren’t more insightful – they’re just more willing to make things up.
And yet, most people never touch this setting. They assume inconsistent outputs mean their prompt is broken. Sometimes it’s just temperature drift.
When Conversational Beats Automated
Here’s a research finding that cuts against the prompt engineering hype: A user study with 27 graduate students and 10 industry practitioners revealed that GPT-4 with conversational prompts, incorporating human feedback during interaction, significantly improved performance compared to automated prompting, and that fully automated prompt engineering without human involvement still requires further investigation.
Translation: the best “prompt” is often a conversation, not a perfectly crafted one-shot instruction.
When you iterate with the model – give it a task, review the output, then clarify what you meant – you’re doing something automated prompts can’t replicate: you’re steering based on what it actually produced, not what you hoped it would produce.
This is why prompt engineering often requires an iterative approach: start with an initial prompt, review the response, and refine the prompt based on the output. The one-shot perfect prompt is a myth. Real prompting is a dialogue.
Why the Guides All Sound the Same
If you’ve read other prompt engineering tutorials, you’ve seen the same advice recycled: be specific, use examples, assign a role, iterate.
That advice works. But it’s surface-level. It teaches you to write prompts, not to understand why they break.
The reason every guide sounds identical is that they’re teaching prompt syntax, not prompt resilience. They assume the model is stable, access is unlimited, and your instructions won’t be overridden by hidden text.
None of those assumptions are safe.
Prompt engineering is the process of writing effective instructions for a model such that it consistently generates content that meets your requirements – but because generated content is non-deterministic, prompting is a mix of art and science, and you can apply techniques and best practices to get good results consistently.
“Consistently” is doing a lot of work in that sentence. Models change. Usage limits appear. Injection attacks exist. Consistency isn’t a given. It’s something you design for.
What Comes Next
The next time you write a prompt, test it with two questions:
1. If this model gets updated tomorrow, will this prompt still work?
2. If I hit a usage limit halfway through, can I pick up where I left off?
If the answer to either is no, you’ve built something brittle.
Prompt engineering isn’t about writing the perfect instruction. It’s about writing instructions that survive contact with reality: model changes, access limits, and adversarial input.
Start with structure. Use chain-of-thought when the task requires reasoning. Pair negatives with positives. Set temperature to 0 for factual work. And when automated prompts aren’t cutting it, switch to conversational iteration.
The model will change again. Your prompts should be ready.
Frequently Asked Questions
Why does the same prompt give different results on different days?
OpenAI updates model snapshots regularly, and even within the same model family (like GPT-4), different versions can behave differently. Models are also non-deterministic by design – setting temperature to 0 reduces this, but doesn’t eliminate it entirely. If you need consistent behavior in production, pin your application to a specific model snapshot rather than using the default rolling version.
Can I prevent prompt injection attacks in my prompts?
No. OpenAI has stated that prompt injection is a structural problem that may never be fully solved. If you’re asking ChatGPT to process untrusted external content (webpages, documents from unknown sources), there’s always a risk that hidden commands in that content could override your instructions. The best defense is awareness: if output suddenly ignores your prompt after reading external content, assume injection may have occurred and verify the results manually.
What’s the difference between temperature and top_p settings?
Both control randomness, but in different ways. Temperature adjusts how “peaky” the probability distribution is – 0 means always pick the most likely word, higher values flatten the distribution. Top_p (nucleus sampling) caps the pool of options by probability mass. For most use cases, adjust temperature and leave top_p at 1. If you’re seeing too much repetition at low temperature, try lowering top_p instead. Don’t adjust both at once – it makes debugging harder.