[Bug] Claude avoids tasks with excuse-making instead of attempting workarounds

Resolved 💬 3 comments Opened Mar 9, 2026 by miridius Closed Apr 8, 2026

Context

I've been through a few evolutions of improving how I work with Claude Code, for example I used to think "oh this is great for easy tasks, but it makes too many mistakes to give it hard tasks", but then I realised that the mistakes were always due to it not having enough context - some institutional or instinctive knowledge that only existed in my head that I hadn't given it

I'm now at the stage where I provide Claude good context, and Opus 4.6 is smart enough to understand clearly what it should do, but it is incredibly lazy - constantly finding excuses to either take shortcuts (not doing the task properly), or often just skip the task entirely.

Bug Description

  1. Given some task X, for example "research how some tool works", Claude encounters a minor obstacle, e.g. "the documents page for some tool is a JS-rendered SPA so WebFetch returns a blank page"
  2. Said obstacle is something that Claude could easily overcome (e.g. by using a headless browser), but instead it just uses this as an excuse to get out of doing the task. It won't generally even escalate to the user, it will just forge past it with whatever it wanted to do next, then say it's done and pretend it did what was asked.
  3. If you make Claude self-reflect afterwards, it recognises that it did the wrong thing, and if you tell it to try harder, it will then overcome the obstacle without issue. The problem is that this never happens on the first pass.

A closely related but not identical issue is that Claude loves to declare things that it broke as "pre-existing" problems instead of fixing them, or "out of scope" because it thinks the fix is a lot of "work"

My current solution for both issues is a very simplistic but surprisingly effective Stop hook that searches the last_assistant_message for some red flag phrases like "pre-existing", "I can't", or "out of scope", and tells Claude to stop making excuses, fix the issue, remind it that nothing is somebody else's problem, etc.

In general I feel like this is an alignment problem. I have context rules that clearly state these kinds of principles (nothing is somebody else's problem, don't downgrade task requirements, always meet the bar or flag the miss, etc.) but they seem to be too abstract for Claude to follow and/or not powerful enough on their own to override Claude's default tendency to try to weasel out of anything it deems as difficult.

Environment Info

  • Platform: darwin
  • Terminal: iTerm.app
  • Version: 2.1.71
  • Feedback ID: 1b02f32c-46e4-4787-a2d9-3e1ae7963e89

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗