What's Changed
Bug Fix: Hook Field Name Compatibility
All OMC hook scripts were reading camelCase field names (toolName, toolInput, toolOutput, sessionId, directory) but Claude Code sends snake_case (tool_name, tool_input, tool_response, session_id, cwd). This caused hooks to silently receive empty values and not function correctly.
Changes
- 11 hook scripts updated to read snake_case first with camelCase fallback for backwards compatibility
- 5 template hooks updated to match
- PostToolUse hooks now return
suppressOutput: truewhen no meaningful message, reducing "hook error" display noise (related to Claude Code display bug #10936)
Files Modified
scripts/post-tool-verifier.mjs- PostToolUse verificationscripts/project-memory-posttool.mjs- Project memory learningscripts/pre-tool-enforcer.mjs- PreToolUse enforcementscripts/keyword-detector.mjs- Mode keyword detectionscripts/persistent-mode.cjs/.mjs- Persistent mode (Stop hook)scripts/session-start.mjs- Session initializationscripts/project-memory-session.mjs- Session memoryscripts/skill-injector.mjs- Skill auto-injectiontemplates/hooks/*- All template hooks
Update
omc updateFull Changelog: v4.0.3...v4.0.4