---
name: claude-cowork-vault-bridge
description: Bridge Claude Cowork projects (Claude Desktop on Windows) with the Syncthing-mirrored Obsidian vault so Hermes can see what Claude worked on. Covers project→folder attachment, folder-attachment pitfalls (wipe-on-quit, stale cached paths, the Cowork\\Scheduled parent-mount block), project inventory audits, the summary-prompt pattern that transfers project state into the vault, and the Ideas system pattern for cross-agent collaboration on ideas and projects.
---

# Claude Cowork ↔ Obsidian Vault bridge

## The model

Claude Cowork projects are **local to Claude Desktop on Windows** — no cloud sync, no API, project metadata (name, instructions, memory, chat history) is NOT stored as readable files. Only **attached folders** are visible outside the app. The bridge works by:

1. One vault subfolder per Cowork project, e.g. `C:\Users\Rob\Documents\Obsidian Vault\<Project Name>/`
2. Attach that folder inside the Cowork project (project settings → "Use an existing folder")
3. Syncthing mirrors vault → VPS `/root/.hermes/vault/`
4. GBrain indexes it → Hermes can query project contents

**What does NOT transfer:** project name, instructions, Claude's project memory, past chat history. Only files physically written to the attached folder. To capture project state, the user must ask Claude to write a summary file (see below).

## Project-summary prompt pattern

To make a project's history visible to Hermes, run this in the Cowork project:

> Write a comprehensive summary of all work completed in this project to date. Include: goals, decisions made, deliverables created, current status, and next steps. Save as `_project_summary_YYYY-MM-DD.md` in the attached folder.

Each project folder gets a `_README.md` stating the convention (Claude writes, Hermes reads, no secrets, Syncthing+GBrain cadence).

## Pitfalls (all hit in practice)

1. **Folder attachments wipe on full quit.** Closing Claude Desktop entirely (including tray) can clear all project folder attachments. After any full restart, expect to re-attach every project folder. Verify the attachment stuck by closing and reopening the project before trusting it.

2. **Stale cached paths.** If a project was attached to folder A in a past session, Claude may write to A even when the project currently shows "no folder picked." Writes follow the cached path, not the visible setting. Fix: explicitly attach the correct folder, then re-run the write.

3. **Parent vault mount is hard-blocked.** Mounting the vault ROOT fails: the vault contains `Cowork\Scheduled` (Cowork's own scheduled-task storage), a protected location. There is no read-only mount mode — mounts are all-or-nothing. Workaround: mount each project subfolder individually. Do NOT waste time trying flags or modes on the parent.

4. **OneDrive KFM path confusion.** On machines where OneDrive Known Folder Move redirected Documents/Desktop, `C:\Users\<user>\Documents` may actually be OneDrive-backed. Cowork can default to the OneDrive path (`OneDrive\...\Cowork`) or even another machine's user profile path (e.g. the Surface `rkbla` profile vs Connie's `Rob`). Always confirm the attach dialog shows the real local vault path. See `windows-environment-quirks` for resolving real shell paths.

5. **Folder tags on the project dashboard are unreliable.** Some projects with attached folders show no tag; the only ground truth is opening the project and checking the attachment, or asking Claude "what files are in the attached folder?"

6. **Notion may hijack .md files.** Double-clicking a vault README on Windows can open it in Notion ("Read-only preview" + "Import to Notion" button). The file is still local — Notion is only previewing. Close Notion; don't "import" or you fork the file into Notion's silo.

7. **Secrets must NOT live in the vault.** The vault syncs to the VPS and gets vector-indexed — an `.env` in a project folder is mirrored and embedded within 30 min. Keep credentials in a local-only path (Rob uses `C:\Users\Rob\secrets\`). If a secret lands in the vault, remove it AND treat it as exposed (rotate if it was ever indexed).

## Inventory audit pattern

To verify all project↔folder links, give Claude the explicit project→folder mapping (it cannot see the Projects settings page from inside a session) and ask it to mount each folder and report read/write + file list. Cross-check against the vault from the Hermes side (`ls /root/.hermes/vault/<folder>`). Ground truth = what's physically in the folder, not what either UI claims.

## Standing instruction for write-back (2026-08-15)

Claude will not write analysis to the vault unless explicitly told. Add this line to each Cowork project's Instructions block:

> "When this project relates to an active idea or project in the vault (`/root/.hermes/vault/Ideas/Active/` or `/root/.hermes/vault/Projects/Active/`), append your session analysis to the relevant `claude.md` or `decisions.md` file using the naming convention in that folder's README. If no active project matches, write a brief summary to `Claude Activity/` with the project name in the filename. If you solve a config problem or discover a non-obvious flag/workaround, also write it to `/root/.hermes/vault/Reference/[topic].md`."

Claude writes with approval (Rob approves before file saves). Append to existing instructions — do not replace project-specific rules.

## Vault folder structure (2026-08-15)

Beyond per-project folders, the vault now has a formal project hierarchy:

```
/root/.hermes/vault/
├── Ideas/                    ← brainstorming-stage work
│   ├── _README.md
│   ├── Templates/
│   ├── Active/
│   └── Archived/
├── Projects/                 ← execution-stage work
│   ├── _README.md
│   ├── Active/
│   └── Archived/
├── Reference/                ← config answers, flags, gotchas (survives project deletion)
│   ├── _README.md
│   ├── playwright-vps.md
│   ├── claude-code-cli.md
│   └── ghl-funnel-gotchas.md
├── Hermes Activity/          ← Hermes session digests
├── Claude Activity/          ← Claude session notes
└── ...
```

**Ideas** — for thinking-stage work. Each idea gets a folder with: context, hermes.md, claude.md, research.md, decisions.md, next-steps.md. Status: `brainstorming → active → paused → done → dead`. Moves to `Projects/Active/` when it graduates to execution.

**Projects** — for execution-stage work. Each project gets: README.md, tasks.md, costs.md, blockers.md, decisions.md, log.md. Same append convention.

**Reference** — for config nuggets. Write here when a problem took >5 min to debug, a flag isn't in official docs, or an answer gets reused from chat history 3+ times. Append, don't rewrite — dated entries preserve the learning path.

## Related

- `gbrain-vault-mcp` — the retrieval layer that indexes whatever lands in the vault
- `syncthing-folder-sync` — the Windows↔VPS mirror underneath
- `windows-environment-quirks` — OneDrive KFM and shell-path resolution
