From 3284c62e5530b473e8a85c2e61f3aa03146554bb Mon Sep 17 00:00:00 2001 From: Nicholas Tindle Date: Sun, 11 Oct 2026 04:07:31 -0500 Subject: [PATCH] Print nothing from PreToolUse for tools other than recall Muse 1.4.4 rejects `continue` in PreToolUse hook output ("unsupported `continue` in output of PreToolUse hook output") and records the hook as failed on every tool call; T3 shows each as a failed item. With no output Muse applies its normal approval, which is what the pass-through meant. Co-Authored-By: Claude Opus 5.5 --- hooks/recall-approve.js | 9 +++------ test/unit.mjs | 3 +-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/hooks/recall-approve.js b/hooks/recall-approve.js index cf0eca7..4fba1e0 100644 --- a/hooks/recall-approve.js +++ b/hooks/recall-approve.js @@ -47,14 +47,11 @@ async function main() { }); return; } - - writeOutput({ continue: true, suppressOutput: true }); + // Any other tool: no output, so Muse applies its normal approval. Muse 1.4.4 rejects + // `continue` in PreToolUse output and logs the hook as failed on every tool call. } catch (err) { debugLog(settings, 'Recall approve error', { error: err.message }); - writeOutput({ continue: true, suppressOutput: true }); } } -main().catch(() => { - writeOutput({ continue: true, suppressOutput: true }); -}); +main().catch(() => {}); diff --git a/test/unit.mjs b/test/unit.mjs index 821841c..45285cd 100644 --- a/test/unit.mjs +++ b/test/unit.mjs @@ -112,8 +112,7 @@ describe('hooks', () => { input: JSON.stringify({ tool_name: 'mcp__supermemory__add_memory' }), }); assert.equal(result.status, 0, result.stderr); - const out = JSON.parse(result.stdout.trim().split('\n').at(-1)); - assert.equal(out.continue, true); + assert.equal(result.stdout.trim(), ''); }); });