You call it a trivial instruction, but it is not trivial. It was a core requirement for your own design that you neglected to specify. This is not different than leaving out any other core requirement for a engineering specification.
Most people would NOT want this requirement. Meaning most people wouldn't care if there are package dependencies are not, so the agent 100% did the right thing.
This isn't to say that they're perfect or bug-free, but they generally don't just save time but increase the quality of your final product.
Writing your own implementation of third-party functionality that already exists has its place, but it's generally something you implement later as an optimization for very specific reasons.
The pattern that helps: put your invariant constraints (zero-framework, no external deps, specific language version, etc.) in a structured template that gets included with every prompt. CLAUDE.md does this at the project level for Claude Code. For one-off prompts it requires more discipline — which is exactly the gap I built flompt (https://github.com/Nyrok/flompt) to address. Visual constraint block you can reuse across prompts.
> neglected to include my usual "zero-framework" constraint in the prompt
And then your complaint is that it included a bunch of dependencies?
AI's do what you tell them. I don't understand how you conclude:
> If a simple editor requires 89 third-party packages to exist
It obviously doesn't. Why even bother complaining about an AI's default choices when it's so trivial to change them just by asking?