Agent memory
How the agent reads and writes persistent memories from the workspace knowledge graph.
What agent memory is
Agent memory — powered by Oxagen's memory engine, Engram — is persistent, queryable knowledge scoped to a workspace. Unlike conversation history (which is a linear sequence of messages), memories are discrete facts, rules, and observations stored as nodes in the workspace knowledge graph (Neo4j). They survive across sessions, across conversations, and across every agent working in the same workspace — including the CLI.
Each memory has two independent axes:
- Class — the epistemic ladder from tentative to settled: OBSERVATION → RULE → FACT. A confidence score (0–100) tracks how sure it is true and decays over time; a RULE also carries an enforcement score (1–100) for how strongly it should be followed. Promotion up the ladder records an auditable event; promotion to FACT requires human confirmation.
- Kind — the content domain, an open label. Common kinds:
| Kind | Description |
|---|---|
routine-change | A process or convention change the agent should carry forward |
constraint | A hard boundary the agent must respect |
bug-root-cause | Root cause of a known bug or failure pattern |
convention-deviation | A departure from a project convention that has been intentionally accepted |
gotcha | A known trap or non-obvious behavior to watch out for |
Recalling memories
The agent uses agent.memory.recall to query the knowledge graph at the start of or during a turn. The query is semantic — it finds memories by meaning, not keyword match.
agent.memory.recall({ query: "brand guidelines for external communications" })The result is a list of scored memory nodes ranked by relevance. The agent incorporates them into its response context.
You can ask the agent to recall memories explicitly:
- "What do you know about our pricing structure?"
- "Recall anything relevant about the Spencer account before we start."
Writing memories
The agent uses agent.memory.write to persist a new memory. It can propose this autonomously during a conversation ("I'll remember that for next time"), or you can ask it to:
- "Remember that we use Stripe for billing and Inngest for background jobs."
- "Add a rule: all agent-generated documents must be reviewed by a human before sending."
Each written memory includes:
- The memory content (text)
- The kind (
routine-change,constraint,bug-root-cause,convention-deviation, orgotcha) - A weight bucket (
low,high, orcritical) representing the salience of the memory. Theagent.memory.remembercapability can infer this automatically from free text. - Graph node attachments (e.g., linked to a specific entity in the ontology)
Viewing and managing memories
All workspace memories are visible in Workspace → Knowledge → Memories. You can:
- Browse and filter memories by kind
- Edit or delete individual memories
- See which agent or user created each memory and when
- Review agent-proposed memories before accepting them
Memories are scoped to the workspace. They are not shared across workspaces, and they are not visible to other organizations.
Memory in the knowledge graph
Memories are stored as AgentMemory nodes in Neo4j with a vector index for semantic retrieval. They can be connected to other ontology nodes (people, companies, projects, documents) via graph edges, giving them relational context that goes beyond text similarity.
This is the "portable knowledge graph" property of Oxagen: a workspace's memories travel with the workspace. If your organization moves to a different infrastructure, the graph moves with you — it is not locked to Oxagen's internal storage format.
Governance
Memory write is governed by the same IAM model as every other capability. The agent.memory.write capability requires at least a Member role in the workspace. Viewers cannot write memories.
Every memory write produces an audit record. Memory writes by the agent acting in delegated context record both the human principal and the agent.