The grey inline completion that used to follow your cursor just stopped. Pressing Tab inserts a plain indent instead of accepting a suggestion. Sometimes it only fails in certain files.
Fastest fix: click the Tab indicator in the bottom-right status bar. If it shows a slash or says “Disabled,” click it and turn it back on. That single toggle resolves the majority of cases, because Cursor lets you (or a .vscode/settings.json in the repo) snooze or disable Tab without any warning.
Cursor Tab is a low-latency in-house model that needs four things working at once: the client toggle on, a valid sign-in with quota left, an exclusive Tab keybinding, and a network path it can stream over. Break any one and suggestions disappear silently. Rule them out in this order: setting → sign-in/quota → extension conflict → file itself → network.
Which bucket are you in?
| Symptom | Most likely cause | Jump to |
|---|---|---|
| No Tab in any file, status bar shows Tab off/snoozed | Toggle disabled | Step 1 |
| No Tab anywhere, toggle is on | Sign-in expired or Hobby quota used up | Step 2 |
| Tab appears but pressing Tab indents instead of accepting | Another extension grabbed the key, or an IME ate it | Step 3 |
| Tab works in a scratch file but not your real file | File too large / disabled language / indexing stuck | Steps 4-5 |
| Nothing works on the office network, fine on hotspot | Proxy blocking HTTP/2 | Step 6 |
Common causes
1. Tab toggle is off or snoozed
Cursor moved Tab settings into their own pane. The current path is Cursor → Settings → Cursor Settings → Tab (older builds nested it under “Features”). The quickest control is the Tab status indicator in the bottom-right corner — click it and you can Snooze Tab, “Disable Globally,” or turn it off for specific file types. Any of those, or a repo .vscode/settings.json, can silently switch it off.
How to judge: look at the bottom-right status bar. A dimmed Tab icon or a slash means it is off. Or Cmd+Shift+P → “Preferences: Open Settings (UI)” → search “cursor tab”.
2. Sign-in expired or quota exhausted
Tab runs through Cursor’s backend. An expired login, a used-up free allotment, or a billing lapse makes the server refuse — with no UI alert. As of June 2026, the Hobby (free) plan includes a limited monthly pool of Tab completions (Cursor doesn’t publish the exact number; community reports put it around a couple thousand); Pro ($20/mo, ~$16 annual) gives unlimited Tab regardless of your premium-model credit balance. Each accepted suggestion burns one completion, so heavy Hobby users can run dry well before month-end.
How to judge: bottom-left avatar shows your account? Check remaining completions at cursor.com/dashboard/usage (or Settings → Usage).
3. Another extension or your IME grabbed Tab
GitHub Copilot, Tabnine, IntelliCode, or Codeium installed alongside Cursor fight over the Tab keybinding — last one registered wins, so Tab may trigger the other tool (or nothing). A second culprit, common with Chinese/Japanese/Korean input: an IME (input method editor) intercepts Tab while a candidate window is open.
How to judge: Cmd+Shift+P → “Preferences: Open Keyboard Shortcuts” → search “tab” and see what is bound to Accept Cursor Tab Suggestions. For the IME case, switch to plain English input and retest.
4. File type / size unsupported
Cursor Tab disables itself on binary files, very large files (roughly > 1MB), and some long plain-text documents.
How to judge: open a fresh 50-line .ts test file and start typing; Tab should fire. If it does, the original file is the issue.
5. Disabled language or stuck codebase index
Two file-specific blockers: (a) a language is on the Tab “off for this file type” list (or a repo .vscode/settings.json carries "cursor.cpp.disabledLanguages": ["markdown", "plaintext"]); (b) codebase indexing is stuck — if Cursor cannot index your repo it loses context and quietly stops suggesting.
How to judge: for disabled languages,
grep -r "disabledLanguages" .vscode/ ~/Library/Application\ Support/Cursor/User/settings.json
For indexing, open Settings → Indexing & Docs and check whether the codebase index shows an error or is stuck mid-sync.
6. Network / firewall blocks the Tab backend (usually HTTP/2)
This is the most common failure on corporate networks. Cursor streams all AI features — Tab, chat, indexing — over HTTP/2, and proxies like Zscaler (plus some VPNs and restricted-region routes) block HTTP/2 bidirectional streaming. The Tab request never completes, so no suggestion appears and nothing errors visibly.
How to judge: try a phone hotspot. If Tab works there but not at the office, it is the network. Confirm in View → Output → Cursor (look for a tab request timeout or HTTP/2 stream error).
Before you start
- Distinguish “no Tab anywhere” vs “no Tab in this one file” — different fixes (use the bucket table above).
- Commit
.vscode/settings.jsonbefore tweaking it. - Note your Cursor version, the current file path + extension + size.
Info to collect
- Cursor version, plan (Hobby / Pro / Pro+ / Business).
- Remaining completions from
cursor.com/dashboard/usage. - Extensions list (Copilot etc. still installed?).
- Current file path, size, language.
- Last 50 lines of View → Output → Cursor.
Shortest fix path
Ordered by hit rate.
Step 1: Confirm Tab is on
Click the Tab indicator in the bottom-right status bar → make sure “Disable Globally” is unchecked and it is not snoozed. Or from settings:
Cursor → Settings → Cursor Settings → Tab → ✓ Enable
Settings (UI) → Editor → Inline Suggest → ✓ Enabled
If Tab appears but pressing Tab does not accept it, run Cmd+Shift+P → “Reload Window” first — a stale window state is a cheap thing to rule out.
Step 2: Check sign-in + quota
Bottom-left avatar — signed in?
cursor.com/dashboard/usage — Tab completions remaining?
Hobby out of completions → wait for the monthly reset or upgrade to Pro. Pro Tab is unlimited but still needs a valid sign-in.
Step 3: Disable conflicting extensions (and rule out the IME)
Extensions panel → GitHub Copilot / Tabnine / Codeium → Disable (Workspace) or Uninstall
If you want to keep Copilot installed, at least turn off its inline suggestions:
// settings.json
{
"github.copilot.enable": { "*": false }
}
Then re-bind the accept key if needed: Cmd+Shift+P → “Preferences: Open Keyboard Shortcuts” → search Accept Cursor Tab Suggestions → make sure it is bound to Tab. If you use a CJK input method, switch to English input and retest — an IME with an open candidate window often swallows Tab.
Step 4: Test current file vs a fresh file
Create test.ts:
function add(a: number, b
Park the cursor after b, wait about a second. Tab fires → the original file is the problem (size / language / index). Tab does not fire → it is a global issue (settings / sign-in / network).
Step 5: Relax disabled languages and resync the index
Clear any language block:
// settings.json
{
"cursor.cpp.disabledLanguages": []
}
Then re-index if the codebase index looked stuck: Settings → Indexing & Docs → Sync, let it finish, and reload the window.
Step 6: Switch to HTTP/1.1 or configure the proxy
If Tab works on a hotspot but not on the corporate network, the proxy is almost certainly blocking HTTP/2. Force HTTP/1.1:
Cursor → Settings → Network → HTTP Compatibility Mode → HTTP/1.1 → restart Cursor
Equivalent settings key:
// settings.json
{
"cursor.general.disableHttp2": true
}
If that does not do it, set the proxy explicitly (Settings → search “proxy” → HTTP proxy URL) and ask IT to allowlist *.cursor.sh and *.cursor.com.
Step 7: Clear the cache (last resort)
A corrupted cache breaks autocomplete in a surprising number of 2026 reports. Quit Cursor completely, then delete the Cache and models folders (Cursor re-downloads what it needs on next launch):
- macOS:
~/Library/Application Support/Cursor/Cacheand.../Cursor/models - Windows:
%APPDATA%\Cursor\Cacheand%APPDATA%\Cursor\models - Linux:
~/.config/Cursor/Cacheand~/.config/Cursor/models
How to confirm it’s fixed
- Type in multiple file types (
.ts/.py/.md) — a grey completion appears each time. - Restart Cursor and reproduce — confirm it is not a transient blip.
- Sign into the same account on another machine — Tab works there too (rules out an account-side block).
If it still fails
- Reduce the repro: fresh file + a one-line function stub.
- Roll back the most recent Cursor upgrade or
settings.jsonchange. - Search
forum.cursor.comfor “tab not suggesting”; include your version + screenshots. - Grab View → Output → Cursor logs and post to the Bug Reports board.
FAQ
Why does Tab work in JavaScript but not Markdown?
Markdown and plaintext are common entries on the “disabled languages” / “off for this file type” list — either from the bottom-right Tab indicator menu or a repo cursor.cpp.disabledLanguages key. Clear them (Step 5).
Cursor says my Tab quota is unlimited, so why did suggestions stop? Unlimited Tab applies to Pro and above, but it still requires an active sign-in and a working network path. An expired session or an HTTP/2 block looks identical to “out of quota.” Check sign-in (Step 2) and HTTP/1.1 (Step 6).
I pressed Tab and it just indented — is Tab broken?
Usually not. Either a grey suggestion was not actually showing, or another extension/your IME owns the key. Verify the Accept Cursor Tab Suggestions binding and disable rival completion extensions (Step 3).
Tab works at home but never at the office. Why? Corporate proxies (Zscaler is the usual one) block the HTTP/2 streaming Cursor uses for AI features. Switch HTTP Compatibility Mode to HTTP/1.1 or have IT allowlist Cursor’s domains (Step 6).
Do I need to re-index after switching branches? If the codebase index errors or gets stuck, suggestions degrade or stop. Re-run Settings → Indexing & Docs → Sync and reload the window (Step 5).
Prevention
- One completion tool per IDE; do not run Copilot + Cursor side by side.
- On Hobby, glance at
cursor.com/dashboard/usagemid-month so you are not surprised when the free Tab completions run out. - On corporate networks, default to HTTP/1.1 mode and ask IT to allowlist
*.cursor.shand*.cursor.com. - Be careful editing
.vscode/settings.json—disabledLanguagescan silently nuke a whole language for the team. - Before high-stakes work, verify Tab still fires after any network switch.
Related reading
- Cursor “Apply” silently failed
- Cursor config conflicts with VS Code workspace settings
- Cursor Fast / Slow Request billing confusion
- Cursor model list out of date
- Cursor rules not loaded
Tags: #Troubleshooting #Cursor #Debug