# Reported issues for Obsidian Turbocharged

Pod holds 11 of 11 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [Obsidian Turbocharged](/mcp/obsidian-turbocharged).

## Most discussed

### bridge transport discards e.cause: a TLS trust failure is reported as "reload the plugin inside Obsidian"

## Summary

`createBridgeClient`'s `doFetch` catches every `fetch` rejection and rethrows a bare `plugin_unreachable`, discarding `e.cause`. A TLS trust failure, a connection refused, a DNS failure and an abort therefore arrive at `bridgeState` as one indistinguishable state, and `bridge.state` renders the wrong remediation for all but one of them.

In our case `doctor` reported the companion unreachable and told us to reload the plugin inside Obsidian, while the companion was answering the…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/860) · 2026-08-23 · closed · external user · 3 comments

### plane adoption: ambient model work cannot be scoped narrower than read visibility, and there is no single-pass trigger to evaluate it

We have `plane.enabled: false` and want to turn it on. Two things block us, and both are small. Filing together because they are the same story: a feature that is correctly opt-in has no on-ramp.

Context: this vault has a hard output firewall over two folders (personal identity/health material). It is a real constraint, not a preference, and it is why we disabled plane in the first place.

## 1. Ambient model work cannot be scoped narrower than read visibility

`plane-wiring.ts` takes a…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/880) · 2026-09-02 · closed · external user · 2 comments

### Lean facade has no way to enumerate the catalog: 97 of 163 tools never called in 4,787 calls

The lean facade advertises three meta-tools (`find_capability`, `describe_capability`, `call_capability`) in place of the full catalog. `find_capability` is **query-only**: it takes a natural-language string and returns the best matches. There is no way to ask "what capabilities exist".

That is a discoverability gap rather than a bug, but I have measured what it costs, so I wanted to report it with numbers rather than as a preference.

## The measurement

`episode_stats` on our install, over…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/877) · 2026-09-02 · closed · external user · 2 comments

### HITL-gated note tools require elicit_token but do not advertise it, and annotate destructive: false

## Summary

`move_note` across a folder boundary, and `delete_note`, both correctly refuse without a confirmation token:

```
Error [elicit_required]: human confirmation required
```

The gate itself is good and should stay. The problem is that it is **undiscoverable from the advertised schema**, and the schema surface is internally inconsistent about it.

## Evidence

`describe_capability({ name: "move_note" })` returns properties:

```
vault, from, to, overwrite, update_backlinks, prev_hash,…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/785) · 2026-08-12 · closed · external user · 2 comments

### Tool errors are unactionable for programmatic callers: validation detail reaches only structuredContent

## Summary

`errorToResult` renders only the error code and message into the text content block. Everything diagnostically useful — the Zod issues naming the offending fields — is attached solely to `structuredContent`.

The server is doing the right thing by computing and attaching that detail. The problem is that at least one major client (Claude Code, current release) **discards `structuredContent` when `isError` is true** and renders the text line alone. The caller then receives:

```
Error…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/784) · 2026-08-12 · closed · external user · 2 comments

### Bridge routes registered at root but server requests /obsidian-tc/v1/* — every bridge call 404s, vaults always resolve headless

## Bug

The companion registers its bridge routes **unprefixed**, but the server requests every bridge path **under `/obsidian-tc/v1`** — so every bridge call 404s and the server falls back to headless. The plugin bridge cannot work as shipped (v1.3.6).

**Companion side** — `packages/plugin/src/main.ts` `registerBridgeRoutes()` registers `r.path` (e.g. `/probe`, `/dataview/dql`) directly on Local REST API's `apiExtensionRouter`. LRA mounts that router at the root of its Express app…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/153) · 2026-07-06 · closed · external user · 2 comments

### bundle_folder: truncated:true has no continuation cursor, so a folder over max_bytes cannot be read in full

`bundle_folder` reports `truncated: true` when it hits `max_files` or `max_bytes`, but returns no continuation token, so there is no way to fetch the remainder. The only recovery is to re-call with a larger `max_bytes`, which requires knowing the answer in advance.

## Repro

Our `☁️ Cloud Compute` folder is **502,618 bytes** across 74 notes. The default `max_bytes` is **500,000**.

```jsonc
{ "vault": "auny", "root": "☁️ Cloud Compute", "max_files": 100,
  "max_bytes": 500000, "extensions":…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/879) · 2026-09-02 · open · external user · 1 comment

### call_capability: passing `arguments` instead of `args` reports the target's missing fields, never the envelope mistake (strictObject does not fire)

Follow-up to #784 / THE-823, which I filed and you closed by making `CALL_CAPABILITY_SCHEMA` a `z.strictObject`. That was the right fix on the server side, and it did change the failure. But from inside an MCP client the diagnosis is still misdirected, because the client strips the key before the server ever sees it.

Reproduced today on **v1.23.5** (`f98ca31a`), lean facade profile, stdio transport.

## Repro

Call `call_capability` with the envelope key `arguments` instead of `args`, against…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/876) · 2026-09-02 · open · external user · 1 comment

## Most recent

### M4 bridge tools (list_commands/execute_command etc.) have no fallback to Local REST API's native routes — related to #154

**Related to #154** (https://github.com/The-40-Thieves/obsidian-tc/issues/154). Filing as a separate issue since attempts to comment on #154 directly are erroring out on my end (`MCP tool call requires approval`) — please feel free to merge these into one if that's cleaner on your side.

**Summary**

Independent of the `getPublicApi()`/`getAPI()` integration bug in #154, `list_commands` / `execute_command` — and every other M4 bridge-domain tool — hardcode the companion plugin bridge with…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/155) · 2026-07-07 · closed · 1 comment

### Companion plugin never registers with current Local REST API (v4.1.3): wrong integration point (plugin.api / requestHandler.apiExtensionRouter don't exist)

**Summary**

The companion plugin (`packages/plugin`, v1.3.4/v1.3.6) never registers its bridge routes against a current install of `obsidian-local-rest-api` (v4.1.3, "Local REST API with MCP" by Adam Coddington — the latest release on the official repo). `registerBridgeRoutes()` in `packages/plugin/src/main.ts` returns `null` every time, so `GET /obsidian-tc/v1/probe` 404s and every server-side tool that needs the companion fails with `requires_live_obsidian`, even with the plugin correctly…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/154) · 2026-07-07 · closed · 1 comment

### OCR bridge always reports plugin_missing: CAP_IDS maps "text-extractor" to wrong plugin id "obsidian-text-extractor"

## Bug

`CAP_IDS` in `packages/plugin/src/routes.ts` maps the `text-extractor` capability to the plugin id `obsidian-text-extractor`:

```ts
const CAP_IDS: Record<string, string> = {
  ...
  "text-extractor": "obsidian-text-extractor",
  ...
};
```

But the community **Text Extractor** plugin's actual id is `text-extractor` (from its `manifest.json` as installed by the community store):

```json
{ "id": "text-extractor", ... }
```

## Impact (v1.3.6)

Both lookups that use this map fail even…

[Read the thread](https://github.com/The-40-Thieves/obsidian-tc/issues/152) · 2026-07-06 · closed · external user · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/The-40-Thieves/obsidian-tc/issues).
