meta-memory-settings
The layered memory has a few habit-dependent choices with no single right answer for everyone. Each
has a recommended default; the user can change any of them, the choice is RECORDED, and it is applied
automatically thereafter (never re-asked). All knobs live in one machine-local file,
~/.claude/.bitranox-memory.json; this skill is the front door to it.
Use the CLI
- View:
python3 <this-skill-dir>/settings.py view
- Set one knob:
python3 <this-skill-dir>/settings.py set <key> <value>
- Reset all to recommended defaults:
python3 <this-skill-dir>/settings.py reset
When the user is deciding, state the option's consequence and the recommendation in one line, set it,
then confirm. Do not edit the JSON by hand - the CLI validates the key AND the value, and
refuses an unknown one (exit 2) naming the legal choices, so a typo like dream_mode of
cannot reach the file.
The knobs (recommended default in brackets)
| Key |
Values |
What it controls / consequence |
dream_mode |
propose [default], auto, off |
propose: apply CLAUDE.md consolidation (backed up, reported per file, only where an ancestor covers the rule), self-PR skills. auto: also ship skill changes without asking. off: no nudges, memory-only. |
privacy |
open [default], walled |
open: a secret/PII scrub only (memory is machine-local, not committed). walled: also keep promotion/gather within one privacy domain. Consequence: a global rule (at the topmost-CLAUDE.md-ancestor tier) is recalled into EVERY session under that tree, including public repos. |
promotion |
corroborated [default], eager |
corroborated: a model-inferred rule must be sighted in >= 2 DISTINCT PROJECTS before it reaches the global layer at the topmost-CLAUDE.md ancestor (recalled into every session under that tree). Re-dreaming ONE project never corroborates: the dwell store is idempotent per project, so a second run there adds no evidence. user-stated rules promote eagerly either way. eager: promote inferred rules on first sight (higher blast radius). |
skill_placement |
lowest [default], user, project |
ADVISORY - no shipped code reads this knob; it records your preference, and the authoring skills follow the same rule by convention: a newly created skill goes to the LOWEST scope that fits (a repo's own .claude/skills/ extension before user scope ~/.claude/skills/). Setting it to another value changes nothing today. Proposing a skill to the public marketplace is ALWAYS ask-first, regardless. |
nudges |
true [default], false |
session-start nudges (consolidation-due, new-project bootstrap). Switch off if they are noise. |
track_private |
false [default], true |
git-track the memory (the CLAUDE.local.md pointer block + the anchor's .claude-memory/ central bodies) on a PRIVATE repo (portable/shared memory). Public/default ALWAYS gitignore CLAUDE.local.md + .claude-memory/ (this knob does not override that). |
mcp_search |
auto [default], off |
auto: if a memory MCP (e.g. basic-memory, correctly configured read-only over the local files) is present, use it as a full-text+graph index to sharpen CROSS-project recall; else fall back to the keyword scan. off: keyword scan only. |
cross_tree_search |
true [default], false |
may the per-prompt recall hook scan OTHER knowledge trees (machine-global over discovery_roots)? false walls recall into the CURRENT tree (its own projects + tree top only; the machine-local native tier counts as outside); cross-tree knowledge then moves only via the explicit paths (bitranox:meta-collect-knowledge import, dream-global). Use false when independent trees (e.g. two clients) must not see each other's notes. |
context_window |
0 [default -> detect] |
the session's total token budget, used to decide when a handover is due. 0 DETECTS it from the model. Set a real token count ONLY to override a wrong detection - the symptom is a percentage that cannot be right (a 1M-context model left on a 200k default). bitranox:meta-context-watcher sends you here for exactly this. |
context_handover_pct |
70 [default] |
the PERCENTAGE leg of the handover threshold. The trigger is min(context_handover_pct of the window, context_handover_cap), so on a large window the cap usually wins and this one does nothing. Lower it to be warned earlier. |
context_handover_cap |
400000 [default] |
the ABSOLUTE leg of the same threshold, in tokens, set at the measured onset of context rot. On a 1M window this is what actually fires, at 40 percent rather than 70. Raise it only with a reason - past it, accuracy is already falling. |
discovery_roots |
[] [default -> derived] |
filesystem roots to walk when DISCOVERING knowledge trees (ensure-all-trees, cross-tree gather/recall) and other projects' curated stores (each level's CLAUDE.local.md pointer block + the anchor's .claude-memory/ bodies) (JSON list or comma-separated). Empty -> derive $HOME. Never ship absolute maintainer paths in the tracked default. |
Notes
- A reset restores every knob to the recommended default above.
1---2name: meta-memory-settings3description: Use to view, change, or reset how the bitranox layered memory behaves - on "/memory-settings", "memory settings", "change dream mode", "turn off nudges", "stop promoting to global", "forget less/more", or when the user wants to see or reset these preferences. Reads/writes the one machine-local config the memory hooks and skills obey.4---56# meta-memory-settings78The layered memory has a few habit-dependent choices with no single right answer for everyone. Each9has a recommended default; the user can change any of them, the choice is RECORDED, and it is applied10automatically thereafter (never re-asked). All knobs live in one machine-local file,11`~/.claude/.bitranox-memory.json`; this skill is the front door to it.1213## Use the CLI14- **View:** `python3 <this-skill-dir>/settings.py view`15- **Set one knob:** `python3 <this-skill-dir>/settings.py set <key> <value>`16- **Reset all to recommended defaults:** `python3 <this-skill-dir>/settings.py reset`1718When the user is deciding, state the option's consequence and the recommendation in one line, set it,19then confirm. Do not edit the JSON by hand - the CLI validates the key AND the value, and20refuses an unknown one (exit 2) naming the legal choices, so a typo like `dream_mode of`21cannot reach the file.2223## The knobs (recommended default in brackets)2425| Key | Values | What it controls / consequence |26|------------------------|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|27| `dream_mode` | `propose` [default], `auto`, `off` | propose: apply CLAUDE.md consolidation (backed up, reported per file, only where an ancestor covers the rule), self-PR skills. auto: also ship skill changes without asking. off: no nudges, memory-only. |28| `privacy` | `open` [default], `walled` | open: a secret/PII scrub only (memory is machine-local, not committed). walled: also keep promotion/gather within one privacy domain. Consequence: a global rule (at the topmost-CLAUDE.md-ancestor tier) is recalled into EVERY session under that tree, including public repos. |29| `promotion` | `corroborated` [default], `eager` | corroborated: a model-inferred rule must be sighted in >= 2 DISTINCT PROJECTS before it reaches the global layer at the topmost-CLAUDE.md ancestor (recalled into every session under that tree). Re-dreaming ONE project never corroborates: the dwell store is idempotent per project, so a second run there adds no evidence. user-stated rules promote eagerly either way. eager: promote inferred rules on first sight (higher blast radius). |30| `skill_placement` | `lowest` [default], `user`, `project` | ADVISORY - no shipped code reads this knob; it records your preference, and the authoring skills follow the same rule by convention: a newly created skill goes to the LOWEST scope that fits (a repo's own `.claude/skills/` extension before user scope `~/.claude/skills/`). Setting it to another value changes nothing today. Proposing a skill to the public marketplace is ALWAYS ask-first, regardless. |31| `nudges` | `true` [default], `false` | session-start nudges (consolidation-due, new-project bootstrap). Switch off if they are noise. |32| `track_private` | `false` [default], `true` | git-track the memory (the `CLAUDE.local.md` pointer block + the anchor's `.claude-memory/` central bodies) on a PRIVATE repo (portable/shared memory). Public/default ALWAYS gitignore `CLAUDE.local.md` + `.claude-memory/` (this knob does not override that). |33| `mcp_search` | `auto` [default], `off` | `auto`: if a memory MCP (e.g. `basic-memory`, correctly configured read-only over the local files) is present, use it as a full-text+graph index to sharpen CROSS-project recall; else fall back to the keyword scan. `off`: keyword scan only. |34| `cross_tree_search` | `true` [default], `false` | may the per-prompt recall hook scan OTHER knowledge trees (machine-global over `discovery_roots`)? `false` walls recall into the CURRENT tree (its own projects + tree top only; the machine-local native tier counts as outside); cross-tree knowledge then moves only via the explicit paths (`bitranox:meta-collect-knowledge` import, dream-global). Use `false` when independent trees (e.g. two clients) must not see each other's notes. |35| `context_window` | `0` [default -> detect] | the session's total token budget, used to decide when a handover is due. `0` DETECTS it from the model. Set a real token count ONLY to override a wrong detection - the symptom is a percentage that cannot be right (a 1M-context model left on a 200k default). `bitranox:meta-context-watcher` sends you here for exactly this. |36| `context_handover_pct` | `70` [default] | the PERCENTAGE leg of the handover threshold. The trigger is `min(context_handover_pct` of the window, `context_handover_cap)`, so on a large window the cap usually wins and this one does nothing. Lower it to be warned earlier. |37| `context_handover_cap` | `400000` [default] | the ABSOLUTE leg of the same threshold, in tokens, set at the measured onset of context rot. On a 1M window this is what actually fires, at 40 percent rather than 70. Raise it only with a reason - past it, accuracy is already falling. |38| `discovery_roots` | `[]` [default -> derived] | filesystem roots to walk when DISCOVERING knowledge trees (ensure-all-trees, cross-tree gather/recall) and other projects' curated stores (each level's `CLAUDE.local.md` pointer block + the anchor's `.claude-memory/` bodies) (JSON list or comma-separated). Empty -> derive `$HOME`. Never ship absolute maintainer paths in the tracked default. |3940## Notes41- A reset restores every knob to the recommended default above.