What the reviewer found
SessionEnd runs six LifeOS hooks from ~/.claude/hooks: WorkCompletionLearning.hook.ts and SessionCleanup.hook.ts update work state under ~/.claude/LIFEOS/MEMORY, MemoryHealthGate.hook.ts runs a local check, and UpdateCounts.hook.ts refreshes a usage cache from the Anthropic API. UpdateCounts, DocIntegrity.hook.ts and IntegrityCheck.hook.ts are thin wrappers over handler modules not in the packet, so those parts are unreviewed.
unconditional— runs without any action from the usertelemetry— reports to a vendorunreviewed-script— runs a script that could not be read
What was read
The hook definition and the 6 scripts it runs, fetched from danielmiessler/LifeOS:
LifeOS/install/hooks/hooks.jsonLifeOS/install/hooks/WorkCompletionLearning.hook.tsLifeOS/install/hooks/SessionCleanup.hook.tsLifeOS/install/hooks/UpdateCounts.hook.tsLifeOS/install/hooks/MemoryHealthGate.hook.tsLifeOS/install/hooks/DocIntegrity.hook.tsLifeOS/install/hooks/IntegrityCheck.hook.ts
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.