Relationships
#3572 agent-runner and deno-runner: support Windows (both refuse to start: Unsupported operating system)
Opened by stack72 · 10/16/2026· Shipped 10/17/2026
Problem
@swamp/agent-runner and @swamp/deno-runner can't run on Windows, even though swamp itself supports Windows (#3475). Both download and manage their own binaries, and every method calls a detectPlatform() that only knows darwin and linux. On Windows it throws Unsupported operating system: windows before any download or spawn.
Neither manifest says so (platforms: []), so a Windows user only finds out when a method throws. The reporter of #3570 filed from Windows (Git Bash) while using @swamp/agent-runner.
Where it fails
Allowing windows in detectPlatform() isn't enough. Each runner assumes a Unix system all the way through:
@swamp/agent-runner
_lib/platform.tsdetectPlatform(): only darwin/linux. ThePlatformtype in_lib/types.tshas only thelinux-*anddarwin-*keys._lib/providers/claude.ts: downloads<version>/<platform>/claudeand caches it asclaude; a Windows build would beclaude.exeunder a Windows platform key. What Anthropic publishes for Windows needs checking._lib/providers/codex.ts: fetches@openai/codex-<platform>from npm, extracts it withtar, searches for a file named exactlycodex, then runschmod 0o755._lib/runner.ts: spawns withclearEnv: trueand a Unix-only allowlist (HOME,TMPDIR,SHELL,XDG_*, ...). Windows processes generally needSystemRoot,USERPROFILE,APPDATA,LOCALAPPDATA,TEMP/TMP,PATHEXTandCOMSPEC. Without them,auth=clilikely can't find the Claude CLI's stored login.- Claude
outputInstructionstells the agent to write its result with ateeheredoc, which needs a POSIX shell.
@swamp/deno-runner
_lib/installer.tsdetectPlatform(): the same darwin/linux-only check.archiveFilename()maps only the four Unix release zips; Deno publishesdeno-x86_64-pc-windows-msvc.zip.extractDenoFromZipshells out tounzip, which isn't on a stock Windows. It expects a baredenofile (Windows shipsdeno.exe), then runschmod 0o755._lib/executor.ts: the same Unix-only environment allowlist wheninheritEnvis false.
Proposed
Add Windows (at least windows-x64) to both runners:
- Platform keys and download names that match each upstream's Windows release (with the
.exesuffix). - Extraction that doesn't depend on Unix tools: unpack in-process, or use what Windows ships.
- Skip
chmodon Windows. - A Windows set of forwarded environment variables, keeping the cleared-environment design.
- For agent-runner, output instructions that work without a POSIX shell, or a check that one is available.
Until that lands, a cheap step is to state the supported platforms in both manifests and READMEs, so the limit is visible before a method throws.
Testing
Unit tests for the Windows platform key, download name and environment allowlist (no live downloads, following the existing installer and provider tests). Plus a manual run of run and review (agent-runner) and of the deno-runner methods on a Windows host.
Shipped
Click a lifecycle step above to view its details.
system commented 10/16/2026, 11:53:36 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.