PreToolUse hook fails with 'hook error (No content)' when path contains spaces
Resolved 💬 2 comments Opened Jan 12, 2026 by jcs89000 Closed Jan 12, 2026
Description
PreToolUse hooks fail silently with "hook error (No content)" when the hook command path contains spaces (e.g., Google Drive paths).
Environment
- Claude Code version: v2.1.5
- OS: macOS (Darwin 24.6.0)
- Path:
/Users/.../GoogleDrive-.../My Drive/Intelligence-Vault/
Configuration
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/Users/.../My Drive/Intelligence-Vault/.claude/hooks/reject-cd-chaining.py"
}
]
}
]
}
Observed Behaviour
Every Bash tool call fails with:
⏺ Bash(mv wip-prompts/file.md KB-Articles/file.md)
⎿ PreToolUse:Bash hook error
⎿ (No content)
The hook script itself works correctly when invoked directly from the shell:
echo '{"tool_name":"Bash","tool_input":{"command":"mv test.md out.md"}}' | python3 "/path/with spaces/hook.py"
# Exit code: 0 (correct)
Expected Behaviour
Hook paths containing spaces should be properly escaped/quoted when executed by Claude Code.
Workaround
Remove the hook from settings, or use a path without spaces.
Additional Context
- Tried both
$CLAUDE_PROJECT_DIRvariable and absolute path - same result - The hook script has a try/except that calls
sys.exit(0)on any exception (fail-open), so the error is occurring before the Python script executes - Multiple parallel Bash tool calls all fail simultaneously with the same error
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗