mirror of
https://github.com/mikeyobrien/ralph-orchestrator.git
synced 2026-04-25 07:05:57 +03:00
[GH-ISSUE #150] [Bug]: ralph run hangs and does nothing #59
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/ralph-orchestrator#59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @The-Zona-Zoo on GitHub (Feb 3, 2026).
Original GitHub issue: https://github.com/mikeyobrien/ralph-orchestrator/issues/150
Operating system
Windows 11
Ralph version
2.4.3
AI backend
Claude Code
Hat preset / workflow
spec-driven
Steps to reproduce
ralph init --preset spec-drivenralph run(PROMPT.MD exists after runningralph plan)Expected behavior
ralph loop to run as expected
Actual behavior
ralph hangs on iteration 1/X without every calling the backend model
Logs or error output
Config / preset file
spec-driven
@The-Zona-Zoo commented on GitHub (Feb 3, 2026):
Analysis
Disclaimer: Claude Code analyzing with the help of my full workspace .ralph output
Root Cause Hypothesis: PTY +
--output-format stream-jsonon Windows ConPTYAfter investigating the codebase, I found a key difference between
ralph plan(which works) andralph run(which hangs):ralph plan- Works ✅From
sop_runner.rs:180-191:std::process::Commandwith inherited stdio (NOT PTY)CliBackend::for_interactive_prompt("claude")→claude_interactive()claude --dangerously-skip-permissions --disallowedTools=... "prompt"ralph run- Hangs ❌From
loop_runner.rs:portable-pty(ConPTY on Windows)CliBackend::claude()with these flags:--dangerously-skip-permissions
--verbose
--output-format stream-json ← KEY DIFFERENCE
--disallowedTools=...
-p "prompt"
The Bug
The combination of Windows ConPTY +
--output-format stream-jsonappears to cause Claude CLI to hang. Possible reasons:pty_executor.rs:430callsreader.read()which blocks forever waiting for data that never arrivesEvidence from Logs
DEBUG ralph_adapters::pty_executor: Spawning PTY output reader thread (streaming mode)
← hangs here indefinitely until Ctrl+C
The reader spawns but
reader.read()blocks because Claude isn't producing output through ConPTY.Potential Fixes
std::process::Commandwith piped I/O (likeralph plandoes)--output-format stream-jsonon Windows: Use text output format instead when running on WindowsAnalysis performed by reviewing:
pty_executor.rs,cli_backend.rs,loop_runner.rs,sop_runner.rs@mikeyobrien commented on GitHub (Feb 3, 2026):
This is not a bug, windows is not supported. Welcome to add support via PR but it's not a priority for me at the moment.
Is there anything preventing using WSL?
@The-Zona-Zoo commented on GitHub (Feb 3, 2026):
Makes sense, I originally thought that was the case, but when reading the installation prerequisites it says windows is supported without a mention of WSL. Maybe that should be changed until it is properly supported.
@mikeyobrien commented on GitHub (Feb 3, 2026):
Oof, sorry about that. I'll get that fixed.