You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Toolkit MCP routes fail with SQLite owner lock in local daemon #1618
Start the local headless daemon with at least one toolkit configured.
Initialize the default /mcp endpoint. It succeeds.
Send the same MCP initialize request to /mcp/toolkits/<slug>.
Expected
The toolkit-scoped MCP session initializes successfully.
Actual
The toolkit route returns HTTP 500 and the daemon logs:
Failed to open local SQLite data. Close other Executor processes and retry, or run with --log-level debug for details.
Only one Executor process is running. That process already owns the data-directory lock. createConfigForResource calls createExecutorHandle for the toolkit, which attempts to acquire the same local SQLite ownership lock a second time inside the daemon.
Proposed fix
Reuse the shared daemon database when constructing a toolkit-scoped executor, while retaining the toolkit-specific plugin configuration. A regression test should initialize a toolkit MCP route in the same server process.
Patch is available in #1619. In live arm64 daemon verification, /mcp and two toolkit resources returned HTTP 200. Opening a second client against the same toolkit reused the resource config and left the daemon direct-child PID set unchanged at zero.
Fixed in #1551 — toolkit MCP executors now borrow the daemon's open database handle instead of re-acquiring the lock. #1409 added regression coverage.1
Activity
jamieb72-afk commentedon Aug 17, 2026
Patch is available in #1619. In live arm64 daemon verification,
/mcpand two toolkit resources returned HTTP 200. Opening a second client against the same toolkit reused the resource config and left the daemon direct-child PID set unchanged at zero.RhysSullivan commentedon Aug 28, 2026
Fixed in #1551 — toolkit MCP executors now borrow the daemon's open database handle instead of re-acquiring the lock. #1409 added regression coverage.1
Footnotes
Sent from my Claude ↩