Troubleshooting
Beta · Tabnine plugin for OpenCode v0.5.1
Symptom-by-symptom fixes for the most common problems with tabnine-opencode, plus how to collect debug logs for a support ticket.
tabnine-opencode: command not found
The installer makes sure ~/.local/bin is on your PATH. If it wasn't already there, the installer added a block to your shell rc file on macOS/Linux, or updated the user-scope Path variable on Windows. Any such change only applies to new shells.
See Install for details on what the installer changes.
"could not find the Tabnine opencode binary"
If the launcher prints:
tabnine: could not find the Tabnine opencode binary.followed by a line saying it expected the binary at ~/.tabnine/opencode/bin/opencode and asking you to reinstall Tabnine opencode (or set OPENCODE_BIN), the installed tree at ~/.tabnine/opencode is missing or incomplete. Rerun the installer to repair it. See Install. (OPENCODE_BIN is a development override; reinstalling is the fix for a normal install.)
No models in the picker or placeholder entries
When no real model is available, the model list shows a placeholder entry that tells you what to do:
A Login required entry means you aren't signed in. Sign in, then restart:
tabnine-opencode auth loginA Models unavailable entry means model discovery failed or returned no agent-capable models. Verify your Tabnine host and that your token is valid, then restart.
You may also see a one-line startup notice describing the reason, for example that you aren't logged in (run tabnine-opencode auth login, or set TABNINE_TOKEN).
Placeholders can't call tools, and chatting with one selected fails at the Tabnine endpoint. They exist only to keep the provider visible and point you at the fix. After signing in, restart the CLI: real models are discovered at startup. For the full sign-in and model reference, see Signing In and Working with Models.
Browser sign-in times out or the callback can't connect
The browser sign-in flow waits up to 5 minutes end to end. If it doesn't complete, you'll see:
Configure the callback port and host
If the browser can't reach the local callback (for example, a firewall restricts local ports), pin the callback port with the OAUTH_CALLBACK_PORT environment variable and allow that port. An invalid value fails with Invalid value for OAUTH_CALLBACK_PORT: "<value>". You can also change the bind host with TABNINE_LOGIN_CALLBACK_HOST (default localhost).
Authenticate with a token
If a browser flow isn't practical, set TABNINE_TOKEN to a Tabnine PAT, or use the Paste Tabnine access token (PAT) login method. See Signing In and Working with Models.
Behind a corporate proxy or custom CA
There are no Tabnine-specific config keys for networking. These are environment variables set in your shell or CI job, plus your OS trust store.
Proxy:
HTTP_PROXY,HTTPS_PROXY, andNO_PROXY(lowercase variants too) are honored by default, with no opt-in flag needed. All outbound traffic (LLM, auth, model discovery, MCP) inherits them. Proxy credentials may be embedded in the proxy URL.Loopback is handled for you: the launcher appends
localhost,127.0.0.1toNO_PROXY(preserving your existing entries), so local traffic is never routed through the proxy.Custom CA: the bundled opencode binary trusts your OS certificate store (Keychain on macOS, the Windows system store,
ca-certificateson Linux) on every launch. For an extra PEM bundle, setNODE_EXTRA_CA_CERTSto its path. SettingNODE_TLS_REJECT_UNAUTHORIZED=0disables certificate verification entirely; we recommend against it.
opencode reference: proxy and custom-CA support are standard opencode features; see the opencode Network docs.
Quota and license messages
If a chat request fails with a message like:
your organization's usage quota for the month has been reached (the message names the exact scope, whether you, your team, or your organization, and the metered unit). Before the limit is hit you may also see warning toasts as usage crosses 80/90/95/100% of the limit, for example: "You have used 90% of the configured token limit. Requests are still going through; you may be blocked when the limit is reached."
If you instead see:
your license doesn't include agent access.
Windows uninstall ends with a "batch file cannot be found" error
On Windows, run the PowerShell uninstaller directly, with -ExecutionPolicy Bypass so it runs even under a restrictive execution policy:
The uninstall.cmd wrapper can end with a spurious "batch file cannot be found" error because cmd.exe re-reads the file it is deleting. The .ps1 is the supported entry point, and running it as shown above avoids the default Restricted policy blocking the unsigned script. See Install for uninstall options.
Collect debug logs
For a support ticket or bug report, capture a debug log of the failing session. Debug logging is controlled by the TABNINE_DEBUG environment variable (set it in your shell for the run, not in a config file). Ordinary runs don't produce a debug log, so enable it explicitly:
If you enable TABNINE_DEBUG without setting TABNINE_LOG_FILE, the debug log is written to your system's temporary directory in a file named tabnine-plugin-<ISO-timestamp>-<pid>.log, one file per process. Setting TABNINE_LOG_FILE is the reliable way to capture the log at a path you choose.
For opencode's own logs, launch with tabnine-opencode --print-logs, or look in ~/.local/share/opencode/log/.
opencode reference: log collection and general debugging are standard opencode features; see the opencode Troubleshooting docs.
Get your version for support
Always include your version when reporting a problem:
For headless and CI issues, see Scripts and CI. To reinstall or check what the installer changed, see Install.
Last updated
Was this helpful?
