Most of what feels like "Claude Code is broken" is actually the tool working exactly as designed — a permission gate doing its job, a context window that's genuinely full, a connection that depends on something outside Claude Code entirely. Exact error text changes between versions, so this covers the situations themselves and what's really going on, which stays true regardless of the specific message on screen.
This isn't a glitch — permission is evaluated per action based on your current mode, not remembered from an approval you gave a moment ago on something similar. If the action really is routine and safe, that's the signal to deliberately switch that category to auto-accept, rather than a bug to work around.
Context fills with everything discussed — including dead ends, resolved tangents, and decisions already made — which can crowd out what's actually relevant to the task in front of you right now. This is a real, structural limit, not the model getting worse over time.
/compact to summarize and free space without losing the thread, or /clear to start fresh when the old context no longer matters.If a category of fix is tried two or three times without new information surfacing, that's not a reason to keep waiting — it's a sign something you know isn't reflected anywhere it can see: an undocumented assumption, a config value outside the codebase, a business rule that only lives in someone's head.
Before assuming Claude Code is at fault, check the thing it's connected to — an MCP connection is only as reliable as the underlying server or service. An expired token, a downed service, or a changed API on the other end will all look the same from this side: a connection that stopped working.
Most often this means the task's actual scope was broader than intended, or auto-accept was on for a category of edit that happened to include that file too. Read the diff to understand the real reasoning before assuming it was arbitrary — there's usually a legible reason, even when it's not the one you expected.
Most of what feels confusing at first is the permission model — the free guide covers it in ten minutes before you hit any of this for real.
Get the Free Guide →That's the permission model working as designed, not a malfunction — each action is gated based on your current mode and its own risk, not remembered approval from a similar action earlier. If it's genuinely routine, switching that category to auto-accept (deliberately, not by accident) removes the repeated prompts.
Context fills up with everything discussed, including dead ends and resolved side-topics, which can crowd out what's actually relevant to the current task. /compact summarizes to free space without losing the thread; /clear starts fully fresh when the old context isn't relevant at all anymore.
Usually not — check the underlying server or service first. MCP connections depend on whatever they're connecting to actually being reachable and authenticated; an expired token or a downed service will look like a stalled connection from Claude Code's side.
Most often the task's real scope was broader than intended, or auto-accept mode was on for a category of edit that included that file. Review the diff to understand the actual reasoning, and narrow the request or switch to manual approval if it happens again on similar work.