This release is a safety-and-trust arc — four plans that make the therapist more responsible, not more capable. Every one of them splits a dumb, deterministic mechanical layer from the model's judgment: facts and backstops are computed in code; what to do with them stays with the therapist and the human.
What's new
-
Mechanical safety net. A
UserPromptSubmithook (hooks/safety-net.js) scans every message for explicit first-person crisis language and, on a match, injects the emergency-resources block plus a directive to follow the crisis protocol — into that turn, so it works even deep into a long session when early instructions have drifted. A backstop keyword matcher, not crisis detection; the prose safety protocol stays primary. Scoped to first-person (third-person reports, grief, media, and quotes stay silent), English-only at launch, fail-open. A recall/precision eval corpus keeps that scoping measured rather than vibes. -
Profile provenance. Current-state profile entries now carry a
*(YYYY-MM-DD)*last-confirmed stamp and get re-checked at a lull when they go stale, instead of being read back as timeless truth — with zero fabricated dates (an invented date is a false provenance claim). Areview my profilecommand runs the walk-through on demand and migrates legacy undated profiles through confirmation alone. -
Usage-pattern reflection. A
SessionStarthook logs session cadence to a local plain-text file and hands the therapist facts-only context — counts, gaps, time-of-day clusters, and trend vs. your own baseline — so it can gently notice if you're leaning on it too hard. The counterweight to "remembers everything, forever." Raised at most once, at a lull; a decline is respected durably. Explicitly not a crisis screen, and nothing ever leaves the machine. -
Supporting plumbing.
doctornow verifies all three surfaces (present, unmodified, registered) at warning severity so pre-feature installs keep validating clean; the surgical.claude/settings.jsonmerge was generalized to register hooks across events (safety-net's path preserved byte-identical); session notes can capture a start time when the current-time signal is present (never fabricated).
For existing installs
Run npx inner-dialogue@latest update --path <your-folder>. It delivers the two hooks, the usage-reflection.md and profile-protocol.md guidance files, and registers both hooks in .claude/settings.json (backup taken first). Nothing is logged retroactively — cadence facts accumulate from your next session forward, and .therapy/usage-log.txt is plain text you can delete anytime. Your profile.md, sessions/, and CLAUDE.md are untouched, as always.