- Session 01“Authentication lives in src/legacy-auth.ts.”
- Repository changesAuth moves to src/auth/session.ts.
- Session 14The old location is retrieved without proof.
Confident answer. Unknown source. Outdated truth.
Memory for coding agents you can inspect.
Durable knowledge stays beside the code, points back to evidence and the run that produced it, and is explicitly superseded when reality changes.
src/auth/session.tsL1–L3passedForgetting slows an agent down. Remembering an obsolete repository fact—and treating it as current truth—can send the next session confidently in the wrong direction.
Confident answer. Unknown source. Outdated truth.
Bounded verification. Explicit correction. Preserved history.
Claim → Evidence → Run → Git history → Retrieval → Verify or supersede
Every useful discovery follows the same small loop: capture what happened, ground it, store it beside the code, and check it again when reality moves.
Agent finds a stable project fact.
Exact output is saved as evidence.
Claim, run, and evidence live in Git.
A future agent queries the active claim.
Changed facts get a new superseding claim.
Node.js 18+, npm, and Git are all you need. GraphKeeper works on Linux, macOS, Windows through Git Bash or WSL, and current native Windows PowerShell.
npx graphkeeper@latest init --integrate codexUse --integrate claude, another adapter, or --integrate all for your setup.
npx graphkeeper@latest checkinit scaffolds graph/, evidence/, the validator, hook, skill, and agent guidance.
$graphkeeper · /graphkeeper · @graphkeeperThe agent captures evidence, then appends the run and grounded claim safely.
npx graphkeeper query <subject>Run doctor when you need physical evidence and cited line ranges checked too.
graphkeeper --helpgraphkeeper initScaffold the graph and optionally install agent adapters.graphkeeper integrate remove <adapter>Remove recognizable GraphKeeper-owned files for one adapter.graphkeeper checkValidate schema, provenance, append-only history, and committed evidence.graphkeeper query <subject>Print active claims and provenance for an exact ID or unique alias.graphkeeper doctorCheck evidence files, containment, cited lines, dangling references, and unused entities.graphkeeper append run ...Safely create the run record behind a finding.graphkeeper append claim ...Safely append and link an evidence-backed claim.graphkeeper updateInstall one exact newer stable version globally; repository files stay untouched.graphkeeper --help / --versionShow supported options or the installed CLI version. When check passes, commit the generated graph, validator, agent skill, and guidance file with your repository.
It should be able to defend what it remembers.
The claim carries a source instead of asking you to trust a summary.
Tool output points to exact, line-addressable evidence stored in the repository.
The claim and its producing run reference one another, preserving provenance in both directions.
A later session retrieves the active claim, inspects its provenance, and verifies only the state that may have changed.
A successor points back with supersedes, making the correction explicit.
The old claim and evidence remain in Git instead of disappearing behind an overwritten note.
GraphKeeper stores flat claims. A tool-output claim cites exact evidence, points to the run that produced it, and can be replaced only by appending a successor.
claim_1a2b3c4devidence/auth-location.log#L1-L3claim_5e6f7a8bevidence/auth-migration.log#L4-L7Supersedes the older claim. It does not erase it.
graph/entities.jsoncanonical subjectsclaims.jsonflat grounded factsruns.jsonproducing runsSCHEMA.mdrecord contractevidence/captured line-addressable artifactsscripts/validate.mjscanonical fast validator.agents/skills/graphkeeper/SKILL.mdCodex skill contractEntities, claims, runs, and evidence are ordinary repository files. They travel with the code and are reviewed with the same Git workflow.
“Append-only” is enforced relative to committed Git history. It is reviewable integrity—not a claim of cryptographic immutability.
v0.5.0 ships a closed, data-driven adapter registry. Each target receives the same vendor-neutral GraphKeeper skill and a small reminder in its guidance location.
--integrate codex--integrate claude--integrate cursor--integrate opencode--integrate kilo--integrate windsurf--integrate geminicli--integrate kiro--integrate antigravitynpx graphkeeper@latest init --integrate allAutomatic invocation is benchmarked for Codex and Claude Code. The other seven adapters install documented vendor locations whose discovery behavior can change with the agent product version.
The real failure is a write race: two sessions read the same graph, append different findings, and the later file replacement silently drops the first.
graphkeeper append rungraphkeeper append claimv0.5.0 serializes supported claim/run graph-file mutations so concurrent sessions do not silently overwrite one another. It does not claim distributed transactions.
Start with one repository and one agent. The memory stays with the code, and every durable claim has a path back to why it exists.
npx graphkeeper@latest init --integrate codex