Adding memory to Crush
history per project, and every other project invisible from here
Crush is the only agent here that keeps its history beside the work: .crush/crush.db inside the project, with ~/.local/share/crush/projects.json listing where those stores are. So a Crush session forgets what the last one did, the way they all do — and also cannot see the work in the repository next door, or any of the sessions the other agents on this machine wrote.
Adding recall
deja install crush-auto
Four things, in the three places Crush reads:
- A
PreToolUsehook in~/.config/crush/crush.json, matchingbash,edit,writeandmultiedit. Before the agent runs a command or changes a file, deja answers with what this machine already knows about that command or that file — and says nothing when it knows nothing. - The MCP server, under
mcpin the same file, so history is a tool the agent can also reach for by name. - The
deja-historyskill in~/.agents/skills, which Crush scans by default. It appears in the system prompt's<available_skills>list, so the reason to look at history is in front of the model rather than only when someone asks. - A
/user:dejacommand in~/.config/crush/commands.
Crush's own crush_info reports all of it back: deja = connected (1 tools, 0 resources) under MCP, deja-history = user under skills, and the hook with its matcher and timeout.
What the hook actually says
Measured against a recording endpoint on crush v0.92.0, with a store holding four earlier sessions that ran go build ./.... The agent went to run it again, and the request Crush sent next carried the recall alongside the command's own output:
<deja-recall> Last time this machine ran go build ./... it ended with: ./queue.go:31:2: undefined: zibblexEnqueue (in 4 sessions) </deja-recall>
PreToolUse is the only event Crush fires, so this is the whole of automatic recall here — there is no session-start digest and no per-prompt channel. It is also the moment that matters most: the answer arrives where the mistake would be made, not at the top of a session where it scrolls away.
What it costs
From the recorded requests on that version: deja's tool schema is 3,138 bytes of the 29,754-byte tool block Crush sends with every request, the skill's catalogue entry adds 384 bytes to the 22,487-byte system prompt, and a recall that answers adds 269 bytes to the turn that asked. A recall with no answer adds nothing. With the binary moved aside and the wiring left in place, the turn still completed — the hook's failure is logged and ignored, and Crush is one tool lighter.
The part that is not about this harness
The index covers every agent's transcripts on the machine — twenty-five of them, each in its own format — so a fix found in Claude Code answers a question asked in Crush, including sessions from before any of this was installed. Nothing here writes memories, so there is nothing to hallucinate into your history; indexing and search are local, and credentials are stripped as the index is built (privacy).
Getting started · Switching between agents · The Crush session format