Memory
Tool-use agents in TeXRA can save notes that persist across conversations. The next time you start a chat, even days later, the agent loads those notes and picks up where it left off, without you having to re-explain the project.
- Equations use
\eqref, not\ref. - Section labels follow
sec:short-name. - Cite with
\citepinside parentheses and\citetin running prose. - The bibliography lives in
references.bib.
The Memory tab in the Dashboard: toggle memory for chat agents, and browse, pin, open, or delete the notes agents have saved.
What memory is for
Memory is for facts the agent should remember about your project, not the conversation itself. Good things to save:
- Conventions you want enforced (label prefixes, citation styles, notation choices)
- Project structure (where figures live, which file is the main document)
- Decisions you've made that the agent would otherwise revisit
- Pitfalls you keep hitting (a compiler quirk, a finicky package, a flaky reference)
Memory is not a chat transcript. The agent doesn't replay old conversations; it reads the notes you've curated.
Enabling memory
Memory is on by default. To turn it off, open the Dashboard (Command Palette → TeXRA: Show Settings Dashboard), switch to the Memory tab, and flip the Enable memory for chat agents switch. The same switch turns it back on.
You can also go straight to the tab with TeXRA: Show Memory.
When memory is on, every tool-use agent run has access to the memory tool: it can create, view, update, rename, delete, pin, and unpin notes under /memories.
How an agent uses memory
Agents work with memory through a small set of commands on the memory tool:
| Command | What it does |
|---|---|
view | List /memories or read a single note |
create | Write a new note (or overwrite an existing one) |
str_replace | Edit a note by replacing a substring |
insert | Insert text at a specific line |
delete | Remove a note |
rename | Move a note to a new path |
pin | Mark a note as a core long-term memory (loaded at every session start) |
unpin | Remove the pinned status |
Every note is a Markdown file. Agents see them at /memories/<name>.md; on disk they live in the shared TeXRA root at ~/.texra/workspace-storage/<workspace-name>-<hash>/memories/, which the VS Code extension, the desktop app, and the CLI all share for the same workspace. Each file carries a small YAML header that records which agent last modified it, when, and whether it's pinned. That header is what the metadata strip in the Dashboard shows.
- memory
view/memoriesLists saved notes at session start - memory
create/memories/project-conventions.mdWrites a new note (\eqref over \ref, sec: prefixes) - memory
str_replace/memories/notation.mdEdits one line — \lambda_2 is the spectral gap - memory
pin/memories/project-conventions.mdPromotes to core memory — loaded every session
A run's memory tool calls: the agent lists existing notes, writes a new one, edits another, then pins the convention note so it loads at every session start.
Pinned vs. unpinned
Unpinned notes are searchable context: the agent can read them when it needs to, but they don't take up space in every prompt.
Pinned notes are different. They're loaded at the start of every session, so put only the highest-value notes there: conventions, hard-won techniques, recurring pitfalls. You can pin up to 10 notes; if you hit the limit, unpin a stale note before pinning the next one.
The pinned indicator in the Dashboard is a blue left border plus a Pinned badge in the metadata strip.
Pinned notes carry the blue left border and a Pinned badge and load every session; unpinned notes stay as searchable context the agent reads on demand.
Managing memories from the Dashboard
The Memory tab shows every saved note, with pinned notes first and the rest sorted by most recently updated. For each note you get:
- Path: the canonical
/memories/...location - Metadata strip:
Pinned · size · line count · updated · by <agent> - Contents: a collapsible Markdown preview rendered inline (pinned notes start expanded)
- Actions: pin / unpin, open in editor, delete
The toolbar above the list has Refresh and Open folder. Open folder reveals the on-disk memories/ directory in your file explorer, useful if you want to edit notes by hand or check them into a side repo.
- Equations use
\eqref, not\ref. - Section labels follow
sec:short-name.
One expanded note, part by part: the /memories/... path, the metadata strip, the pin / open / delete actions, and the collapsible Contents preview, with Refresh and Open folder in the toolbar above.
The same store is inspectable from a terminal. Memory is shared state, not a Dashboard feature:
- /memories/project-conventions.mdpinned; 1.2K; modified: 11/4/2025, 2:31:08 PM; by research
- /memories/notation.md819B; modified: 10/28/2025, 10:04:51 AM; by assistant
- /memories/related-work.md2.4K; modified: 10/21/2025, 4:48:27 PM; by research
memory list prints each note with its pinned state, size, and last writer; memory show previews one note. In chat, /memory does the same.
Memory is shared across the run
Within a single run, the orchestrator and every subagent it spawns see the same /memories directory. A specialist agent can write a note that the orchestrator picks up on its next turn, and that note survives into the next conversation. This is why memory is most useful for project-level facts rather than turn-level scratch space: once it's written, it persists.
When not to use memory
- Throwaway intermediate work: that belongs in the agent's todo list or scratch reasoning, not in a saved note.
- Sensitive credentials: memory files are plain Markdown on disk; treat them like any other workspace file.
- Auto-generated logs: runs already have task storage for artifacts; don't duplicate them as memories.
If you end up with a long list of stale, never-pinned notes, delete them. The agent never reads what isn't there, so a small, curated memory is usually more useful than a sprawling one.
Related
- ProgressBoard: see what an agent is doing in real time, including which memories it has read or written
- Configuration: the full list of Dashboard tabs
- Custom agents: give your own tool-use agents access to the
memorytool