Skip to content

Validate the Windows Ralph loop on a local Windows machine #26

Description

@rxdt

Contributor summary: Test the Windows workflow on a real Windows machine and document or fix what you find. Clear test notes are useful even when something does not work. (Difficulty: medium)

Context

Two files handle Windows: the loop runner harness/ralph.ps1 (the PowerShell twin of ralph.sh), and the bit of harness/cli.py that decides which of the two to run:

launcher = (
    ["powershell.exe", "-NoProfile", "-File", str(loop_dir / "ralph.ps1")]
    if IS_WINDOWS  # support windows with twin script
    else [str(loop_dir / "ralph.sh")]
)

GitHub CI runs the Windows tests, but nobody has ever run an actual loop on a real Windows machine. So we don't know if it works. That's all this issue is: find out, and write down what you find.

You need a Windows box and an agent CLI you're already logged into. That's it.

What to try

Please report your Windows version and PowerShell version ($PSVersionTable), then work through these.

1. A normal run

harness run claude 2 1

Two iterations, one minute each. Check that the agent actually receives the prompt, that RALPH_ITERATION is set for each pass, that a log file appears under scratchpad\runs\, and that it finishes cleanly instead of hanging.

2. The script directly, with awkward arguments

powershell.exe -NoProfile -File harness/ralph.ps1 2 1 claude -p --model "some model with spaces"

Quoting and spaces are where PowerShell usually bites. Try flags, quoted strings, and arguments containing spaces.

3. A worker that fails

Point it at a command that exits nonzero. The exit code should come back out of harness run, and the next iteration should not start. A loop that keeps going after a failure is the worst outcome here.

4. A real commit through the hooks

Let an agent make a small change and commit it. Confirm RALPH_LOOP=1 is set and the gate actually runs. This is the one that matters most — if the hooks don't fire on Windows, none of the protection exists there.

Also worth checking, if you have the patience

harness configure-agents (cli.py:537) writes settings into ~/.claude/settings.json and ~/.codex/config.toml. Those paths should be fine on Windows, since Python's Path.home() knows about %USERPROFILE%, but nobody has watched it happen. Run it and check RALPH_LOOP=1 really landed in both files, and that it made the .bak backup first.

The part I'd worry about more is the deny rules in CLAUDE_RULES. They match on the text of a bash command:

"Bash(*git commit*--no-verify*)",

If Claude Code runs commands through PowerShell on Windows instead of bash, patterns like that may match nothing at all — and containment would quietly stop working. No error, no warning, just absent. That's a bigger deal than the loop runner, so if you can test it, please do.

And an honest question nobody here knows the answer to: does Codex CLI run natively on Windows, or is it WSL only? If it's WSL only, that's worth writing down.

Two things we already know are broken on Windows

Don't waste time rediscovering these:

Optional

Fixes to ralph.ps1 and its test, test_ralph_ps1.py.

Done when

  • Any PowerShell-version or argument-passing problem is either fixed or written down.
  • Either a small Windows smoke test lands, or the docs say what works and what doesn't.

"I tried this and it doesn't work on Windows" is a perfectly good result. We would much rather document a real limitation than leave people guessing. A comment with your version numbers and what broke is a genuine contribution on its own.

How to contribute

Leave a short comment with your plan before coding. Keep changes focused, add or update tests, and run the checks in CONTRIBUTING.md. This is agentic developer tooling; pull requests from Python, Rust, and generalist contributors are welcome.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for newcomershacktoberfestOpen for Hacktoberfest contributionshelp wantedExtra attention is neededup-for-grabsAvailable for outside contributors

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions