====== Claude Code on Windows - Installation and Upgrade ====== ===== Introduction ===== Claude Code is an AI development assistant created by Anthropic that runs in the terminal. On Windows, Claude Code requires **Windows Subsystem for Linux (WSL)** to function properly. Claude Code does **NOT** run natively on Windows. You must use WSL to create a Linux environment within Windows. ===== System Requirements ===== * Windows 10 version 2004+ or Windows 11 * WSL2 enabled * Ubuntu (or other Linux distribution) * Node.js 18+ and npm * Anthropic account (Claude Max or API key) ===== Step-by-Step Installation ===== ==== 1. Enable WSL ==== === Automatic Installation (Windows 10 2004+ / Windows 11) === Open **PowerShell as Administrator** and run: wsl --install This command will: * Enable WSL * Install Ubuntu as default distribution * Restart your computer === Manual Installation (older versions) === # Enable WSL dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # Enable Virtual Machine Platform dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # Set WSL2 as default version (after restart) wsl --set-default-version 2 ==== 2. Install Ubuntu ==== === From Microsoft Store === - Open Microsoft Store - Search for "Ubuntu" - Install "Ubuntu" (LTS version) - Launch Ubuntu from Start Menu - Create username and password === From Command Line === # List available distributions wsl --list --online # Install Ubuntu wsl --install -d Ubuntu ==== 3. Update Ubuntu System ==== In the Ubuntu terminal, run: # Update package list sudo apt update # Install updates sudo apt upgrade -y # Install essential tools sudo apt install build-essential curl git -y ==== 4. Install Node.js ==== # Add NodeSource repository curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - # Install Node.js sudo apt-get install -y nodejs # Verify installation node --version npm --version === Configure npm for Global Packages === # Create directory for global packages mkdir -p ~/.npm-global # Configure npm to use this directory npm config set prefix ~/.npm-global # Add to PATH echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc # Reload shell configuration source ~/.bashrc **NEVER** use ''sudo'' with ''npm install'' for global packages! This can cause permission issues and security risks. ==== 5. Install Claude Code ==== # Install Claude Code globally npm install -g @anthropic-ai/claude-code # Verify installation claude --version === Test Installation === # Check if Claude Code is in PATH which claude # Should output: /home/username/.npm-global/bin/claude ==== 6. Authentication ==== === Option A: Claude Max (Recommended) === # Navigate to a project cd /mnt/c/Users/YourName/Projects/your-project # Start Claude Code claude # Follow OAuth prompts in browser === Option B: API Key === # Set API key export ANTHROPIC_API_KEY=your_key_here # Add to shell profile echo 'export ANTHROPIC_API_KEY=your_key' >> ~/.bashrc source ~/.bashrc ===== Upgrading Claude Code ===== ==== Standard Upgrade Method ==== # Update via npm npm update -g @anthropic-ai/claude-code # Or complete reinstall for latest version npm install -g @anthropic-ai/claude-code ==== Version Checking ==== # Check current version claude --version # Check location which claude ==== Automated Upgrade Script ==== #!/bin/bash # Save as upgrade-claude.sh echo "🔄 Updating Claude Code..." # Check current version echo "Current version:" claude --version # Update npm update -g @anthropic-ai/claude-code # Check new version echo "New version:" claude --version echo "✅ Upgrade complete!" ===== Troubleshooting ===== ==== Common Issues ==== === WSL Not Working === # Check WSL status wsl --status # Update WSL wsl --update # Restart WSL wsl --shutdown wsl === Node.js Version Conflicts === # Check which npm is being used which npm which node # Should show /usr/bin/npm, NOT /mnt/c/... === Permission Errors === # Fix npm permissions sudo chown -R $(whoami) ~/.npm-global npm config set prefix ~/.npm-global === Performance Issues === Work within WSL filesystem, not Windows drives: # Instead of /mnt/c/Users/... # Use ~/projects/ or /home/username/projects/ # Copy project to WSL cp -r /mnt/c/Users/YourName/project ~/project cd ~/project ==== Performance Optimizations ==== Create file ''%USERPROFILE%\.wslconfig'': [wsl2] memory=8GB processors=4 swap=2GB localhostForwarding=true [experimental] sparseVhd=true autoMemoryReclaim=gradual ===== Basic Usage ===== ==== Accessing Windows Projects ==== # Windows files are accessible at /mnt/c/ cd /mnt/c/Users/YourName/Projects # Or create a new project mkdir claude-test cd claude-test # Initialize a simple project echo "console.log('Hello Claude!');" > hello.js ==== Starting Claude Code ==== # Start Claude Code in project claude # Basic commands > "Explain what this JavaScript file does" > "/init" # Generate project documentation > "/help" # See all available commands ===== Advanced Configuration ===== ==== Global Configuration ==== Create file ''~/.claude.json'': { "defaultModel": "claude-sonnet-4", "permissions": { "allowedTools": ["Edit", "Bash(git*)"], "deniedTools": ["Bash(rm*)"] }, "preferences": { "autoCompact": true, "compactThreshold": 50000 }, "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "~/Projects"] } } } ==== Environment Variables ==== Add to ''~/.bashrc'': # Claude Code configuration export ANTHROPIC_API_KEY=your_key export CLAUDE_MODEL=claude-sonnet-4 export MCP_DEBUG=false export NODE_OPTIONS="--max-old-space-size=4096" # Windows integration export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 ===== Docker Integration ===== ==== Dockerfile for Claude Code ==== FROM node:20-slim RUN apt-get update && apt-get install -y \ git \ curl \ build-essential \ && rm -rf /var/lib/apt/lists/* RUN npm install -g @anthropic-ai/claude-code WORKDIR /workspace VOLUME ["/workspace"] ENV ANTHROPIC_API_KEY="" CMD ["claude"] ==== Usage ==== # Build and run docker build -t claude-code . docker run -it --rm -v $(pwd):/workspace -e ANTHROPIC_API_KEY=your_key claude-code # Or use dangerous mode for automation docker run --rm -v $(pwd):/workspace -e ANTHROPIC_API_KEY=your_key claude-code \ claude --dangerously-skip-permissions -p "fix all linting errors" ===== CI/CD Integration ===== ==== GitHub Actions Workflow ==== name: Claude Code CI on: [push, pull_request] jobs: claude-review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '20' - run: npm install -g @anthropic-ai/claude-code - run: claude --dangerously-skip-permissions -p "review this PR" env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} ===== Enterprise Features ===== ==== Team Configuration ==== { "team": { "name": "Development Team", "defaultModel": "claude-sonnet-4", "sharedSettings": { "codeStyle": "prettier", "testFramework": "jest", "linting": "eslint" } }, "security": { "allowedDomains": ["github.com", "gitlab.com"], "restrictedCommands": ["rm", "sudo", "chmod 777"] } } ===== Useful Resources ===== * [[https://docs.anthropic.com/en/release-notes/claude-code|Official Claude Code Documentation]] * [[https://zebbern.github.io/windows.html|Complete Windows Installation Guide]] * [[https://abacus.ai/help/howTo/chatllm|ChatLLM Teams Help Center]] * [[https://github.com/microsoft/WSL|WSL on GitHub]] * [[https://nodejs.org/en/download/|Node.js Downloads]] ===== FAQ ===== ==== Q: Can Claude Code run natively on Windows? ==== A: No, Claude Code requires a Unix-like environment. You must use WSL on Windows. ==== Q: What's the difference between Claude Max and API key? ==== A: Claude Max ($20/month) is more economical for regular users than pay-per-use API pricing. ==== Q: How do I update Claude Code? ==== A: Use ''npm update -g @anthropic-ai/claude-code'' or reinstall with ''npm install -g @anthropic-ai/claude-code''. ==== Q: Why am I getting permission errors? ==== A: Configure npm to use a user-writable directory and never use ''sudo'' with npm global installs. ==== Q: Can I use Claude Code in VS Code? ==== A: Yes, Claude Code integrates with various IDEs and can be used alongside VS Code through the terminal.