Native copilot.exe binary silently exits with code 1 on Windows x64, npm-loader.js never falls back to JS implementation

Open Beginner friendly
#1,566 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
62/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
javascript, nodejs
Domain
cli

Research direction

Start in npm-loader.js at the spawnSync call and compare its failure path with the import of index.js. Run copilot --version on Windows x64 with the failing native executable, then verify that the JavaScript implementation runs and returns its result when the native process exits nonzero.

Written by the indexing model from the issue text.

Description

area:platform-windows

Description

The native copilot.exe binary (both WinGet v0.0.410 and npm v0.0.412) silently exits with code 1 on Windows 11 x64, producing no stdout or stderr output. This makes the Copilot CLI completely unusable.

The npm-loader.js entrypoint unconditionally exits with the native binary's exit code (process.exit(r.status??1)), which prevents the JavaScript fallback (index.js) from ever being reached when the native binary fails.

Steps to Reproduce

  1. Install @github/copilot via npm (npm install -g @github/copilot) or WinGet (winget install GitHub.Copilot)
  2. Run copilot --version
  3. Binary exits with code 1, no output

Expected Behavior

Either:

  • The native binary should work correctly, OR
  • npm-loader.js should fall back to the JS implementation when the native binary fails

Actual Behavior

  • copilot.exe exits with code 1, no stdout/stderr
  • npm-loader.js calls process.exit(r.status??1) after spawnSync, so it exits with 1 without trying the JS fallback
  • The JS implementation (node index.js) works perfectly

Workaround

In npm-loader.js, change:

process.exit(r.status??1)

to:

if(r.status===0)process.exit(0)

This allows the JS fallback via import("./index.js") to run when the native binary fails.

Environment

  • OS: Windows 11 Enterprise 25H2 (Build 26200)
  • Architecture: x64 (AMD64)
  • Node.js: v25.6.1
  • npm: 11.9.0
  • Copilot CLI (WinGet): v0.0.410
  • Copilot CLI (npm): 0.0.412
  • gh CLI: 2.86.0

Additional Context

  • The native binary is a valid signed PE x64 executable (signature verified)
  • LoadLibraryEx succeeds on the binary (no missing DLL dependencies)
  • No Windows Defender blocks, no AppLocker policies, no Zone.Identifier ADS
  • No crash dumps or WER reports generated
  • The binary produces zero output to both stdout and stderr
  • Running from any directory, any terminal (PowerShell, cmd), with or without admin privileges — same result
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/copilot-cli

All issues in github/copilot-cli

Similar issues

More Shell/Bash issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.