Stop the 'old_string is not unique' Error in Claude Code's Edit Tool — A Practical Rewrite Strategy
When Claude Code's Edit tool throws 'old_string is not unique in the file', the root cause is usually that the prompt didn't guarantee a uniquely identifiable target. Here's how to design rewrites that actually stick.
Decoding Claude's 'Spanner Temporarily Unavailable' Error and How to Handle It
The 'Spanner temporarily unavailable' error occasionally appears in Claude API and Claude.ai responses. This guide unpacks what the message reveals about Anthropic's infrastructure and walks through practical retry strategies that production teams actually use.
Upgraded to Claude Pro but Limits Haven't Changed — How to Diagnose and Fix It
Claude Pro or Max upgrade not reflecting? Learn how to diagnose whether payment completed, refresh your session, clear browser cache, and contact Anthropic support to get your plan unlocked.
Complete Fix Guide: Claude File Attachment and Image Recognition Failures
Solve issues where PDFs, images, or text files attached to Claude aren't loading or throw errors. This guide covers file format support, size limits, and browser settings—everything you need to fix file upload problems.
Claude Pro/Max Billing and Payment Errors: A Complete Troubleshooting Guide
Payment declined, subscription not showing up, or unexpected charges on your Claude account? This guide covers the most common billing issues and walks you through how to fix them step by step.
When Claude Won't Respond, Runs Slow, or Stops Mid-Answer: How I Narrow It Down
A step-by-step way to isolate why Claude isn't responding, is unusually slow, or stops mid-answer: service, browser, then account. Includes a tiny script to measure your own busy hours, fixes for Claude Code Auto Mode and MCP stalls, and how to use the SDK's timeout and automatic retries so unattended jobs never freeze in silence.
My Claude Code Hooks Stopped Firing After an Update — the Hyphenated Matcher Exact-Match Change in v2.1.195
In Claude Code v2.1.195, hook matchers containing a hyphen switched from partial match to exact match, silently disabling an existing PreToolUse hook. Here is how I isolated the cause and how to write matchers that won't break.
My Unattended Task Was Overwriting the Previous Day's Log — the Container's date Was Returning UTC
A Cowork scheduled task that wrote date-stamped logs was silently overwriting the prior day's file. The culprit was the container's date returning UTC. Here is how I isolated it and the permanent fix: pin the timezone, append instead of overwrite, and detect the failure.
When a Broken settings.json Stops Claude Code From Starting — Safe Mode and How to Split Your Config
How to find which config layer is broken when a settings.json syntax error stops Claude Code from starting, recover in minutes, and structure your settings so an automated pipeline can't quietly break itself.
It Says '500' in the Browser but curl Returns 200 — When a Next.js Error Boundary Misreads a ChunkLoadError
A production Next.js article page shows '500 Internal Server Error' in the browser, yet curl returns 200. The culprit was not the server but a ChunkLoadError surfacing through error.tsx. Here is the diagnosis and a fix with built-in auto-reload.
When git add -A Sweeps Up .bak Backups — The Quiet Trap of In-Place Fix Scripts
How .bak backups left by sed -i and homegrown --fix scripts get silently swept into production by git add -A, why it is so easy to miss, and how scoped adds and .gitignore close the gap for good.
When Yesterday's Article Bleeds Into Today's — The Stale Fixed-Name Temp File Trap
In a Claude Code automation pipeline, a fixed-name temp file kept stale content from the previous run and leaked old body text into a completely different article. Here is why the write fails silently, and how unique names plus a post-write grep check prevent it.