# Vault Config

> Interactive configuration menu for obsidian-brain settings. Use when: (1) /vault-config to view and change settings, (2) user wants to toggle log_raw_messages, (3) user wants to adjust session filtering thresholds.

- Skill: `abhattacherjee/vault-config` (Agent Skill)
- Install (CLI): `npx skillmds@latest add abhattacherjee/vault-config`
- Raw SKILL.md: https://api.skillmd.com/api/skills/abhattacherjee/vault-config/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: abhattacherjee (https://skillmd.com/u/abhattacherjee)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/abhattacherjee/vault-config

---


# 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:

```bash
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.

- `done` or 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 set `snapshot_on_compact` or `snapshot_on_clear` to `False`, 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:

```bash
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.

