Conversation
…ync watcher, MMR, namespace) Five gaps surfaced from a real-world setup walkthrough: 1. `exclude_patterns` had no dedicated section — added env var row, config.d fragment example, and the two caveats users hit: not-retroactive (must `mem_do delete` to prune existing entries) and matched against memory_dir-relative paths (built-in patterns assuming `**/.claude/...` miss when `~/.claude/projects` itself is the auto- discovered root). 2. Auto-discovered roots note now warns about Claude subagent metadata and `~/.gemini` browser-profile noise that the built-in denylist does not cover. 3. Cloud-sync watcher caveat (already in google-drive.md as a one-liner) was vague — strengthened to make explicit that cloud-sync mounts generally do not emit fs watcher events at all on macOS/Linux, so manual `mem_index` is required. 4. MMR section now explains *when* to enable it (overview/detail overlap, e.g. `MEMORY.md` + `feedback_*.md`) and points to `mem_dedup_scan` for accumulated overlap. 5. Namespace section explains the `enable_auto_ns` immediate-parent limitation and shows the `mem_index namespace="<prefix>:<scope>"` pattern for richer source/tool encoding (groups in Web UI by colon).
memtomem
pushed a commit
that referenced
this pull request
Apr 18, 2026
…nt and against absolute paths The built-in exclude denylist had two related gaps that let credentials and noise into the index in real-world setups: 1. ``IndexEngine.index_file`` (the file watcher's reindex entry point) bypassed all exclude checks. ``_discover_files`` was the only guard, so a watchdog event for ``~/.gemini/oauth_creds.json`` would happily index the credential. 2. Patterns were matched only against the memory_dir-relative path. When ``~/.claude/projects`` itself is the auto-discovered memory_dir root, the rel path drops the ``.claude/`` token, so ``**/.claude/**/*.meta.json`` never matched the subagent metadata that Claude Code drops under ``<UUID>/subagents/``. Centralize the policy into two helpers — ``_exclude_match_keys`` (builds the candidate keys: absolute path + rel-to-each-memory_dir) and ``_path_is_excluded`` — and call them from both ``_discover_files`` and ``index_file``. ``**/subagents/*.meta.json`` is added as a built-in noise pattern so the rel-path form also matches when ``.claude/`` is missing. Three regression tests cover the two scenarios that previously slipped through and the new entry-point guard. Companion to PR #251 (docs) which documented the workaround.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Five documentation gaps surfaced from a real-world setup walkthrough where a user's index accumulated subagent metadata, cloud-sync files, and OAuth credentials silently — none of which were obvious from the existing docs.
Out of scope (separate PRs)
Test plan