Every AI coding tool has a memory problem. Copilot stores context in GitHub's servers. Cursor keeps it in app state. ChatGPT locks it in your account. Switch tools and the context is gone. The AI forgets everything.
Git notes fix this.
What they are
Notes attach metadata to a commit without changing the commit hash. They live in refs/notes/commits — a separate ref tree, stored as git objects like everything else. The commit stays the same. The note is an annotation.
git notes add -m "Session summary: built the events endpoint, verified with curl"
git log --show-notes --notes -10
Any AI that can run git log picks up where the last one left off. The tool is interchangeable. The context isn't.
Why nobody uses them
Almost nobody does. GitHub doesn't display them. They don't push by default. No popular workflow mentions them. The tooling assumes commit messages carry all the context.
The objections:
- "Merge conflicts" — only when two people annotate the same commit. Single author, no conflicts. And git has
--strategy=cat_sort_uniqbuilt in — it concatenates both. The problem is already solved. - "Push/fetch is non-default" — only matters when collaborators need them. For local AI context, local-only is a feature.
Both are team problems. For a single-author workflow they're irrelevant.
What goes in them
Session summaries. What was discussed, what was decided, what was built. Not the commit message — that's about the code change. The note is about the work session.
Session 2026-05-21:
Key ideas:
- Static JWT for auth: one key pair, claims identify user
- Verified shortcuts hit CloudFront from Mac and phone
- Bookmarklet is cleanest Mac option
Files updated:
- siri-thought-capture.md (added Verified section)
- links.md (added CRISP paper)
At the start of the next session: git log --show-notes -10. The AI has context. No onboarding, no "let me read the whole repo," no proprietary memory store.
Why not Jira
The plan should live where the work lives. A Jira board is a projection of what someone thinks is happening. The repo is what's actually happening. When they diverge — and they always diverge — the repo wins.
Put the plan in the repo:
- "What needs to be done" → a markdown file
- "What's in progress" → the branch
- "What's done" → the commit
- "What happened during the work" → git notes
One source of truth. Version-controlled. Diffable. Greppable. No separate tool that's always stale.
The real question
Why would you store development context outside git? The only reasons:
- Lock-in — your history is their moat
- Habit — built a database because that's what you do
- Cross-repo context — notes are per-repo
The third one is the only legitimate reason, and even that's a dotfile or a notes repo. It doesn't require a cloud service.
The pattern
The note is a file. The AI is a reader. Same architecture as everything else — files at known locations, tools are interchangeable readers. The context belongs to you because it's in your repo. Switch from Kiro to Cursor to Claude Code to whatever ships next month. The notes are still there.
The journey
Conversation about git notes as AI session memory. Realized nobody uses them because the use case didn't exist before AI-assisted development. The objections (merge conflicts, push/fetch) are team problems that don't apply to single-author workflows. Led to: why even have Jira? The plan should live where the work lives.