| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
memd distills AI coding-session transcripts into four markdown files under a project's .memory/, using an LLM ("the curator"). Those files are then fed back into future sessions as starting context. This document outlines the security policy, data flow, trust model, and residual risks of using memd.
Report security vulnerabilities using GitHub Security Advisories at https://github.com/lowcache/memd under the "Security" tab by selecting "Report a vulnerability". If advisories are unavailable, report via a private GitHub issue.
There are no guaranteed response times. memd is a single-maintainer hobby project.
With the default backend, the contents of your coding sessions are sent to a third-party LLM API. You can configure a local backend to keep all data on your machine.
memd processes data through the following steps:
To keep everything on the machine, set curator_cmd to a local backend. See contrib/curators/ for configuration examples.
Before anything reaches the curator, memd scrubs the digest and inbox notes using 13 built-in regex patterns. These patterns cover:
You can add custom regex patterns using REDACT_EXTRA_PATTERNS.
Regex redaction is best-effort pattern matching. It catches credentials with recognisable shapes, but it is not a guarantee. It cannot catch a secret with no distinctive format, such as a bare password, a hex string, or a cloud key without a prefix (for example, Azure keys).
memd is supported on POSIX systems only, relying on flock-based locking, with Linux as the tested platform. It requires git and Python 3.10+.
memd does not trust the curator model. Guardrails are enforced in Python rather than by prompting:
These guardrails protect the structure and integrity of the memory store. They validate structure, not the meaning of the text. The memory files' bodies remain free-form prose written by the curator.
Because the memory files' bodies are free-form prose written by the curator, content you work on can reach the curator. If a repository, a web page an agent fetched, or a pasted document contains text crafted to influence a model, that text can appear in the transcript and therefore in the digest.
A curator that is successfully influenced can write attacker-chosen prose into state.md, decisions.md, or todo.md. Because those files are injected into later sessions' context, this influence can persist across sessions rather than ending with the session in which it arrived.
This risk is inherent to any tool that summarises untrusted input into durable context. memd's guardrails bound the damage by preserving structure, enforcing an immutable mistakes.md, capping file sizes, and keeping all output as git-versioned, human-readable markdown, but they do not eliminate the risk.
memd applies one mitigation itself: the brief injected at session start labels the memory it carries as reference notes distilled from earlier sessions, and states that a directive appearing in them describes what was previously decided rather than authorising an action. This makes a model less likely to act on an imperative that reached a memory file. It is defence in depth, not a fix.
You can apply the following mitigations:
| Version | Supported | Notes |
|---|---|---|
| 0.3.x | Yes | 0.3.1+ recommended; 0.3.0 has a git commit target bug |
| < 0.3.0 | No | Unsupported |
In version 0.3.0 and earlier, automatically discovered projects had their memory committed into the project's own git history rather than the .memory/ repository. This was fixed in version 0.3.1. If you use version 0.3.0, you should upgrade to 0.3.1 or later.
| Back | FazBrowse Home | New Git URL |