Skip to main content

Common issues

Start with the error and the affected environment before changing configuration.

Sign-in fails

For an invalid redirect, compare the exact callback URL with WorkOS. For CORS, check the allowed origin separately. Register ports 5173 and 5174 if both are used locally. Match the frontend and backend WorkOS client IDs. The current browser integration does not use WORKOS_COOKIE_PASSWORD. See WorkOS setup.

Plugin rejects the custom API URL

Published opencode-sync-plugin 0.3.7 and claude-code-sync 0.1.15 login validators require a Convex URL. For hosted OpenSync, use the compatibility URL from Settings:
For supported custom-domain clients and REST calls, use https://api.opensync.dev. https://app.opensync.dev serves the Convex client, not plugin HTTP requests. Existing keys and valid plugin configurations continue working.

OpenCode force sync finds no sessions

OpenCode installations using opencode.db need a compatible plugin reader. The published 0.3.7 reader expects the older JSON storage layout. This is tracked in issue #34. Reinstalling the app or deleting server data does not fix that reader.

Dates or token totals look wrong

Record your plugin version and whether the problem happened during live sync or backfill. Preserve your source data. Date backfill and token accounting have plugin-dependent reports; see #29 and #16. A context-window count is different from cumulative usage across requests.

Frontend is blank or a route fails on reload

Check the browser console, the built VITE_CONVEX_URL, the WorkOS client ID and the selected Convex deployment. Confirm static routes are registered after API routes and that the SPA fallback serves /dashboard. Follow static hosting.

Semantic search has no results

Check that the intended deployment has its OpenAI key and that embedding jobs succeeded. Full-text search and semantic search have different prerequisites. Do not change embedding models without checking vector dimensions and planning reindexing.

Deletion reports an error

Capture the request ID and error text, excluding API keys and session content. Avoid repeated account deletion attempts while a deletion is running. Report the error in the existing deletion follow-up.