Final unfiltered thoughts on Claude Code
Saturday, March 29, 2025
The last three things on my mind from this week of building LDAPEnforcer from scratch.
- Claude Code only has the bluntest access to tools like the type system. When you ask it to make a conceptually simple change that I might start by deleting a variable definition and then looking for red underlines in my editor, it just finds one part of the code at random and changes it, and looks for references elsewhere. If it had a direct interface to type systems, linters, etc, that’d make it a lot faster.
- Watching it do dumbshit things like make up arguments to
cat
or read file contents withxxd
was cute at first and then very annoying (especially if you’re paying attention to/cost
…). - It desperately needs an always-safe set of tools it can run. If I’ve already given you access to the codebase, you shouldn’t ask for permission to run grep, but as I mentioned previously you really should know that piping grep’s output to something else has implications beyond grep). But beyond that, is having the LLM directly call shell commands really the best way to do this?