Re:What Claude Code Chooses
by sarkarsh on Monday March 02, 2026 @01:55PM
(#47222376)
The library choices are the visible part. React, Tailwind, Drizzle -- you see those in the imports and catch them early.
The scarier version is the invisible architectural decisions. When the agent decides to skip input validation because "the frontend handles it," or collapses your middleware chain because it doesn't understand why the rate limiter was there. You find those weeks later when something breaks, and there's no record of why the agent made that call.
The AGENTS.md approach helps for known preferences, but it only covers what you thought to specify upfront. The agent makes dozens of micro-decisions per session that nobody anticipated. Which error handling strategy, whether to denormalize, how aggressively to cache. Those are just as opinionated as the library picks -- they're just harder to audit from a diff.
What's missing is the agent documenting its own decisions as it works. Not what code it wrote, but what it decided, what it considered and rejected, and what it simplified. That way when you find the rate limiter is gone you can trace back to the decision instead of reverse-engineering intent from git blame.
The scarier version is the invisible architectural decisions. When the agent decides to skip input validation because "the frontend handles it," or collapses your middleware chain because it doesn't understand why the rate limiter was there. You find those weeks later when something breaks, and there's no record of why the agent made that call.
The AGENTS.md approach helps for known preferences, but it only covers what you thought to specify upfront. The agent makes dozens of micro-decisions per session that nobody anticipated. Which error handling strategy, whether to denormalize, how aggressively to cache. Those are just as opinionated as the library picks -- they're just harder to audit from a diff.
What's missing is the agent documenting its own decisions as it works. Not what code it wrote, but what it decided, what it considered and rejected, and what it simplified. That way when you find the rate limiter is gone you can trace back to the decision instead of reverse-engineering intent from git blame.