Declarative
What agents follow is declared in the repository. One Markdown file per decision says what holds, since when and for which paths; .ai/kontext.toml says how it is served. Nothing lives in a service or a UI.
Declare your team's decisions in the repository. Agents propose changes, people approve them in pull requests, and every agent at the same commit works from the same record.
---
id: 2026-09-28-prices-are-integer-cents
kind: decision
title: Prices are integer cents
status: accepted
date: 2026-09-28
paths: [src/billing/**]
author: Jane Doe
---
Floats broke VAT rounding on invoices with many lines.
Every amount is stored and computed as an integer number of cents.# committed, reviewed like code
[brief]
budget_tokens = 1400 # what one brief may cost an agent
max_decisions = 12
[freshness]
threshold_commits = 20 # flag an entry after this many commits on its paths
[hooks]
validate = true # malformed entries and secrets block the commit
trailers = true # `Decision: <id>` on the commit that ships a decision
[secrets]
scan = "staged" # scan every staged file, not only knowledgeFrom these two files, kontext derives the rest:
ctx_brief with focus: ["src/billing"] gets the decision first,kontext why src/billing/round.ts:40 shows it next to the blame and the commits behind it,Decision: 2026-09-28-prices-are-integer-cents,src/billing/** it is flagged for a check,kontext log --all keeps the chain.CLAUDE.md, AGENTS.md, .claude/rules | Claude Code auto memory | Memory services | kontext | |
|---|---|---|---|---|
| Written by | people, as prose | the model, on its own | the model, from sessions | agents propose, people approve |
| Shared and reviewed | in pull requests | no: one user, one machine | per deployment, no review | in the pull request of the change |
| Reaches the agent | the root file every session; a nested CLAUDE.md when the agent reads files in its directory; a .claude/rules file with paths: when matching files are touched | the first 200 lines of its index, every session | by similarity to the query | ranked for the paths it names, within a budget |
| An entry records | paths at most (.claude/rules); no status, date or owner | when it was written | depends on the store | paths, status, date, author, last verification |
| When it goes stale | stays until someone notices | the model may rewrite it | the model may overwrite it | flagged after N commits on its paths |
| Works with | Claude Code reads AGENTS.md natively, as do Codex, Cursor and OpenCode; .claude/rules is Claude Code only | Claude Code | their plugin, SDK or MCP server | every MCP client and the CLI |
kontext does not replace CLAUDE.md or AGENTS.md: keep the few instructions every session needs there. Decisions are too many to load whole and too important to leave unreviewed. More on the alternatives
/.ai/ @acme/architects in CODEOWNERS and code-owner review required, no agent changes what every agent follows without that team's approval.git log -- .ai and kontext log --all show who decided what, when, and what replaced it. With kontext's hooks installed, git log --grep "Decision: <id>" finds the commit that shipped a decision.kontext check fails a pull request on malformed entries, duplicate ids or high-confidence secrets.