Claude Code: The gap between "made" and "working"

Claude Code: The gap between

The biggest lesson from running dozens of tools built with Claude Code over 15 months on my work laptop and three months on a Mac mini is that while code rarely breaks, operations fail constantly. AI generates high-quality code and comprehensive tests that catch bugs effectively, yet the system often collapses outside the codebase. I've realized that "created" does not mean "functioning."

I encountered four main failure patterns. First, the "mute" process: a Discord bot managed by launchd with KeepAlive enabled. The process remained active but stopped responding due to quota exhaustion or expired logins. Because launchd perceived the process as healthy, it never restarted it. I had to shift my monitoring from process survival to response logs; now, a monitor kills the process if it becomes unresponsive, forcing launchd to restart it within 30 seconds.

Second are the silent failures of scheduled tasks. A conversation compression agent failed for three days without a single notification due to one incorrect model setting. Similarly, Google API tokens in test mode expire every seven days, causing all dependent crons to fail silently. I now use a pre-expiration warning system rather than failure alerts, as knowing after the fact is too late. I encountered this with an external hard drive as well—a delete command finished without error, but the filesystem was silently rejecting writes.

Third is the illusion of success. I registered fourteen English blog posts and a sitemap in Search Console, which reported "Success." However, after three weeks, zero posts were indexed. Individual URL inspections revealed redirection errors for the five pages Google actually attempted to crawl. A dashboard being active doesn't mean data is flowing, and the existence of a backup doesn't guarantee recovery.

Finally, environmental differences caused scripts to work in the terminal but fail in cron due to an empty PATH and different home directories. I learned that a notification is not a delivery; the pipeline only ends when the result reaches the target file.

Because I am not a professional developer, my blind spot was operations. AI provides the code and tests, but it won't monitor whether a tool is still running unless instructed. Now, whenever I build a tool, I add one line to the prompt: "Make a monitor for this too." Specifically, I implement response-log monitoring, data freshness checks, and expiration warnings.

Related posts

This post is the English edition of a Korean write-up: 원문 보기

Comments

Popular posts from this blog

npm command not found on Windows: fix the PATH

Claude CLI 401 Unauthorized Refresh Token Issue

Tailscale without sudo: what userspace mode actually costs you