v0.10.23
Fixed
- Credential guard now actually blocks. The PreToolUse hooks installed into Claude Code's
~/.claude/settings.jsonand Codex's~/.codex/hooks.jsonusedsys.exit(1), which both hosts treat as a non-blocking hook error — reading~/.mureo/credentials.jsonwas never actually blocked. The guard templates (now shared via a singlemureo.credential_guardmodule so a fix can never again land on one host and miss the other) block with apermissionDecision: "deny"JSON response, protect the entire~/.mureotree via realpath + case-folded path matching (closing symlink, tilde, wildcardcred*, and case-insensitive-filesystem~/.MUREOevasions), and widen coverage toRead|Edit|Write|Grep|Glob|NotebookEditplusBash. Codex'shooks.jsonis now written in the nested{"hooks": {"PreToolUse": [...]}}shape Codex actually loads, migrating mureo's entries out of the legacy top-level list. The installers are upgrade-aware: re-runningmureo setup(or the configure UI's per-row Reinstall button) replaces stale hooks in place. (#393) mureo upgraderefreshes installed credential-guard hooks. The post-upgrade refresh now upgrades stale tagged guard hooks on both the Claude Code and Codex surfaces — only where a guard entry actually exists, so a deliberately removed guard is never reinstalled. (#398)- Dashboard (re)install buttons report their outcome. The basic-setup rows' (re)install buttons now toast every result — success, "already up to date", and error — instead of reacting only to errors. (#400)
Security
- Action required for existing installations: the old non-blocking guard stays in place until refreshed. Run
mureo upgradeonce (or press the credential-guard Reinstall button in the configure UI) to replace the stale hooks. (#393, #398)
Full Changelog: v0.10.22...v0.10.23