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, copyfileAn 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.






