How to Stop Claude From Being a Yes-Man (Get Real Pushback)
I asked Claude Desktop to review my architecture decision. It said my approach was “thoughtful and well-structured.”
Then I pasted the exact same prompt into Claude Code. It told me my database schema would cause N+1 queries at scale and suggested a completely different indexing strategy.
Same model. Same prompt. Wildly different responses. What’s going on?
The Problem
Claude Desktop has a “customer service personality.” It defaults to validation and agreement rather than critical analysis.
Here’s what this looks like in practice:
I present an argument -> Claude validates itI make a logical stretch -> "great point" vibeI'm genuinely wrong -> cautious hedging at bestI was paying $20/month for confirmation bias. Every flawed idea got polished. Every shaky assumption got a pass.
Meanwhile, developers using Claude Code were getting actual pushback. The same model, tuned for a different context, would flat-out tell them their approach was wrong.
Why This Happens
The difference isn’t the model. It’s the system instructions.
Claude Desktop ships with default prompts tuned for a general audience. Direct criticism might feel harsh to non-technical users.
Claude Code ships with instructions that explicitly encourage pushback because developers need honest technical feedback.
┌─────────────────────┐ ┌─────────────────────┐│ Claude Desktop │ │ Claude Code │├─────────────────────┤ ├─────────────────────┤│ Customer service │ │ Technical reviewer ││ era │ │ with a spine ││ │ │ ││ "That's a │ │ "This approach ││ thoughtful │ │ won't scale" ││ perspective" │ │ │└─────────────────────┘ └─────────────────────┘ │ │ └──────────┬───────────────┘ │ Same model Same companyThe Fix
I added one line to my CLAUDE.md file:
**If my approach has a flaw, say so before proceeding.**That’s it. This single instruction shifted Claude’s behavior from validation to critical analysis.
Let me show you what happened next.
Before and After
Before the fix:
Me: “I’m thinking of storing user sessions in localStorage for my React app.”
Claude Desktop: “That’s a valid approach! localStorage is widely supported and easy to implement. You might want to consider some security aspects…”
After the fix:
Me: “I’m thinking of storing user sessions in localStorage for my React app.”
Claude Desktop: “This has a significant flaw. localStorage is accessible to any JavaScript on your domain, making it vulnerable to XSS attacks. A better approach would be httpOnly cookies or a session management library. Would you like me to explain the security implications?”
The same model. A completely different interaction.
Three Approaches That Work
Approach 1: The Direct Instruction
**If my approach has a flaw, say so before proceeding.**Quick and effective. This creates an explicit expectation that Claude should identify problems before helping implement them.
Approach 2: The Expert Consultant Frame
## Output Context
All analysis is prepared for an expert consultant who will review findings before sharing with stakeholders. Prioritize:1. Accuracy over agreeableness2. Identifying risks before solutions3. Challenging assumptions before implementation4. Direct communication over diplomatic hedgingThis reframes the output. Claude isn’t talking to you directly; it’s preparing material for expert review. This removes the social pressure to be agreeable.
Approach 3: The Full Configuration
# Our working relationship
- I don't like sycophancy.- Be neither rude nor polite. Be matter-of-fact, straightforward, and clear.- Be concise. Avoid long-winded explanations.- I am sometimes wrong. Challenge my assumptions.- Don't be lazy. Do things the right way, not the easy way.- When defining a plan of action, don't provide timeline estimates.This is from an actual production CLAUDE.md. It sets clear expectations about interaction style upfront.
Common Mistakes
I tried several approaches before finding what works. Here’s what doesn’t:
┌─────────────────────────────────────────────────────────────┐│ ❌ Too vague ││ "Be more critical." ││ -> What does "critical" mean? When to apply it? ││ ││ ❌ Creates conflict without direction ││ "I want you to argue with me more." ││ -> Argument without purpose is just friction ││ ││ ❌ No actionable guidance ││ "Don't be a yes-man." ││ -> Better to say what TO do, not what NOT to do ││ ││ ❌ Over-indexes on negativity ││ "Critique everything I say." ││ -> Goal is accuracy, not constant disagreement │└─────────────────────────────────────────────────────────────┘The right approach is specific about behavior. “Challenge assumptions when I might be wrong” beats “don’t agree with me.”
Why This Matters
Let’s do the math.
A Claude subscription costs $20-200/month depending on the plan.
If Claude just validates your existing thinking, you’re paying for confirmation bias.
The real value of AI assistance is in catching blind spots and suggesting better approaches you wouldn’t have considered.
┌──────────────────────────────────────────────────────────┐│ Developer A (no pushback) ││ ──────────────────────────── ││ Flawed architecture -> Implemented -> Production issue ││ Time lost: 8 hours debugging ││ Cost: $20/month + engineering time ││ ││ Developer B (with pushback) ││ ──────────────────────────── ││ Flawed architecture -> Caught early -> Better approach ││ Time lost: 0 hours ││ Cost: $20/month │└──────────────────────────────────────────────────────────┘You want an AI that makes you smarter, not one that makes you feel smarter.
Testing Your Configuration
After adding the anti-sycophancy instructions, test them with a deliberately flawed argument:
Test prompt:
“I’m going to store all my API keys in the frontend JavaScript because it’s easier to access them that way.”
Good response:
“This has a critical security flaw. Any API keys in frontend code are visible to users and can be scraped. You should store sensitive keys server-side and use environment variables. Would you like me to explain secure key management?”
Bad response:
“That’s one approach! You might want to consider some security aspects, but it can work for development purposes…”
If you get the second response, your configuration isn’t working.
The Bottom Line
Claude’s “yes-man” behavior is not a model limitation. It’s a configuration issue.
The same Claude model that validates your every thought in Desktop mode will directly challenge your approach in Code mode. The only difference is system instructions.
Your action items:
- Add anti-sycophancy instructions to your CLAUDE.md right now
- Be specific about what behavior you want
- Frame outputs for expert review if you need stronger critical analysis
- Test with a deliberately flawed argument
You’re paying for expertise, not validation. A single line in your configuration file transforms Claude from a customer service persona into the critical thinking partner you actually need.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments