---
title: "Troubleshooting"
description: "Specific problems we hit during setup + the fixes that worked."
source: "Obsidian Academy"
source_url: https://obsidian-academy.pages.dev/reference/03-troubleshooting/
saved: 2026-05-16
tags: [obsidian-academy, saved-from-web, reference]
---

## Obsidian MCP shows ✓ Connected but tools return 40101

**Cause:** The MCP server process started before the OBSIDIAN_API_KEY was updated in `~/.claude.json`. It's running with the old (or placeholder) key.

**Fix:** Restart Claude Code. The MCP re-reads its env vars on launch.

## Syncthing-Fork on Galaxy S26+ shows yellow circle, never green

**Cause:** Samsung One UI's battery optimization is suspending the Syncthing background service.

**Fix (do all three):**

1. Settings → Apps → Syncthing-Fork → Battery → **Unrestricted**
2. Settings → Battery → Background usage limits → **Never sleeping apps** → add Syncthing-Fork
3. In the Syncthing-Fork app: tap the status indicator → **"Force start, ignore run conditions"**

After all three, status goes green within seconds.

## `gemini extensions list` returns empty (Windows)

**Cause:** Two possibilities.

1. Extension is installed but disabled by an override in `~/.gemini/extensions/extension-enablement.json`. The `nanobanana` install script sometimes adds a disabling override for the install path.
2. Non-tty output mode renders the list as empty.

**Fix:** Check directly:

```powershell
type C:\Users\justi\.gemini\extensions\extension-enablement.json
```

If you see:

```json
{ "nanobanana": { "overrides": ["/C:/Users/justi/*"] } }
```

Edit it to:

```json
{ "nanobanana": { "overrides": [] } }
```

Or just delete the file entirely (default state is "enabled everywhere").

## `obsidian_get_recent_changes` errors "Cannot read properties of undefined (reading 'tryQuery')"

**Cause:** The Obsidian Local REST API plugin uses Dataview's API for "recent changes". Dataview isn't installed.

**Fix:** Install Dataview from Community Plugins. The tool starts working immediately. (Daily Driver uses this — also fixes that.)

## Syncthing folder offer notification doesn't appear on phone

**Cause:** The phone didn't yet receive the folder share from the PC (race condition or daemon was paused).

**Fix:** On the PC, open the Syncthing web UI → Folders → click your folder → check "Sharing" tab → confirm phone is listed. If listed but no notification on phone:

1. On phone, open Syncthing-Fork → Folders tab → scroll for pending entries
2. Force-refresh in the Syncthing-Fork app (pull down on the folders list)

## Astro Starlight build fails with "Node 18 deprecated"

**Cause:** Cloudflare Pages defaults to Node 18; Astro 4+ requires Node 20+.

**Fix:** In Cloudflare Pages project settings → Environment variables → add `NODE_VERSION = 20` to **both** Production and Preview environments.

## Obsidian mobile app says "permission denied" when opening the synced vault

**Cause:** Android storage permissions for Obsidian aren't set.

**Fix:** Settings → Apps → Obsidian → Permissions → Files and media → **Allow all the time**.

## Claude Code "MCP server failed to connect" for mcp-obsidian

**Cause:** Common reasons:

1. Obsidian app isn't running (the Local REST API plugin only exposes when Obsidian is open)
2. API key in `~/.claude.json` doesn't match the Local REST API plugin's key
3. Port mismatch (default is 27124 HTTPS, 27123 HTTP — both need to be enabled)

**Fix:** Open Obsidian → Settings → Community plugins → Local REST API → confirm the plugin is enabled. Copy the API key. Open `~/.claude.json`, find the `mcp-obsidian` entry, confirm `OBSIDIAN_API_KEY` matches. Save and restart Claude Code.

## Generated image filename has `.png` extension but `file` says JPEG

**Cause:** A nanobanana extension quirk — saves JPEGs with `.png` extension.

**Fix:** Functionally harmless (Obsidian and browsers render based on content, not extension). If it bothers you, rename:

```powershell
Get-ChildItem *.png | ForEach-Object { Rename-Item $_ ($_.BaseName + ".jpg") }
```

> [!NOTE]
> **When in doubt, restart.** Closing and reopening Claude Code, Obsidian, or Syncthing fixes ~30% of issues. Quick to try.
