ClaudeFolio
Tutorials

Claude Code error messages, explained

Edward Kwun··4 min read
Claude Code error messages, explained

See more of our writing in your Google results.

Key points

  • Paste the exact error string, it is how most people search
  • Command not found usually means the terminal has not reloaded PATH
  • The && and irm errors mean you are in the wrong Windows shell
  • The browser MCP crash is a file lock, fixed by killing one process

The fastest way to fix a Claude Code error is usually to paste the exact message into a search box, which is what most people already do. This is that page to use the search box. Each section starts with the message as it appears, so use your browser's find and jump to yours.

These are the ones that come up the most, along with the underlying cause rather than just the workaround.

Install and startup

claude: command not found

The install worked and your terminal has not noticed yet, because the PATH is read when the shell starts. Close the window completely and open a new one, then run claude --version again. If it still fails, run claude doctor, which prints read-only diagnostics on your install and settings without starting a session.

The token '&&' is not a valid statement separator

You are in PowerShell and you pasted the Command Prompt install line. The reverse error, 'irm' is not recognized as an internal or external command, means you are in CMD and pasted the PowerShell one. Your prompt tells you which is which: PowerShell shows PS C:\Users\You> and CMD shows the same without the PS. We go through which Windows shell to actually use separately.

Claude Code on Windows requires either Git for Windows (for bash) or PowerShell

This one asks you to install Git for Windows, or PowerShell 7, or set CLAUDE_CODE_GIT_BASH_PATH to your bash.exe location. Git for Windows is optional in general, and installing it is what gives Claude Code the Bash tool via Git Bash. Without it, it falls back to the PowerShell tool. If you have Git for Windows already and it still complains, it cannot find bash.exe, so point at it in settings.json:

{
  "env": {
    "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"
  }
}

EBADENGINE warning during npm install

The npm package wants Node.js 22 or later. It is a warning rather than a failure, and the install still completes, because the package pulls down a native binary that does not use your Node at runtime. Worth upgrading anyway. The native installer avoids the Node dependency entirely and is the recommended path now.

Limits and 400 errors

You've hit your session limit or You've hit your weekly limit

These are plan usage windows, one rolling five-hour and one weekly, and they are shared across every model. Switching with /model does not restore them. The allowance is also shared with the Claude chat apps and Cowork, so a morning of chatting spends your afternoon of coding. Run /usage to see what consumed it, and the mechanics of why long sessions burn so much are worth understanding once.

You've hit your Opus limit

Different thing despite the similar wording. This one is model-specific, so switching with /model genuinely does keep you working.

400 error when disabling thinking on Opus 5

On Opus 5, thinking: {"type": "disabled"} is only accepted at effort high or below. Pair it with xhigh or max and you get a 400. Either drop the effort level or remove the thinking field. This is a breaking change from Opus 4.8, where the two were independent.

400 error on temperature, top_p or top_k

Sonnet 5 rejects non-default sampling parameters outright. Remove them and use system prompt instructions instead. Sonnet 5 also removed manual extended thinking, so thinking: {type: "enabled", budget_tokens: N} returns a 400 as well; use adaptive thinking with the effort parameter.

CLAUDE.md is over the 40.0k-char limit

Not an error, but people paste it into search often enough that it belongs here. It has its own post, and the short version is that splitting the file into @path imports does not help, because imports still load at launch.

The desktop app crash on Windows

Symptom: the desktop app dies whenever the browser MCP is used, and the only thing that seems to fix it is Windows app Repair. The log shows this immediately before the crash:

[error] [Chrome Extension MCP] Failed to copy native host binary:
Error: EBUSY: resource busy or locked, copyfile

An orphaned chrome-native-host.exe from an earlier session is holding a lock on its own executable, and the app treats the failed copy as fatal. Repair only works because re-registering the package kills the orphan. The one-second fix is taskkill /F /IM chrome-native-host.exe, and the full diagnosis is written up separately.

When the error is not really an error

Two things get reported as bugs constantly and are working as intended.

A context or auto-compact warning is not a usage limit. The conversation has grown near the model's maximum input size and Claude Code is summarizing older history to free space. Use /clear between unrelated tasks and it stops happening.

No conversation found to continue from claude --continue means there is no prior session in that directory, since sessions are stored per folder. Use claude --resume to pick from a list instead.

And when something behaves oddly with no message at all, claude doctor is the first thing to run. It validates your install and settings files and names the fix, which is more than most of these messages do.

Found this article useful?

Add ClaudeFolio as a preferred source on Google to see our articles first.

Related posts

Comments