From df986fd5e2de3addb8d061197452e2b79898b7aa Mon Sep 17 00:00:00 2001 From: MSL <232237854+milla-jovovich@users.noreply.github.com> Date: Tue, 14 Apr 2026 12:39:35 -0700 Subject: [PATCH] fix: replace invalid 'decision: allow' with {} in hooks Closes #872. The top-level decision field only recognizes "block". To not block, return empty JSON {}. "allow" was silently ignored by Claude Code, causing unpredictable behavior. Co-Authored-By: Claude Opus 4.6 (1M context) --- hooks/mempal_precompact_hook.sh | 10 +++------- hooks/mempal_save_hook.sh | 9 +++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/hooks/mempal_precompact_hook.sh b/hooks/mempal_precompact_hook.sh index 1c14193..3a74ca5 100755 --- a/hooks/mempal_precompact_hook.sh +++ b/hooks/mempal_precompact_hook.sh @@ -68,10 +68,6 @@ if [ -n "$MEMPAL_DIR" ] && [ -d "$MEMPAL_DIR" ]; then python3 -m mempalace mine "$MEMPAL_DIR" >> "$STATE_DIR/hook.log" 2>&1 fi -# Notify — compaction is about to happen but filing is handled in background -cat << 'HOOKJSON' -{ - "decision": "allow", - "reason": "MemPalace pre-compaction save. Your full conversation has been saved verbatim in the background — no action needed. Compaction can proceed safely." -} -HOOKJSON +# Silent: return empty JSON to not block. "decision": "allow" is invalid — +# only "block" or {} are recognized. +echo '{}' diff --git a/hooks/mempal_save_hook.sh b/hooks/mempal_save_hook.sh index 5ffb967..d8e7cc2 100755 --- a/hooks/mempal_save_hook.sh +++ b/hooks/mempal_save_hook.sh @@ -168,12 +168,9 @@ if [ "$SINCE_LAST" -ge "$SAVE_INTERVAL" ] && [ "$EXCHANGE_COUNT" -gt 0 ]; then } HOOKJSON else - cat << 'HOOKJSON' -{ - "decision": "allow", - "reason": "MemPalace auto-save checkpoint. Your conversation is being saved verbatim in the background — no action needed from you. Continue working." -} -HOOKJSON + # Silent mode: return empty JSON to not block. "decision": "allow" is + # not a valid value — only "block" or {} are recognized. + echo '{}' fi else # Not time yet — let the AI stop normally