"Claude Code forgets everything between sessions. Your team shouldn't."
Tuesday you and Claude Code work out why sold-out products have to stay visible in search. Hiding them tanked organic landing traffic, so they render as unavailable instead. It took most of an afternoon to settle. Thursday a teammate opens a fresh session in the same repo, asks their agent to clean up the search code, and it proposes hiding sold-out products. Politely, with a diff.
Some things do persist between sessions. Your code. Git history. CLAUDE.md, which Claude Code reads at startup. That's real memory and you should use all of it. But look at what each one holds. Code shows the current state, and git blame adds what changed and when. CLAUDE.md holds whatever standing instructions you wrote by hand. None of them holds the reasoning, the options you weighed, or the ones you rejected and why. The why evaporates with the session, and it's the one thing the next agent needed.
You can paste conclusions into CLAUDE.md, and for personal rules that works fine. It doesn't scale to a team's decisions. A pasted conclusion has no author, no date, no reason attached, and it only reaches teammates once the edit lands in their checkout.
What worked for us is a decision log. We build kgai, a Claude Code plugin that records structural decisions while you work. Capture sits at the write boundary, a bundled skill has the agent record as it edits and a Stop hook catches the case where it forgot. Each decision is an immutable event in an append-only log, carrying what changed, why, and what was rejected. Before an agent touches an area it reads the decisions in force there, so Thursday's agent sees the sold-out ruling before it proposes undoing it. A change of mind is a new decision that supersedes the old one through an explicit link with a reason, and the old one stays queryable.
The team part is the point. Sync is opt-in through an S3 bucket you own, and every synced machine holds the whole graph, so a teammate's agent knows what yours decided. If the idea is new to you, what decision memory is covers the model and sharing it across a team covers the sync.
It's local-first with no daemon and no server, MIT licensed, and there's a standalone kg CLI for when you're outside Claude Code.
Install is two commands and capture runs itself from there. If you'd rather compare options first, we keep an honest comparison page.
Try it on your repo. Two commands, MIT, nothing leaves your machine until you configure a bucket.
See how kgai compares to other tools on the comparison page, or browse the other notes.