pinecallDocs
Knowledge & memory / pinecall memory

pinecall memory

What the agent remembers about a contact.

memory#

pinecall memory <contact>
pinecall memory forget <contact> [--yes]
pinecall memory policy [--agent <slug>] [--remember '…' …] [--forget '…' …] [--team] [--note '…']
pinecall memory eval [golden.json] [--k <n>] [--agent <name>] [--file agent.tsx]
Terminal
$ pinecall memory policy --team --remember alergias --remember "médico habitual" --forget pagos
clinica-norte · sandbox
  yours       v9 · nothing remembered
  team        v5
    remember  alergias
    remember  médico habitual
    forget    pagos
  production  v3 · nothing remembered
$ pinecall memory +34600000001
nothing remembered about +34600000001

Everything memory kept about one contact — the caller's number, or the id the app named — with the current facts first and the ones a later call superseded dimmed, with the date they stopped holding. forget erases all of it, the right to be forgotten; on a terminal it asks once, and prints how many facts went. With nobody at a terminal — a script, CI — it erases only with --yes, as data erase does, and exits 2 without it; --yes also skips the question.

policy alone prints what the agent remembers and forgets, corner by corner; with flags it writes yours (--team the team's). Each category is its own flag — --remember allergies --remember 'preferred name' — and the policy written replaces the one before it. To take yours out so the team's holds again: pinecall agent clear memory.

eval holds recall to a golden of {holds, asks, expects} — test/<name>/goldens/memory.json: each question brings its own facts, so no contact of yours is read or written — they go to a scratch contact and are deleted again.

remember#

pinecall remember [paths] [--agent <name>] [--file agent.tsx] [--grep x] [--json]
Terminal
$ pinecall remember
clinica-norte · anthropic/claude-haiku-5-5 · 3 cases · 3 held · 5445 ms
  ✓ anota la alergia y nunca la tarjeta
  ✓ la mañana sustituye a la tarde, no convive con ella
  ✓ ni guarda un permiso ni borra lo que nadie desmintió

The cases are test/<name>/memory/, one file per call written down.

The other half of memory: the write side. A case is one call written down — both speakers, because nothing is re-run — the facts memory already holds, and what must come of it: which categories got a fact, which never did, which values must not survive in any fact's text, and which held facts the call contradicted.

Each case costs ONE model call, the very one a hang-up makes, run by the gateway against the class this terminal is holding. Every answer is judged by code: a category is the class's own word, a value is a literal, a supersession is an id — never one sentence compared to another, because two ways of writing one fact are one fact.