v1.2.1 — hook-drift diagnosis + plugin notice + version guard
v1.2.1 — hardening patch (H4 / H8 / H9)
No safety-decision changes — the strict hook verifier's installed/not-installed decision is byte-for-byte preserved (confirmed by code review). This patch makes failures legible and sets expectations.
H4 — Node version-manager / plugin-path drift diagnosis
The PreToolUse hook command pins an absolute Node path, and the verifier does exact equality (deliberately — loosening it would reopen the crafted-command bypass closed in the v1.0 audit). So when Node upgrades (Homebrew Cellar bump, nvm/asdf/mise/fnm switch) or the version-stamped plugin path moves, the installed command stops matching — and the old message was a raw expected X; got Y dump.
Now the verifier classifies a structurally-valid command mismatch into an actionable diagnosis:
- "Node binary drift" — the pinned interpreter no longer exists on disk (the classic version-manager / Homebrew move);
- "Node binary changed" — both interpreters exist (a version-manager switch);
- "Hook script path drift" — the version-stamped plugin path moved (a plugin update);
…each with the /kimi:setup remedy. Surfaced from both the runtime gate (behind /kimi:rescue//kimi:swarm//kimi:pursue refusal + read-only warnings) and /kimi:setup --check. Shipped as diagnosis, not auto-refresh — silently rewriting the security-config block from the verify path was judged riskier than a clear message.
H8 — /kimi:setup surfaces installed kimi-code plugins
/kimi:setup (install and --check) now emits a non-blocking notice listing installed+enabled kimi-code plugins, with a one-liner that their tool calls are denied (and waste model turns) under the read-only commands. Best-effort; never blocks setup; never mutates the plugin list. Closes the "kimi did nothing useful" turn-waste confusion.
H9 — version-probe above-max clarity
The out-of-range version warning now distinguishes a kimi-code release newer than the newest version we've tested ("likely fine, but unverified") from a below/gap version — the user-facing "you're past what we audited" signal.
Tests
451 pass. New/updated: install-paths.test.ts (parser round-trip + classifier matrix), hook-install.test.ts (node-drift + path-drift integration), setup.test.ts (H8 notice + absent manifest), kimi-version-probe.test.ts (above-max + maxTestedMinor). Reviewed clean (code-reviewer: decision-preserving, no blocker).