FAQ

Home > FAQs > The missing key hint

What is the missing key hint in OpenCues?

Type _ with no LLM API key configured and, instead of nothing happening, the blank fills with a message telling you exactly what's missing and where to fix it. That's the missing key hint: a tiny source whose whole job is turning the most common setup gap from a silent dead extension into a visible, actionable line.

What you actually see

On native hosts (Claude Code, OpenCode, Gemini CLI, the shell app):

[OpenCues: no API key — set CEREBRAS_API_KEY (or another provider's key) in ~/.cues/.env or your shell env]

In the Chrome extension: [OpenCues: no API key — open the extension popup], since keys live in the popup there. The message is a normal substitution: cycling on it restores your bare _, and it never overwrites anything else you typed.

Why it exists

Before it shipped, a keyless install looked exactly like a broken one: you typed weather london _, nothing happened, and there was no way to tell missing key from crashed runtime. That violated the project's no-silent-failure principle (the same one behind visible _ failure and in-place error strings like NVDA: HTTP 429), so the gap got its own source with the lowest priority in the system: it claims a _ only when a build-time check confirms no LLM-backed blank source could be wired at all.

Fixing what it's telling you

HostFix
Any native hostopencues set-key cerebras <key> (or another provider); keys land in ~/.cues/.env with owner-only permissions
ChromeOpen the extension popup and paste a key; it applies mid-session without a tab reload

Cerebras is named in the hint because it's the recommended default with a free tier; any supported provider's key works. opencues doctor lists missing keys as named findings, and opencues check-keys verifies a key actually works.

One honest limitation

The check is any-key coarse: if you have one provider key set but your config points at a different provider, the hint stays quiet (a key exists) while requests fail at dispatch time with their own error strings. The repo documents this coarseness; the request-time errors carry the detail in that case.

Related: opencues set-key · OpenCues not working? · Why is my blank not firing? · GitHub repo