# Troubleshooting Common issues, debugging, and solutions for Claude Code. ## Authentication Issues ### API Key Not Recognized **Symptoms:** - "Invalid API key" errors - Authentication failures - 401 Unauthorized responses **Solutions:** ```bash # Verify API key is set echo $ANTHROPIC_API_KEY # Re-login claude logout claude login # Check API key format (should start with sk-ant-) echo $ANTHROPIC_API_KEY | grep "^sk-ant-" # Test API key directly curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-4-5-20250929","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}' ``` ### Environment Variable Issues ```bash # Add to shell profile echo 'export ANTHROPIC_API_KEY=sk-ant-xxxxx' >> ~/.bashrc source ~/.bashrc # Or use .env file echo 'ANTHROPIC_API_KEY=sk-ant-xxxxx' > .claude/.env # Verify it's loaded claude config get apiKey ``` ## Installation Problems ### npm Installation Failures ```bash # Clear npm cache npm cache clean --force # Remove and reinstall npm uninstall -g @anthropic-ai/claude-code npm install -g @anthropic-ai/claude-code # Use specific version npm install -g @anthropic-ai/claude-code@1.0.0 # Check installation which claude claude --version ``` ### Permission Errors ```bash # Fix permissions on Unix/Mac sudo chown -R $USER ~/.claude chmod -R 755 ~/.claude # Or install without sudo (using nvm) nvm install 18 npm install -g @anthropic-ai/claude-code ``` ### Python Installation Issues ```bash # Upgrade pip pip install --upgrade pip # Install in virtual environment python -m venv claude-env source claude-env/bin/activate pip install claude-code # Install with --user flag pip install --user claude-code ``` ## Connection & Network Issues ### Proxy Configuration ```bash # Set proxy environment variables export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080 export NO_PROXY=localhost,127.0.0.1 # Configure in settings claude config set proxy http://proxy.company.com:8080 # Test connection curl -x $HTTP_PROXY https://api.anthropic.com ``` ### SSL/TLS Errors ```bash # Trust custom CA certificate export NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.crt # Disable SSL verification (not recommended for production) export NODE_TLS_REJECT_UNAUTHORIZED=0 # Update ca-certificates sudo update-ca-certificates # Debian/Ubuntu sudo update-ca-trust # RHEL/CentOS ``` ### Firewall Issues ```bash # Check connectivity to Anthropic API ping api.anthropic.com telnet api.anthropic.com 443 # Test HTTPS connection curl -v https://api.anthropic.com # Check firewall rules sudo iptables -L # Linux netsh advfirewall show allprofiles # Windows ``` ## MCP Server Problems ### Server Not Starting ```bash # Test MCP server command manually npx -y @modelcontextprotocol/server-filesystem /tmp # Check server logs cat ~/.claude/logs/mcp-*.log # Verify environment variables echo $GITHUB_TOKEN # For GitHub MCP # Test with MCP Inspector npx @modelcontextprotocol/inspector ``` ### Connection Timeouts ```json { "mcpServers": { "my-server": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-example"], "timeout": 30000, "retries": 3 } } } ``` ### Permission Denied ```bash # Check file permissions ls -la /path/to/mcp/server # Make executable chmod +x /path/to/mcp/server # Check directory access ls -ld /path/to/allowed/directory ``` ## Performance Issues ### Slow Responses **Check network latency:** ```bash ping api.anthropic.com ``` **Use faster model:** ```bash claude --model haiku "simple task" ``` **Reduce context:** ```json { "maxTokens": 4096, "context": { "autoTruncate": true } } ``` **Enable caching:** ```json { "caching": { "enabled": true } } ``` ### High Memory Usage ```bash # Clear cache rm -rf ~/.claude/cache/* # Limit context window claude config set maxTokens 8192 # Disable memory claude config set memory.enabled false # Close unused sessions claude session list claude session close session-123 ``` ### Rate Limiting ```bash # Check rate limits claude usage show # Wait and retry sleep 60 claude "retry task" # Implement exponential backoff in scripts ``` ## Tool Execution Errors ### Bash Command Failures **Check sandboxing settings:** ```json { "sandboxing": { "enabled": true, "allowedPaths": ["/workspace", "/tmp"] } } ``` **Verify command permissions:** ```bash # Make script executable chmod +x script.sh # Check PATH echo $PATH which command-name ``` ### File Access Denied ```bash # Check file permissions ls -la file.txt # Change ownership sudo chown $USER file.txt # Grant read/write permissions chmod 644 file.txt ``` ### Write Tool Failures ```bash # Check disk space df -h # Verify directory exists mkdir -p /path/to/directory # Check write permissions touch /path/to/directory/test.txt rm /path/to/directory/test.txt ``` ## Hook Errors ### Hooks Not Running ```bash # Verify hooks.json syntax cat .claude/hooks.json | jq . # Check hook script permissions chmod +x .claude/scripts/hook.sh # Test hook script manually .claude/scripts/hook.sh # Check logs cat ~/.claude/logs/hooks.log ``` ### Hook Script Errors ```bash # Add error handling to hooks #!/bin/bash set -e # Exit on error set -u # Exit on undefined variable # Debug hook execution #!/bin/bash set -x # Print commands echo "Hook running: $TOOL_NAME" ``` ## Debug Mode ### Enable Debugging ```bash # Set debug environment variable export CLAUDE_DEBUG=1 export CLAUDE_LOG_LEVEL=debug # Run with debug flag claude --debug "task" # View debug logs tail -f ~/.claude/logs/debug.log ``` ### Verbose Output ```bash # Enable verbose mode claude --verbose "task" # Show all tool calls claude --show-tools "task" # Display thinking process claude --show-thinking "task" ``` ## Common Error Messages ### "Model not found" ```bash # Use correct model name claude --model claude-sonnet-4-5-20250929 # Update claude-code npm update -g @anthropic-ai/claude-code ``` ### "Rate limit exceeded" ```bash # Wait and retry sleep 60 # Check usage claude usage show # Implement rate limiting in code ``` ### "Context length exceeded" ```bash # Reduce context claude config set maxTokens 100000 # Summarize long content claude "summarize this codebase" # Process in chunks claude "analyze first half of files" ``` ### "Timeout waiting for response" ```bash # Increase timeout claude config set timeout 300 # Check network connection ping api.anthropic.com # Retry with smaller request ``` ## Getting Help ### Collect Diagnostic Info ```bash # System info claude --version node --version npm --version # Configuration claude config list --all # Recent logs tail -n 100 ~/.claude/logs/session.log # Environment env | grep CLAUDE env | grep ANTHROPIC ``` ### Report Issues 1. **Check existing issues**: https://github.com/anthropics/claude-code/issues 2. **Gather diagnostic info** 3. **Create minimal reproduction** 4. **Submit issue** with: - Claude Code version - Operating system - Error messages - Steps to reproduce ### Support Channels - **Documentation**: https://docs.claude.com/claude-code - **GitHub Issues**: https://github.com/anthropics/claude-code/issues - **Support Portal**: support.claude.com - **Community Discord**: discord.gg/anthropic ## See Also - Installation guide: `references/getting-started.md` - Configuration: `references/configuration.md` - MCP setup: `references/mcp-integration.md` - Best practices: `references/best-practices.md`