Agent memory file

Status: draft 0.1 (agent-memory/0.1). Fixes friction #15 (memory between sessions is ad hoc). Reference implementation: agent_index/memory.py.

One file per agent or per person, holding the things an agent should not have to relearn: preferences, lessons, facts, trusted sources, and things to avoid. Any agent can read it, append to it, and pass it to another agent.

File

JSON Lines, UTF-8. The first line is a header:

{"format": "agent-memory/0.1", "created_at": "2026-11-09T07:50:00Z"}

Every other line is one entry, or a tombstone.

Entry

{
  "id": "3f9a1c2b7d10",
  "kind": "lesson",
  "text": "The harbor site blocks requests without a user agent.",
  "scope": "harbor.example",
  "tags": ["fetching"],
  "source": "session:2026-11-08-a",
  "confidence": 0.9,
  "expires_at": null,
  "supersedes": null,
  "created_at": "2026-11-09T07:51:02Z"
}
Field Meaning
kind preference (how the person wants things), lesson (what worked or failed), fact (stable information), source (a place worth checking first), avoid (a place or action to skip).
text One sentence a model can read as-is.
scope global, a domain such as github.com, or project:<name>.
source Where it was learned: a URL, a session id, or user when the person said it.
confidence 0 to 1. Lessons inferred by the agent should start below 1.
expires_at Optional. After this time the entry is ignored.
supersedes Optional id of an entry this one replaces.

A tombstone deletes an entry: {"id": "3f9a1c2b7d10", "deleted": true, "created_at": "..."}.

Rules

Putting it in context

Agents load memory as a short block at the top of the context, grouped by kind and filtered by the scope of the current task. Memory.to_prompt(scope=...) produces it.