Fix Windows startup hook failure caused by inherited SHELLOPTS #360
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
On Windows with Git Bash, the superpowers
SessionStarthook fails with:This happens because Claude Code's shell environment exports
SHELLOPTSwith theonecmdoption enabled:When bash inherits this exported variable and runs
session-start.sh, theonecmdoption causes bash to exit after processing one compound command. Combined withset -euo pipefailin the script, this causes the script to exit before producing any output.Root Cause Analysis
SHELLOPTSis exported withonecmdbash session-start.sh, bash inheritsSHELLOPTSand enables all those optionsonecmdoption (equivalent toset -t) causes bash to "exit after reading and executing one command"set -euo pipefailruns, the script exits immediatelyReproduction
Solution
Use
env -u SHELLOPTSto unset the problematic environment variable before invoking bash. This ensures the script runs in a clean environment regardless of what shell options are inherited.Testing
Tested on Windows 11 with Git Bash 5.1.16 and Claude Code 2.1.x. After applying this fix, the startup hook works correctly and the "SessionStart:startup hook error" message no longer appears.
🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
✏️ Tip: You can customize this high-level summary in your review settings.