---
name: journal-memory
description: Decide what survives as a fact about the environment, binds every environment as a rule, or repeats as a reminder. Load it when you learn something a later session would get wrong without, or at a context mark; or when a context mark holds your writes until you record a fact, a rule or nothing; or when you keep forgetting something, or leave an instruction for another agent; or when the user makes a ruling that binds every environment.
keywords: facts, fact, pins, pin, memory, memorys, checkpoints, checkpoint, context, contexts, reminders, reminder, rules, rule
commands: memory, facts, reminders, rules
---

# Memory

A fact is something true about the environment that a later session would get wrong without. A rule is a decision that binds every environment. A reminder is an instruction likely to be forgotten. One future action is a to-do, not memory.

Write reasoning in the brief. At a context mark, answer with `journal fact create` or `journal rule create`, each with `--set keywords="<word>,<word>"`, or `journal nothing`. Retire claims that stopped being true with `fact strike` or `rule strike`; `journal rule reread` reads every standing fact and rule again, and the record audit names what has evidence against it.

## Facts

Facts about this environment are repeated to the agent as its context fills.

A fact belongs to this environment. When you learn something about it that a later session would get wrong without, write it as a fact: journal fact create "<the claim>" --brief "<why it is true, where it shows>". It is handed back at every quarter of the context. When it stops being true, strike it with journal fact strike <n> --how "<what changed>".

Give it keywords with --set keywords="<word>,<word>": when one appears as a whole word, you are shown the row once, with its reasoning, and the tool call still goes through. --set keywords_in says where they match: text (what you write, in edits and in the chat), commands (shell commands), both (the default), or everything (any tool call, file paths, searches and URLs included).

Its lines and guards are for the main agent only; none reach a subagent.

## Memory checkpoints

Each time the agent's context reaches a mark, it decides whether to save a fact or a rule before it changes files. Once a week it rereads every rule and fact.

When a context mark holds your writes, decide before any other write: file what a later session would get wrong without as journal fact create "<claim>" --set keywords="<word>,<word>", a ruling that binds every environment as journal rule create "<ruling>" --set keywords="<word>,<word>", or run journal nothing "<why>" when there is nothing to keep. Any of the three releases the hold. The marks are the percentages in the feature's trigger.

Once a week run journal rule reread when you are told it is owed: it prints every standing rule and fact in full and marks the reading done.

Its lines and guards are for the main agent only; none reach a subagent.

## Reminders

Your standing reminders are repeated to the agent when it stops after working.

A reminder belongs to this environment. When you keep forgetting to do something you already know, write a reminder: journal reminder create "<what to do>". It is said again every quarter of the context window, so a long session hears it about four times; Settings can change the cadence to every n percent, uses or minutes, or to idle, worked or start.

To remind only one session, add --set whom=<session>: it is said to that session alone and stays out of the start block. Use it to remind yourself, or to leave an instruction for an agent you are about to dispatch. Retire one that is no longer needed with journal reminder retire <n>.

Its lines and guards are for the main agent only; none reach a subagent.

## Rules

Rules are repeated to the agent at every quarter of its context. Rules marked for it are written into AGENTS.md and CLAUDE.md.

A rule belongs to the whole project: every environment and every agent in it is bound by it. When the user makes a ruling of that kind, record it as a rule, worded as the ruling itself ("Always ...", "Never ..."): journal rule create "<the ruling>" --brief "<the user's reason, and the message it came from>". What is true of this environment is a fact, and what to keep doing here is a reminder; both stay in this environment. Right after you make a rule you are asked to read it again as one. Only the user strikes a rule, except one you just made that turns out to belong to one environment. journal rule inject <n> keeps a rule in the managed block of both AGENTS.md and CLAUDE.md.

Give it keywords with --set keywords="<word>,<word>": when one appears as a whole word, you are shown the row once, with its reasoning, and the tool call still goes through. --set keywords_in says where they match: text (what you write, in edits and in the chat), commands (shell commands), both (the default), or everything (any tool call, file paths, searches and URLs included).

Its lines and guards are for the main agent only; none reach a subagent.
