Skip to content

[Bug]: SSH relay fails to start on Windows remote: no named-pipe --sock-path passed #24671

Description

@pegner-ag

Operating system

macOS

Orca version

1.4.218

Details

Client: Orca on macOS (Apple Silicon). Remote: Windows Server 2025, Win32-OpenSSH (DefaultShell cmd.exe and powershell.exe both tested), Node v24.19.0, relay 0.1.0+c2e66c2e79d0.

Relay installs fine (.install-complete present), but the connection silently falls back to Disconnected. Running the relay manually reproduces it:
node relay.js → listen EACCES: permission denied C:\Users\orca-agent\relay.sock
because without --sock-path the relay defaults to join(process.cwd(), "relay.sock"), which Node on Windows cannot listen on.
With a named pipe it works:
node relay.js --sock-path "\.\pipe\orca-relay-test" → Socket server listening: \.\pipe\orca-relay-test / ORCA-RELAY v0.1.0 READY.
Expected: on win32 remotes the client should pass a \.\pipe... sock path (or the relay should default to one on win32).

Activity

  1. added theissue type on Oct 2, 2026
  2. BeamNawapat commented on Oct 2, 2026

    @BeamNawapat
    Contributor

    I read the client code on current main (4e46969) for this. The desktop client does not launch the Windows relay without --sock-path. On a win32 remote it always passes a named pipe:

    • src/main/ssh/ssh-relay-endpoints.ts relayEndpointForHost() returns \\.\pipe\orca-relay-<20 hex> for Windows hosts.
    • src/main/ssh/ssh-relay-windows-launch-command.ts passes it as --sock-path to the detached relay, and windowsRelayConnectCommand() in ssh-relay-deploy.ts passes the same pipe to relay.js --connect.

    So the EACCES ... relay.sock error comes from running node relay.js by hand with no flags. It is probably not what the app hits.

    A more likely cause of the silent fall back to Disconnected: Win32-OpenSSH puts the session shell in a job with KILL_ON_JOB_CLOSE, so a relay started inside the session dies when the deploy session closes. The old fallback (WMI Win32_Process.Create) is refused to a standard user's network logon, and an account named orca-agent sounds like a standard user. #24224 (merged 2026-10-01) fixes this: the relay now starts outside sshd's job through a breakaway launcher, and a refusal is reported by name instead of failing silently. That commit is not in v1.4.218 (git merge-base --is-ancestor 6d1a97ef98 v1.4.218 is false), so it should ship in the next release.

    If it still fails on a build that contains #24224, relay.log and relay.err.log in the relay directory on the Windows host, plus the [ssh-relay] lines in Orca's main log, would show which step fails.

    This is from reading the code only. I have no Windows SSH host to reproduce it on.

    Written by an AI agent (Claude Code) contributing on behalf of @BeamNawapat.

  3. self-assigned this
    on Oct 3, 2026
  4. OrcaWin commented on Oct 9, 2026

    @OrcaWin
    Collaborator

    Thanks for the report. Orca already passes a named pipe as --sock-path when it starts the relay on a Windows host, so the EACCES only happens when relay.js runs by hand without flags. The silent fall back to Disconnected was most likely the relay being killed with the SSH session for a standard user, which #24224 fixed (shipped in 1.4.220). Since then SSH hosts, Windows included, run a managed Orca server by default (#24863), and the relay is only a fallback. If a current build still can't connect to your Windows Server host, please reopen and attach relay.log / relay.err.log from the host plus the [ssh-relay] lines from Orca's main log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingos:macosIssues affecting macOS

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions