Show HN: CommitLore – Git memory for decisions coding agents keep forgetting CommitLore, a new open-source tool from developer MongLong0214, stores team decisions in Git and feeds them to coding agents before they edit files, preventing agents from re-proposing rejected changes. The tool, available at version 1.2.0, integrates with Claude Code, Codex, Gemini CLI, and Hermes, and requires Node.js 22.23.2+ and Git. It automatically delivers applicable decisions to agents, while capturing new decisions requires agent action, and it does not control data flow once context is passed to the host. Your coding agent keeps re-proposing things your team already rejected. CommitLore keeps those decisions in Git and hands the agent the ones still in force, before it edits the file. CommitLore has no hosted service; it keeps its records in Git. Once its MCP server or hook returns context, the host handles that context under its own policy; CommitLore does not control that data flow. Two halves, and only one of them is automatic. Delivery — handing the agent the decisions that still apply, before it edits a path — happens on its own once installed. Capture — writing a new decision down — is something the agent does when a change carries a reason the diff cannot show; an ordinary git commit cannot start it, because a hook has the diff and a capture needs the session. What happens automatically what-happens-automatically-and-what-does-not says exactly which hosts do which. Contents Install install What the agent receives see-it-work What happens automatically what-happens-automatically-and-what-does-not When this will not help you when-this-will-not-help-you The problem, in one example the-code-survived-the-decision-didnt What it is, in full what-it-is-in-full A path query see-a-path-query This repository as its own demo the-repository-is-the-demo Path scope vs. retrieval retrieval-can-find-records-path-scope-keeps-reversed-decisions-out How it works how-it-works A field report from another repository what-it-looks-like-on-a-real-repository What makes it different what-makes-it-different Where it pays off where-it-pays-off How records get created how-records-get-created A complete record a-complete-record What the repository proves what-the-repository-proves Evidence evidence-a-narrower-product-claim Uninstall uninstall · Documentation documentation · Contributing contributing Install once. Install the host integration and initialise the repository where you want it to work. Claude Code — one plugin registers the MCP server, the pre-edit context hook and the skills: /plugin marketplace add MongLong0214/commitlore /plugin install commitlore@commitlore That is the whole plugin: the MCP server, the pre-edit hook and the skills. It puts no commitlore on PATH , so the commitlore … commands below come from install.sh / install.ps1 and need that install as well. Codex — install the native plugin with one command: commitlore plugin install-codex It registers the marketplace and plugin through Codex's own CLI, never by editing its configuration or cache, and the install script below runs the same command when it finds Codex. Start a new Codex session afterwards: the plugin's skill and MCP server are loaded at session start, not on install. The CLI below provides the repository commands. Prerequisites for either path: Node.js 22.23.2+ and Git. The script checks both before it writes anything. Any other coding agent — install the CLI: curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh | sh -s v1.2.0 Windows — the same install, in PowerShell: & scriptblock ::Create irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.ps1 v1.2.0 Host wiring on Windows requires v1.1.1 or later . Before it, detection could not see a .cmd shim and the installer could not run one, so a Windows install placed the CLI and wired nothing — reported as ok: false , never as success. Verified on a real machine at 1.1.1 for Codex, Gemini CLI and Hermes. Hermes — after installing the CLI, configure its host integration: commitlore hermes install Which hosts are supported, and what each install path requires: docs/COMPATIBILITY.md /MongLong0214/commitlore/blob/main/docs/COMPATIBILITY.md . Give your next agent the judgment your last one earned. Then run commitlore init in each repository where you want validation hooks, a local index, and the repository-owned agent procedure. The installer detects supported coding agents and registers the local MCP server where it can do so safely. cd your-repository commitlore init commitlore context . Re-run the install command. It updates the CLI and the agent registrations, and it cannot reach two things: Hooks already installed in a repository. One installed before v1.0.2 records the release it came from, so it keeps validating commits with that build. The installer has no way to know which repositories have hooks. Sessions already running. A host loads its runtime once and keeps it. So after upgrading: commitlore doctor names any hook still pinned, and any stale session commitlore hooks install in each repository doctor names Neither is a defect in the release; both are state a release cannot reach. A hook is a file written at install time, so there are three generations. Installed before v1.0.2 , it names one release directly. Installed v1.0.2 through v1.1.2 , it follows current but its older containment stub does not recognise an ordinary upgrade — under the PATH git gives a hook it refuses the commit. Installed v1.1.3 or later , ordinary upgrades are followed automatically. The first two need commitlore hooks install once, in each repository, and commitlore doctor names which. After that: - Commit normally. Most commits carry no record. - If a record is present, the commit-msg hook validates it; it never creates one. - Delivery and capture are different layers; the next section says exactly which hosts have each one. Keep working through your coding agent. When a change contains decision context the diff cannot preserve, ask the agent to include a CommitLore record in the commit. Prefer to inspect or pin the installation? The one-liner is for convenience. For a reviewed or pinned install, download and inspect install.sh first, or clone the repository. The script installs a pinned source checkout and a thin wrapper that runs node