remember

remember is a command for coding agents from zhangfengcdt/memoir. It costs 43 tokens per session (1,338 once invoked), scanned A, original, Apache-2.0.

A command for saving a fact the user states into the agent’s long-term memory. It can also handle conflicts when a new fact differs from one already stored.

In plain words
What is it for?
It helps capture memories manually, choose a storage namespace or path, and select whether conflicting information should be merged or replaced.
Why use it?
It prevents useful information from being lost between tasks and avoids silently replacing an existing memory when the two versions disagree.

Command

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the memoir plugin — 2 skills, 6 commands, 4 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/zhangfengcdt/memoir/remember
Clone the repo
git clone --depth 1 https://github.com/zhangfengcdt/memoir

Or install memoir, the plugin that ships this one along with the rest of its 2 skills, 6 commands, 4 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for remember

README.md
[![agentmods](https://agentmods.dev/badge/commands/zhangfengcdt/memoir/remember.svg)](https://agentmods.dev/commands/zhangfengcdt/memoir/remember)
Your own site
<a href="https://agentmods.dev/commands/zhangfengcdt/memoir/remember"><img src="https://agentmods.dev/badge/commands/zhangfengcdt/memoir/remember.svg" alt="Measured on agentmods" height="20"></a>
Per session 43 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,338 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00043 $0.01338
Opus 5 $0.00022 $0.00669
Sonnet 5 $0.00009 $0.00268
Haiku 4.5 $0.00004 $0.00134

Measured 4d ago against content hash 14354e834200, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

remember scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/claude-code/commands/remember.md · 81 lines

How it starts

The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Save the user's stated fact as a memoir memory. By default this resolves conflicts interactively: if the target key is already occupied, you (the agent) present the existing-vs-incoming values and let the user choose what to do, rather than silently overwriting or appending.

The user's input is everything between the markers below — raw text, treat verbatim:

<<<MEMOIR_REMEMBER_INPUT_BEGIN $ARGUMENTS MEMOIR_REMEMBER_INPUT_END

Procedure

  1. From the input, pull out any -n/--namespace <ns>, -p/--path <path>, and --merge-policy <strategy> flags (each consumes the following whitespace-separated token). --replace is a bare flag (no token). Everything else, in order, is the memory content.

  2. Probe write. Issue a single Bash tool call shaped like the template below. The single-quoted heredoc terminator suppresses all shell expansion, so content with $variables, backticks, parens, semicolons, slashes, or newlines passes through verbatim — never put the content on the bash command line itself.

    if [ ! -x "${CLAUDE_PLUGIN_ROOT:-}/scripts/memoir-cli.sh" ]; then
      for c in "$(pwd)/plugins/claude-code" "${HOME}/.claude/plugins/marketplaces/memoir/plugins/claude-code"; do
        if [ -x "$c/scripts/memoir-cli.sh" ]; then CLAUDE_PLUGIN_ROOT="$c"; break; fi
      done
    fi
    STORE="${MEMOIR_STORE:-$(bash "$CLAUDE_PLUGIN_ROOT/scripts/derive-store-path.sh")}"
    bash "$CLAUDE_PLUGIN_ROOT/scripts/ensure-store.sh" "$STORE" >/dev/null
    CONTENT=$(cat <<'MEMOIR_REMEMBER_EOF'
    <paste the full content verbatim, including any newlines>
    MEMOIR_REMEMBER_EOF
    )
    bash "$CLAUDE_PLUGIN_ROOT/scripts/memoir-cli.sh" --json -s "$STORE" remember "$CONTENT" --merge-policy reject
    
    • Append -p <path> and/or -n <namespace> after remember "$CONTENT" only if the user supplied them.
    • Default to --merge-policy reject as shown (this is what makes it interactive — it writes fresh keys but refuses to clobber existing ones, returning them as conflicts). Exception: if the user explicitly supplied their own --merge-policy <strategy> or --replace, pass that through instead and do not add --merge-policy reject — they've opted out of prompting.
    • If the literal string MEMOIR_REMEMBER_EOF appears on a line by itself inside the content, swap in a different terminator.
    • memoir-cli.sh is the plugin's CLI wrapper — it picks memoir on PATH, falling back to uvx --from memoir-ai==<pin> memoir then uv tool run …, so it works without a global install.
  3. Read the JSON response:

    • "success": true → the memory was written to a fresh key. Report the resulting key (taxonomy path) and commit_hash in one short line. Done.
    • "success": false with a non-empty "conflicts" array → go to step 4. (Any other path in keys that is not in conflicts was already written successfully — mention those as saved.)
    • "success": false with an "error" and no conflicts → report the error. Done.
  4. Resolve each conflict interactively. For every entry in conflicts, show the user a short comparison and ask how to resolve it:

    ● Conflict at <key>
      existing: <existing_content>
      incoming: <incoming_content>
    How should I save this? [replace / append / merge / skip]
    
    • replace — overwrite with the new value (keeps only the latest)
    • append — keep both (adds the new value as another entry)
    • merge — LLM-consolidate the old and new into one statement (slower; needs a model)
    • skip — leave the existing memory unchanged, discard the new value

    Then stop and wait for the user's answer. Do not pick a default yourself.

  5. Apply the choice (after the user replies) with one resolving call per non-skipped key — re-paste the content verbatim and map the choice to a strategy (replace/append/mergellm_merge):

    CONTENT=$(cat <<'MEMOIR_REMEMBER_EOF'
    <paste the full content verbatim again>
    MEMOIR_REMEMBER_EOF
    )
    bash "$CLAUDE_PLUGIN_ROOT/scripts/memoir-cli.sh" --json -s "$STORE" remember "$CONTENT" -p <conflict-key> --merge-policy <replace|append|llm_merge>
    

Read the full file on GitHub · 81 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 81 lines · 43 tokens per session scan A 14354e834200

Subscribe to this mod's changes

remember is a command published in the GitHub repository zhangfengcdt/memoir (610 stars, last pushed yesterday), licensed Apache-2.0. It adds 43 tokens to every session and 1,338 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.