# Bug: Kraken Cannot Write to Obsidian Vault **Date**: 2026-05-14 **Status**: Fixed ✅ (2026-05-14) ## Root Cause (confirmed) mcpvault возвращает `Permission denied` по двум причинам: 1. **Папка не существует** в sparse checkout — mcpvault не создаёт субдиректории 2. **Ownership mismatch** — Hermes/mcpvault внутри контейнера работает как `hermes` (uid=10000), vault принадлежит `kraken` (uid=1000), права `755` → запись запрещена ## Fix Applied 1. Созданы все нужные папки в vault (Eagle → push на NAS → Кракен pull): - `personal/inbox/`, `personal/plans/`, `personal/documents/`, `personal/instructions/`, `personal/projects/` 2. `chmod -R a+w ~/obsidian/personal ~/obsidian/family` на хосте Кракена 3. В `sync-vault.sh` добавлен `chmod -R a+w` после каждого pull — чтобы права восстанавливались на новых файлах 4. SOUL.md обновлён — явно перечислены все пути в `personal/` ## Open: Image Handling Отдельная проблема обнаружена при попытке сохранить фото из Telegram в inbox. **Что произошло**: Gemini API кончились кредиты (HTTP 429) → fallback на OpenRouter (gpt-oss-120b, minimax-m2) → эти модели не умеют vision → ошибка "No endpoints found that support image input" **Желаемое поведение**: агент должен уметь работать с изображениями на уровне ФС в зависимости от контекста: - Если нужно распознать/проанализировать → пустить в vision-capable модель - Если нужно просто сохранить → положить файл в `personal/inbox/` и записать заметку со ссылкой на путь - Если модель не умеет vision → не падать, а сохранить файл и сообщить агенту путь **Что нужно в Hermes**: при `image_routing` добавить режим `save_to_fs` — сохранить файл локально, передать агенту путь вместо байтов. Агент сам решает что делать по контексту. **Текущий workaround**: пополнить Gemini API кредиты на Кракене.