Skip to content

Troubleshooting

Obsidian MCP shows ✓ Connected but tools return 40101

Section titled “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

Section titled “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)

Section titled “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:

Terminal window
type C:\Users\justi\.gemini\extensions\extension-enablement.json

If you see:

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

Edit it to:

{ "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’)”

Section titled “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

Section titled “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”

Section titled “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

Section titled “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

Section titled “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

Section titled “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:

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