Vault Config — Manage obsidian-brain Settings
Interactive menu for viewing and changing obsidian-brain configuration, one setting at a time.
Tools needed: Bash, Read, Write
Procedure
Step 1 — Load current config
Run:
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
python3 -c '
import sys, os, json
import glob; sys.path.insert(0, max(glob.glob(os.path.expanduser("~/.claude/plugins/cache/*/obsidian-brain/*/hooks")), default="hooks"))
from obsidian_utils import load_config
c = load_config()
if not c.get("vault_path"):
print("ERROR: not configured", file=sys.stderr)
sys.exit(1)
print(json.dumps(c, indent=2))
'
Parse the JSON output into a config dict.
If error, tell the user to run /obsidian-setup first. Stop.
Step 2 — Display settings table
Present the current settings as a numbered table:
Obsidian Brain Configuration
1. vault_path <value>
2. sessions_folder <value>
3. insights_folder <value>
4. log_raw_messages <value> <- controls raw conversation logging
5. min_turns <value> <- minimum turns to log a session
6. min_duration_minutes <value> <- minimum duration to log
7. snapshot_on_compact <value> <- checkpoint note on /compact
8. snapshot_on_clear <value> <- checkpoint note on /clear
Enter a number to change, or 'done' to exit.
For any key not present in the config, show its default value: log_raw_messages defaults to true, min_turns defaults to 3, min_duration_minutes defaults to 2, snapshot_on_compact defaults to true, snapshot_on_clear defaults to true.
When rendering rows 7 or 8, if the value is False, append this warning inline on the same row:
⚠ Disables pre-clear/compact checkpoint. Recommended: True.
The warning only fires when the value is explicitly False — don't show it for the default true.
Step 3 — Handle user selection
Wait for user input.
doneor empty → Stop. Print "Configuration unchanged."- Number → Go to Step 4 with the selected setting.
Step 4 — Change setting
Boolean settings (
log_raw_messages,snapshot_on_compact,snapshot_on_clear): Toggle the value (true→false, false→true). If the user is about to setsnapshot_on_compactorsnapshot_on_cleartoFalse, warn first:⚠ Disabling this removes the pre-compact/clear checkpoint safety net. You will lose in-flight context on accidental
/clear. Proceed? (y/N)Only toggle after explicit confirmation.
String settings (
vault_path,sessions_folder,insights_folder): Show current value, ask for new value.Number settings (
min_turns,min_duration_minutes): Show current value, ask for new value. Validate it's a positive integer.
Step 5 — Write updated config
Run:
python3 -c '
import sys, os, json
config_path = os.path.expanduser("~/.claude/obsidian-brain-config.json")
with open(config_path, "r") as f:
config = json.load(f)
config[sys.argv[1]] = json.loads(sys.argv[2])
import tempfile
fd, tmp = tempfile.mkstemp(dir=os.path.dirname(config_path), suffix=".tmp")
with os.fdopen(fd, "w") as f:
json.dump(config, f, indent=2)
f.write("\n")
os.chmod(tmp, 0o600)
os.rename(tmp, config_path)
print("OK")
' "$KEY" "$JSON_VALUE"
Where $KEY is the setting name and $JSON_VALUE is the new value as a JSON literal (e.g., "false", "3", '"/path/to/vault"').
Confirm the change, then go back to Step 2 to redisplay the table.