Troubleshooting
Common issues and fixes.
macOS "damaged app" / Gatekeeper Warning
The current macOS builds aren't code-signed. After installing the DMG, clear the quarantine attribute:
xattr -cr /Applications/Coodeen.appThen open the app again.
Sidecar Won't Start
Coodeen fails if it can't spawn the bundled opencode binary.
- Dev: ensure
apps/desktop/resources/bin/opencodeexists. Re-runbun run --cwd apps/desktop fetch-opencode. - Packaged app: the binary ships under
<app>/Contents/Resources/bin/opencode(macOS) orresources/bin/opencode.exe(Windows). If missing, reinstall.
Look for [opencode] sidecar ready at http://127.0.0.1:<port> in the console.
Fresh Start
Wipe both stores:
| Platform | Electron userData | opencode data |
|---|---|---|
| macOS | ~/Library/Application Support/coodeen/ | ~/.local/share/opencode/ |
| Windows | %APPDATA%/coodeen/ | %APPDATA%/opencode/ |
| Linux | ~/.config/coodeen/ | ~/.local/share/opencode/ |
Preview Not Loading
- Check your dev server is actually up at the URL shown.
- Some servers set
X-Frame-Options/Content-Security-Policythat block iframe embedding. - Click the refresh icon in the preview toolbar.
- If the 10s load timeout fires, the retry panel appears — click Retry.
Element Picker Doesn't Pick Anything
The picker relies on iframe.contentDocument. Heavily cross-origin content (some third-party sites) hides that. Point the preview at your local dev server instead.
Screenshots Don't Reach the AI
The current app uses a fixed model. If that model doesn't accept images, the provider drops the image part. The agent still receives the selected element's DOM metadata (tag, id, classes, selector).
API Key Rejected
- Paste-check the key — no stray whitespace.
- Provider dashboard — is the key live and billable?
- opencode caches its provider list; Coodeen disposes the cache after an auth mutation, but if model calls still fail, restart the app.
Event Stream Reconnects in a Loop
The sidecar's /global/event stream is monitored by a heartbeat. If 15s pass with no events, Coodeen aborts and reconnects with exponential backoff. Persistent reconnects usually mean the sidecar crashed — check the console for opencode sidecar exited early and share the stderr output in a bug report.