Troubleshooting Center
Verify the editor, Node.js runtime, extensions, language servers, and workspace one signal at a time.
This page is the executable diagnostic tree. For background explanations and configuration guidance, see the FAQ.
Core Diagnostic Commands
Show version and log information for a bug report.
Open coc.nvim’s log file.
Open an extension or language-server output channel.
Restart the coc.nvim service.
coc.nvim service does not start after installation
The editor or Node.js executable seen by Vim may be older than the current requirements: Vim 9.0.0438+, Neovim 0.8.0+, and Node.js 22.15.0+.
- 1Upgrade Vim, Neovim, or Node.js when the reported version is below the documented requirement.
- 2If the shell has a newer Node.js, make sure Vim inherits that PATH or set `g:coc_node_path` to the intended executable.
- 3Restart the editor, run `:CocInfo`, and inspect `:messages` if initialization still fails.
Verify the result
The editor and Node.js versions reported inside the editor must satisfy the current requirements and point to the expected executable.
Completion does not appear when typing
A competing insert-mode mapping, an incompatible completeopt value, or no completion provider is active for the current filetype.
- 1Use `set completeopt=noinsert,noselect,menuone` while testing completion.
- 2Run :set filetype? in the affected buffer. An empty or incorrect filetype means the language extension may not activate; fix file detection before changing completion mappings.
- 3Run :CocList extensions to check installation and activation, then :CocList sources in the affected buffer. If the language source is missing, follow the language-server startup guide below.
- 4If a source is available, type a member access such as user. in the TypeScript walkthrough. If suggestions appear but Tab or Enter does not accept them, inspect those mappings instead of reinstalling the server.
- 5Remove or adjust competing <Tab>/<CR> mappings, then restart coc.nvim with `:CocRestart`.
Verify the result
The mapping output should identify the mapping you expect, and the filetype should have an active completion provider.
Language server does not start or initialize
coc.nvim does not bundle language servers. The extension or `languageserver` entry may be missing, its executable may not be on PATH, or the workspace root may not match the project.
- 1Install the language extension, or configure `languageserver` in `coc-settings.json`; do not configure the same server twice.
- 2If the extension is absent from :CocList extensions, finish its installation first. If installed, open a saved file with its supported filetype and inspect :CocList services again.
- 3For a manually configured executable, verify that command in the environment that launches Vim/Neovim. Extensions can bundle their server; a missing global pyright command alone does not prove coc-pyright is broken.
- 4If a service is stopped or fails to initialize, inspect its output channel and :CocOpenLog. Resolve the first concrete error, such as an executable not found or invalid server argument, before restarting.
- 5Check `rootPatterns` and open a file inside the intended project root before running `:CocRestart`.
Verify the result
The services list and output channel should identify the server id, root folder, command, and the first startup error.
Go to definition or diagnostics do nothing
The active provider has not initialized, the current buffer is outside its workspace, or the server does not advertise the requested capability.
- 1Wait for the server to finish initialization and inspect its output channel for errors.
- 2Confirm that the filetype and workspace root match the language extension configuration.
- 3Check the mapping with `:verbose nmap gd`; use the documented `<Plug>(coc-definition)` mapping when appropriate.
Verify the result
A service should be attached to the buffer; if it is attached but lacks the feature, its output and capabilities need checking.
Extension installation fails or hangs
The npm registry, proxy, certificate, or npm executable used by coc.nvim is unavailable in the current environment.
- 1Confirm that the npm executable is available and that the configured registry can be reached outside Vim.
- 2For a proxy, configure `http.proxy` or let coc.nvim inherit `http_proxy`/`https_proxy`; use `http.proxyCA` for a required CA.
- 3If your organization uses a private registry, set `coc.nvim:registry` in `~/.npmrc`, then retry `:CocInstall`.
Verify the result
The extensions output should contain the first npm, registry, proxy, or certificate error rather than only a timeout symptom.
coc.nvim reports errors but the cause is unclear
The useful detail is in the coc.nvim log or the stderr stream of its Node.js process, not in the notification alone.
- 1Use `:CocOpenLog` to inspect the log; it is cleared when coc.nvim starts, so reproduce the issue after opening Vim.
- 2Use `:CocPrintErrors` for stderr from the Node.js process and `:CocCommand workspace.showOutput` for extension or server channels.
- 3For a short diagnostic session, set `NVIM_COC_LOG_LEVEL=debug` before launching Vim/Neovim, then remove it when finished.
Verify the result
Collect the first error and its stack/context, not only the last repeated notification.
Node or an extension works in a terminal but not in Vim on Windows
Vim/Neovim may inherit a different PATH, Node executable, npm configuration, or coc data/config home than the terminal used to install the extension.
- 1Start Vim/Neovim from an environment where the intended Node.js executable is on PATH, or set `g:coc_node_path` to an explicit executable path.
- 2Check the extension output channel for the npm command and path that were actually used.
- 3Remember that Windows uses `~/AppData/Local/nvim` and `~/AppData/Local/coc` for the relevant default homes documented by coc.nvim.
Verify the result
The executable check should return a non-zero value and a path; compare that path with the Node/npm installation used in the terminal.
A remote or SSH workspace cannot start its tools
coc.nvim starts its Node process and configured language-server commands in the environment where Vim/Neovim is running; a local PATH or project root may not exist on the remote host.
- 1Install Node.js, the coc extension, and the language-server executable in the environment that runs Vim/Neovim.
- 2Use a remote project path in `rootPatterns` and ensure the remote filesystem is accessible to the server process.
- 3Copy the remote output channel and `:CocInfo` results when reporting the problem; redact usernames, tokens, and private paths.
Verify the result
The working directory, Node path, server command, and workspace root must all describe the same remote environment.
Editing is slow or CPU usage spikes in a large workspace
File watching, diagnostics, or a language server is processing generated or dependency folders that do not need to be part of the workspace.
- 1Use `workspace.ignoredFolders` and `fileSystemWatch.ignoredFolders` for generated or dependency paths such as `node_modules`, `dist`, or `target`.
- 2Inspect the file watcher output (native and Watchman backends) with `:CocCommand workspace.showOutput watchman` when file watching is involved.
- 3Re-enable coc.nvim with `:CocEnable`, then narrow the responsible extension or language server using `:CocList services`.
Verify the result
Compare behavior with coc.nvim disabled and identify the extension, server, or watched path before changing broad editor settings.
A setup works with a minimal config but not with the full vimrc
Another plugin, runtimepath entry, mapping, or user/workspace setting changes the behavior before coc.nvim handles the event.
- 1Start with only coc.nvim, the required extension or language-server setting, and the relevant mapping; add other plugins back one at a time.
- 2Use `:verbose imap <Tab>` or `:verbose nmap gd` to find the file that last defined a conflicting mapping.
- 3Check both user and workspace settings, then run `:CocRestart` after changing configuration.
Verify the result
The smallest failing configuration should identify whether the cause is a mapping, plugin, workspace setting, or extension.
Pre-formatted GitHub Issue Template
| 1 | ### [Runtime] coc.nvim service does not start |
| 2 | |
| 3 | ### Environment (fill in from your editor; do not guess) |
| 4 | - Editor: Vim or Neovim and version: [fill in] |
| 5 | - coc.nvim version/branch/commit from :CocInfo: [fill in] |
| 6 | - Node.js version and executable path from :CocInfo or :!node --version: [fill in] |
| 7 | - Extension and/or language server name, version, and command: [fill in if applicable] |
| 8 | |
| 9 | ### Problem |
| 10 | coc.nvim service does not start after installation |
| 11 | |
| 12 | ### Minimal reproduction (smallest file, filetype, config, and exact steps) |
| 13 | [fill in; write "Not collected" if unavailable] |
| 14 | |
| 15 | ### Diagnostics (paste only the relevant output) |
| 16 | - Output of :CocInfo: |
| 17 | [paste here] |
| 18 | - Relevant :CocOpenLog, :CocPrintErrors, or workspace.showOutput output: |
| 19 | [paste here] |
| 20 | |
| 21 | ### Additional details for this symptom |
| 22 | ## Output of `:version` |
| 23 | |
| 24 | ## Output of `:!node --version` and `:echo exepath("node")` |
| 25 | |
| 26 | ## Output of `:CocInfo`, `:messages`, or Neovim `:checkhealth` |
| 27 | |
| 28 | |
| 29 | ### Redaction checklist before posting |
| 30 | - [ ] Replace home, workspace, and project paths plus usernames with <PATH> (for example /Users/<USER>/project or C:\Users\<USER>\project). |
| 31 | - [ ] Replace tokens, API keys, passwords, cookies, private keys, and Authorization headers with <REDACTED>. |
| 32 | - [ ] Remove private proxy or registry credentials and private hostnames/IP addresses; keep only the relevant public error or setting name. |
| 33 | - [ ] Review language-server commands, arguments, and environment variables for --token, --api-key, --password, URLs, and paths before posting. |
| 34 | - [ ] Share a minimal reproduction and small config excerpt only; do not paste project source code, a whole private repository, or unrelated log history. |