The parseLifecycleRequest function was checking for "cycle" first, but since the title already contains "lifecycle:" (which includes "cycle"), all lifecycle messages matched as cycle actions, making restart and shutdown unreachable. Fixed by: 1. Checking restart/shutdown before cycle 2. Using " cycle" (with leading space) to match the word, not prefix Closes gt-rixa 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>