AbilitiesMemory

Memory

Harness remembers what matters about you so it gets more useful the more you use it. Memory is private and on-device by default.

What it remembers

As you work together, Harness saves durable facts about you: your preferences, your role, what you are working on, the people and projects that keep coming up, and corrections you give it. It saves the distilled fact, not your raw messages, and it does not save fleeting things like the contents of a one-off screen.

You never have to say “remember this.” Harness decides what is worth keeping. You can still tell it to remember something explicitly, and you can always view, edit, delete, or export everything it holds.

Time, people and things

A memory can carry when something happened and when it was true (“the Oslo trip was last May”, “I led the payments team until June”), so Harness can answer what was true at a given time rather than only what is true now. Memories are linked to the people and things they mention, and to what was on your screen around the same time.

Corrections

When you correct Harness, the replacement is linked to the exact prior memory it supersedes. The old record remains part of the historical audit trail but is filtered from current guidance, including during a migration, restore, crash recovery, or second-tab fallback.

When Harness saves something new, it also checks it against similar memories it already holds. If the new memory repeats or updates an older one, the older one is retired the same way a correction retires it. If the two disagree and nothing says which is current, they are linked as a contradiction so neither is quietly trusted.

How it works

Memory uses several on-device stores so a large history does not have to be loaded as one database before chat can begin. Canonical conversations and a newest-first lexical index live in ordinary IndexedDB. Saved memories are written through to a chunked IndexedDB archive. A bounded PGlite database (PostgreSQL compiled to WebAssembly) holds recent vector-search data, profiles, summaries, and durable write and derivation receipts.

Exact names and phrases become searchable after the first newest conversation batch, while older batches continue in the background. A separate on-device semantic index adds meaning-based recall newest-first and resumes from durable segments after reload or interruption. The Memory settings panel reports lexical, semantic, and saved-memory coverage independently; it does not call partial coverage complete.

Each memory is embedded with an on-device text embedding model, so recall is semantic: Harness finds what is relevant by meaning, not just keyword match, and combines that with lexical search for exact terms. The same embedding model is used whether memory runs on-device or on the server, so your stored vectors stay compatible across both.

On each turn, Harness recalls the memories and conversation passages relevant to what you are asking and injects the selected snippets into its context so they shape the answer. Separately, a consolidation pass periodically distills your accumulated memories into a short, bounded profile of you (how you like answers, your recurring context, your hard preferences) that guides its tone and decisions. Corrections are pulled to the front of that pass so they carry the most weight.

See Models for the embedding model this uses.

Bring memory from elsewhere

Moving from another assistant? In Settings → Memory & activity → Memory & history, import a Claude export, and Harness pulls in the memory and the conversations worth keeping. You can export everything Harness holds the same way.

Where it lives

Your memory database stays on your device. A few things send memory text off it:

  • When a remote model answers, Harness may send it the relevant memory snippets selected for that turn.
  • When a new memory is saved, it and up to 8 similar older ones go to Harness’s server, which judges whether they duplicate or contradict each other. The result comes back to your device; the server keeps nothing.
  • The profile pass sends the memories it selects, with your current profile, through Harness to your chosen model, which proposes the updated profile. Nothing is stored on the server. Encrypted backup, a Resident feature, protects your memory and conversations from browser storage eviction and lets you carry them to another device. The backup is encrypted with a key derived from a passphrase only you hold; lose the passphrase and the backup is unrecoverable, by design. Restore merges canonical conversations, saved-memory rows and correction edges, pending jobs, and profiles, then verifies/rebuilds retrieval indexes on the device. See Privacy & your data.