What the reviewer found
SessionStart runs .claude/helpers/hook-handler.cjs, which on every run requires the sibling modules router.js, session.js, memory.js and intelligence.cjs (their top-level CLI code runs on require, and none of them are in the packet, so what actually executes is unreviewed) for session-restore, then .claude/helpers/auto-memory-hook.mjs import, which loads the @claude-flow/memory package (not in the packet) to pull Claude Code auto-memory files into .claude-flow/data/auto-memory-store.json. Nothing observed leaves the machine, but the real behaviour lives in code the packet does not contain.
unconditional— runs without any action from the userunreviewed-script— runs a script that could not be read
What was read
The hook definition and the 2 scripts it runs, fetched from ruvnet/RuView:
.claude/settings.json.claude/helpers/hook-handler.cjs.claude/helpers/auto-memory-hook.mjs
What the static scan said
The 26-rule scan found nothing in this file; the review read it anyway.
How this review was made
Fable 5.1 read the files above on 7 September 2026 and answered three questions: is it dangerous to whoever installs it, is each scanner finding real, and what should the installer know. The verdict is bound to the file's hash; when the file changes, it is scanned afresh and reviewed again. A script that changes while the definition does not is not re-reviewed — that is a known gap. How the scan and the review work.