Developer Guide

Setting Up Claude Code on Windows

From installation to a fully optimized workflow — everything you need to make Claude Code feel native on your Windows machine.

By Rashik HasnatApril 2026

So you’ve heard the hype about Claude Code and want to get it running on your Windows machine. Good news — since late 2025, Claude Code runs natively on Windows without needing WSL. No Linux subsystem, no workarounds. Just a single PowerShell command and you’re off.

Prerequisites

Before you begin, make sure you have:

  • Windows 10 (1809+) or Windows 11
  • Git for Windows — Claude Code uses Git Bash internally to run commands, even when you launch it from PowerShell. Download it from git-scm.com and install with the default options. Make sure “Add Git to PATH” stays checked.
  • A Claude subscription — Pro ($20/mo), Max ($100–200/mo), Team, or Enterprise plan. The free Claude.ai tier doesn’t include Claude Code. Alternatively, use an API key from console.anthropic.com.

1Install Claude Code

Open PowerShell (you don’t need Administrator privileges) and run:

powershell
irm https://claude.ai/install.ps1 | iex

That’s it. The installer drops claude.exe into ~\.local\bin and you’re ready to go.

💡 Using CMD instead?
cmd
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
💡 Prefer a package manager?

WinGet works too. Note that WinGet installs don’t auto-update.

powershell
winget install Anthropic.ClaudeCode

Close and reopen your terminal, then verify:

powershell
claude --version

If PowerShell can’t find the command, the ~\.local\bin directory likely isn’t in your PATH. Fix it:

powershell
[Environment]::SetEnvironmentVariable("PATH", "$env:PATH;$env:USERPROFILE\.local\bin", [EnvironmentVariableTarget]::User)

Restart your terminal and try again. For a more thorough health check:

powershell
claude doctor

2Authenticate

Navigate to your project directory and start Claude Code:

powershell
cd C:\Users\YourName\Projects\my-app
claude

On first launch, a browser window opens for OAuth authentication. Sign in with your Claude account and the token is saved locally — no repeated logins needed.

3Set VS Code as Your Default Editor

By default, Claude Code doesn’t know which editor to open files in. Let’s fix that by adding an environment variable:

1.Press Win + R, type sysdm.cpl, and hit Enter
2.Go to Advanced → Environment Variables
3.Under User variables, click New
4.Set the variable name to VISUAL and the value to code --wait
5.Click OK and restart your terminal

The --wait flag tells the terminal to pause until you close the file in VS Code, which keeps things in sync.

💡 Or set it via PowerShell
powershell
[Environment]::SetEnvironmentVariable("VISUAL", "code --wait", [EnvironmentVariableTarget]::User)

4Open Prompts Directly in VS Code

Press Ctrl+G while in the CLI to compose your prompt or plan in VS Code instead of the terminal. This is a game-changer for longer, multi-line prompts where the terminal input feels cramped. Write your instructions in a proper editor with full editing capabilities, save and close the file, and Claude picks it up.

5Install Zoxide for Faster Navigation

Zoxide is a smarter cd command that learns your habits and lets you jump to frequently used directories with just a few characters.

powershell
winget install ajeetdsouza.zoxide

Then add the initialization to your PowerShell profile:

powershell
# Open your PowerShell profile
notepad $PROFILE

# Add this line at the end:
Invoke-Expression (& { (zoxide init powershell | Out-String) })

After restarting your terminal, use z instead of cd:

powershell
# Instead of:
cd C:\Users\YourName\Projects\my-app

# Just type:
z my-app

Zoxide remembers where you’ve been and fuzzy-matches directory names. After a day or two, navigating your filesystem becomes almost instant.

6Configure Permission Modes

By default, Claude Code asks for approval before every file edit and shell command. That’s safe — but when you’re in the zone, the constant prompts break your flow.

Cycle through permission modes with Shift+Tab during a session:

  • Default — asks before everything (safest)
  • Accept Edits — auto-approves file changes, still asks before shell commands
  • Plan — Claude only plans, doesn’t execute anything
  • Auto — evaluates each action’s risk and auto-approves low-risk operations
  • Bypass Permissions — approves everything (only use in isolated environments)

For day-to-day development, Accept Edits with a curated allow list strikes a good balance. Add this to your ~/.claude/settings.json:

json
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(npm run *)",
      "Bash(npx *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git add *)",
      "Bash(cat *)",
      "Bash(ls *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push *)",
      "Bash(git reset --hard *)",
      "Bash(* --force)"
    ]
  }
}
📌 Want full autonomy?

Auto mode (claude --enable-auto-mode) uses a classifier to evaluate each action and auto-approve low-risk ones. Enable it, then cycle to it with Shift+Tab.

7Enable Remote Control

Remote Control lets you start a session on your PC and monitor it from your phone, tablet, or any browser. Your code stays local — only chat messages flow through the encrypted bridge.

powershell
claude rc

Your terminal displays a URL and you can press spacebar to show a QR code. Scan it with your phone to see what Claude is doing, approve actions, and send new instructions.

To enable it for every session automatically, run /config inside Claude Code and toggle “Enable Remote Control for all sessions.”

📌 Subscription required

Remote Control requires a Pro or Max plan. API keys aren’t supported for this feature.

8Add Notification Sounds

When Claude is working through a long task, set up a notification so you know when it needs your attention.

powershell
claude config set --global preferredNotifChannel terminal_bell

Test it works:

powershell
echo `a

If you don’t hear anything, enable the bell sound in Windows Terminal → Settings → Profiles → Advanced → “Bell notification style” → Audible.

For a more robust setup, use hooks in ~/.claude/settings.json:

json
{
  "hooks": {
    "Notification": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "powershell.exe -c \"[System.Media.SystemSounds]::Question.Play()\""
          }
        ]
      }
    ]
  }
}

Now you’ll hear a chime whenever Claude finishes a task or needs input. Go grab a coffee without anxiety.

Bonus: Install the VS Code Extension

There’s an official VS Code extension that gives you a graphical interface right in your editor:

1.Open VS Code
2.Go to Extensions (Ctrl+Shift+X)
3.Search for “Claude Code” by Anthropic
4.Install it

Open Claude from the Command Palette (Ctrl+Shift+P → “Claude Code: Open”), or click the spark icon in the editor toolbar. The extension gives you inline diff review, file navigation, and multiple sessions in separate tabs.

Keyboard Shortcuts You’ll Use Every Day

These shortcuts save more time than any configuration change. They’re easy to overlook but quickly become muscle memory.

EscInterrupt Claude mid-response

Claude heading in the wrong direction? Press Escape to stop immediately. Type go to continue from where it left off. Press Escape again to stop for good.

Esc × 2Rewind mode

Double-tap Escape to scroll back through your conversation with the arrow keys. Land on any point, press Enter, and choose: restore code and conversation, restore just the conversation, restore just the code, or summarize from that point forward. It’s version control for your Claude session.

/clearReset context between tasks

Every time you switch to a different task, run /clear. You don’t need old history eating your tokens, and you don’t want Claude running compaction calls to summarize stale context.

/compactManually compress context

Deep into a long session? /compact summarizes the conversation and frees up token space. Do it manually at around 50% context usage for better control over what gets preserved.

/usageCheck token and plan usage

Keep an eye on how much context you’ve consumed and how close you are to your plan’s limits.

💡 Discover all commands

Type / in the CLI to see all available commands. Claude Code’s autocomplete shows both built-in and custom commands you’ve defined.

Windows Gotcha: Pasting Images

This one trips up every Windows user. When you copy a screenshot with Win+Shift+S and try to paste it into Claude Code with Ctrl+V, nothing useful happens — Ctrl+V only pastes text.

Ctrl+V→Alt+V
Use Alt+V to paste images from clipboard

If that doesn’t work reliably, the fallback is straightforward: save the screenshot to a file and drag-and-drop it directly into the Claude Code window.

Quick Reference

WhatHow
Install Claude Codeirm https://claude.ai/install.ps1 | iex
Check installationclaude --version or claude doctor
Set VS Code as editorSet VISUAL env var to "code --wait"
Open prompt in VS CodeCtrl+G in CLI
Install zoxidewinget install ajeetdsouza.zoxide
Cycle permission modesShift+Tab during a session
Start remote controlclaude rc
Enable notificationsclaude config set --global preferredNotifChannel terminal_bell
Interrupt ClaudeEscape
Rewind / undo changesEscape twice → arrow keys
Reset context/clear
Compress context/compact
Paste image (Windows)Alt+V (not Ctrl+V)

That’s the setup. Once everything is configured, Claude Code on Windows is a remarkably smooth experience — a powerful AI coding agent running natively in your terminal, wired into your editor, and controllable from your phone.

Happy coding.