Skip to main content
← Back to list
01Issue
FeatureShippedExtensionsPublic
Assigneesstack72

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.ts detectPlatform(): only darwin/linux. The Platform type in _lib/types.ts has only the linux-* and darwin-* keys.
  • _lib/providers/claude.ts: downloads <version>/<platform>/claude and caches it as claude; a Windows build would be claude.exe under a Windows platform key. What Anthropic publishes for Windows needs checking.
  • _lib/providers/codex.ts: fetches @openai/codex-<platform> from npm, extracts it with tar, searches for a file named exactly codex, then runs chmod 0o755.
  • _lib/runner.ts: spawns with clearEnv: true and a Unix-only allowlist (HOME, TMPDIR, SHELL, XDG_*, ...). Windows processes generally need SystemRoot, USERPROFILE, APPDATA, LOCALAPPDATA, TEMP/TMP, PATHEXT and COMSPEC. Without them, auth=cli likely can't find the Claude CLI's stored login.
  • Claude outputInstructions tells the agent to write its result with a tee heredoc, which needs a POSIX shell.

@swamp/deno-runner

  • _lib/installer.ts detectPlatform(): the same darwin/linux-only check. archiveFilename() maps only the four Unix release zips; Deno publishes deno-x86_64-pc-windows-msvc.zip.
  • extractDenoFromZip shells out to unzip, which isn't on a stock Windows. It expects a bare deno file (Windows ships deno.exe), then runs chmod 0o755.
  • _lib/executor.ts: the same Unix-only environment allowlist when inheritEnv is 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 .exe suffix).
  • Extraction that doesn't depend on Unix tools: unpack in-process, or use what Windows ships.
  • Skip chmod on 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.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 10 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/17/2026, 12:32:18 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack7210/16/2026, 11:54:55 PM
Editable. Press Enter to edit.

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.