A blank that won't fire is almost always one of five things, and they're checkable in order: sentence position, trigger mode, a missing key, a feature gate, or a disabled entry.
The checklist
- The keyword must lead the sentence. Routing is sentence-scoped: the keyword has to lead the sentence your
_ends, with the_at the trailing edge.volume _fires;I wonder what the volume _doesn't, by design, so prose that merely mentions a keyword never triggers it. Starting a fresh sentence (or line) with the command fixes it. - Spaced trigger mode. If
blank-trigger-mode: spacedis set (the markdown-friendly mode that keeps_italic_intact), a bare_is inert until a confirming space follows it. Type_then space, or set the mode back toimmediate. - A missing API key. Key-dependent blanks don't register without their key: stocks needs
FINNHUB_API_KEY(free), and the LLM-backed_sources need a provider key.opencues set-key <provider> <key>stores it;opencues check-keysverifies it works. - A feature gate is off. Instruction rewrites need
transform-blank-mode: onin~/.cues/OPENCUES.md(free-form lookups are always on). If lookups work butmake this formal _doesn't, this is the likely one. - The blank is disabled at some layer. A
disable:list in a user- or project-levelBLANKS.mdsubtracts entries silently from that layer.
Diagnosing in order
opencues list --blanks confirms the blank is registered at all and shows which hosts it can run on. opencues doctor catches the structural causes (missing keys, stale installs). opencues logs --tail shows the live runtime log while you reproduce. And remember the design guarantee: an unresolvable _ just stays visible in your text; there is no silent gave-up state, so a _ sitting there is itself the signal to start this checklist.
Related: OpenCues not working? · Blank shapes · opencues doctor · Blank trigger mode · GitHub repo