It's much better at breaking down tasks on its own. All the tool use stuff is also deeply integrated. So I can reliably make a plan with Claude Code, then have it keep working on implementing until all tests pass.
Claude Code is "agentic". Aider isn't. It can plan, use external tools, run the compiler, tests, linters, etc. You can do some of it with Aider, too, but Claude is more independent. The downside is that it can get very expensive, very fast.
I've personally found that I reject around 80% of suggestions with "No, and tell Claude what to do differently". So it requires a lot of babysitting, and it usually means I cannot do another thing effectively while it's running. For this reason I've considered switching to something less agentic like Aider since it's more predictable. Curious to hear how others work around this.
My experience has been quite different. I often give it a large block of instructions and let it run autonomously for a while. When I come back it often did what I expected. It doesn't have good taste with respect to APIs, though, so sometimes I need a heavier hand on that.
I find it helps to have a CLAUDE.md file with instructions and thorough documentation. This is on a ~30k LOC Python codebase with type-checking and tests. YMMV with other languages.
I found a huge difference between Sonnet 3.7 and Sonnet 4.0 here. Two weeks ago I rejected most suggestions, now I accept most of them.
In addition, after a 3 hour session I told it to create a CLAUDE.md that would help it program similarly to me, based on my preferences. I then edited that file a bit, and that has helped a lot.