Run KnightCode on Windows
Run KnightCode either as a native Windows process or inside Windows Subsystem for Linux (WSL). Native Windows uses Git Bash by default for Bash commands and can optionally...
Run KnightCode either as a native Windows process or inside Windows Subsystem for Linux (WSL). Native Windows uses Git Bash by default for Bash commands and can optionally expose PowerShell to the model. KnightCode inside WSL uses the Linux environment and its Bash installation.
Follow the main Quickstart to install and authenticate KnightCode. Use this page to choose and configure its command environment.
Choose native Windows or WSL
| Environment | Command environment | Use it when |
|---|---|---|
| Native Windows with Git Bash | Git Bash for the built-in bash tool and ! commands | Your files and development tools primarily live on Windows |
Native Windows with the powershell tool | PowerShell for model tool calls; Bash remains available for ! commands | The task depends on PowerShell modules or Windows-native commands |
| WSL | Linux Bash and tools inside the selected WSL distribution | Your files and toolchain already live in Linux or WSL |
Use Git Bash on native Windows
For most native Windows users, installing Git for Windows is sufficient.
KnightCode resolves Bash in this order:
shellPathfrom~/.knightcode/agent/settings.json- Git Bash at
%ProgramFiles%\Git\bin\bash.exe - Git Bash at
%ProgramFiles(x86)%\Git\bin\bash.exe bash.exeonPATH, including Cygwin, MSYS2, or legacy WSL Bash
Start KnightCode and enter this command to verify the shell:
!printf 'Bash is working\n'If KnightCode cannot find Bash, it reports the locations it checked. Install Git for Windows, put another Bash executable on PATH, or configure shellPath.
Let the model use PowerShell
The optional powershell tool runs commands through pwsh.exe when available, then falls back to Windows PowerShell. It starts PowerShell with -NoProfile -NonInteractive -ExecutionPolicy Bypass. Administrator-enforced execution policies can still take precedence.
PowerShell discovery checks these locations in order:
pwsh.exeonPATH%ProgramFiles%\PowerShell\7\pwsh.exepowershell.exeonPATH%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
To replace the model-facing bash tool with powershell, add this to ~/.knightcode/agent/settings.json:
{
"defaultTools": ["read", "powershell", "edit", "write"]
}["-bash", "+powershell"] does the same while keeping any other default tools you configured.
Restart KnightCode, then ask it to run a harmless PowerShell command. The ! and !! editor commands continue to use Bash. The powershell tool is available only when KnightCode runs as a native Windows process.
See Settings for other tool combinations.
WSL
On Windows, shell path conversion accepts /mnt/<drive>, /cygdrive/<drive> and /<drive>. Extra Git branch polling in WSL recognizes only /mnt/<drive>. Neither recognizes custom mount roots.
When using the legacy WSL bash.exe launcher from Windows, KnightCode sends commands over stdin to avoid command-line quoting problems.
Use a custom Bash executable
Set shellPath when Bash is installed somewhere KnightCode does not discover automatically:
{
"shellPath": "C:\\cygwin64\\bin\\bash.exe"
}JSON uses backslashes for escape sequences. When you write a Windows path with backslashes, write each backslash twice, as shown above.
See Configure shell commands for command prefixes, aliases, and the complete shell-resolution behavior.
Choose a terminal
Windows terminals run KnightCode through a console host (conhost). Some bundle an up-to-date copy; others use the older one built into Windows, which has bugs that affect KnightCode.
We recommend Windows Terminal. It always ships an up-to-date conhost, and KnightCode is best tested with it.
Last updated: October 2026.
| Terminal | Conhost | Status |
|---|---|---|
| Windows Terminal | Bundled, current | Recommended |
| VS Code, Tabby, WezTerm nightly | Bundled, current | Works |
| Alacritty | Built-in, unless conpty.dll and OpenConsole.exe from Windows Terminal are next to alacritty.exe | Works only with those files |
| WezTerm 20240203 and older | Bundled, old | Known issues |
Classic console (cmd.exe or PowerShell without Windows Terminal), mintty (Git Bash), ConEmu, Cmder, Hyper, Windows OpenSSH | Built-in | Known issues |
Configure Windows Terminal
Windows Terminal reserves or rewrites some modified keys. See Windows Terminal to configure Shift+Enter and Alt+Enter, and Keybindings for KnightCode's Windows and WSL shortcut defaults.
Known issues
These issues come from conhost. Microsoft has fixed them in its source, but has not said when the built-in conhost will get the fixes.
| Issue | Affects | Remedy |
|---|---|---|
Switching from fullscreen to regular mode, or Ctrl+G from fullscreen, crashes the session (microsoft/terminal#17515) | Built-in conhost | Use a terminal with a current conhost, or start KnightCode with --tui-mode regular |
Text such as ;0;rgb:0000/0000/0000 appears in the prompt, and BEL opens the external editor | Built-in conhost behind another terminal: mintty, Windows OpenSSH | Use a terminal with a current conhost |
Fragments such as 79 or 55 appear in the prompt | WezTerm 20240203 | Use WezTerm nightly |
| In regular mode, each keystroke redraws the input line on a new row | Built-in conhost, classic console | Use fullscreen mode (the default), or a terminal with a current conhost |
Run KnightCode in tmux
KnightCode works inside tmux, but tmux can report Shift+Enter, Ctrl+Enter, and plain Enter as the same key. Enable extended keys so KnightCode can distinguish them.
Run KnightCode on Android with Termux
KnightCode runs on Android through Termux, a terminal emulator and Linux environment. Text input, file tools, and shell commands are supported. KnightCode can copy and paste...