Previous timeout using CancellationToken didn't work because ReadToEndAsync blocks waiting for process output. Now using Task.WhenAny with Task.Delay to properly timeout and kill hung processes after 5 seconds. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>