diff --git a/go/client/fork_server_windows.go b/go/client/fork_server_windows.go
index <HASH>..<HASH> 100644
--- a/go/client/fork_server_windows.go
+++ b/go/client/fork_server_windows.go
@@ -31,6 +31,11 @@ func spawnServer(g *libkb.GlobalContext, cl libkb.CommandLine, forkType keybase1
 	devnull, err = os.OpenFile("nul", os.O_RDONLY, 0)
 	if err != nil {
 		G.Log.Warning("Cannot open nul: %v", err)
+		// 0 is an invalid handle, but more importantly it will
+		// not be passed to DuplicateHandle by Go. This works
+		// with Go 1.6, but is hacky. This code path is taken
+		// only on systems that are broken to begin with...
+		files = append(files, 0, 0, 0)
 	} else {
 		nullfd := devnull.Fd()
 		files = append(files, nullfd, nullfd, nullfd)
client: Pass invalid handles without a working NUL on Windows to StartProcess