Skip to main content
Diagnostics & Recovery

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.

GitHub Issue Tracker
Selected symptom: coc.nvim service does not start after installation. 0 of 3 steps completed.

Core Diagnostic Commands

:CocInfo

Show version and log information for a bug report.

:CocOpenLog

Open coc.nvim’s log file.

:CocCommand workspace.showOutput

Open an extension or language-server output channel.

:CocRestart

Restart the coc.nvim service.

Common Symptoms
Resolution Guide

coc.nvim service does not start after installation

30-Second Quick Verification
Neovim users can run `:checkhealth`; in either editor check `:version`, `:echo exepath("node")`, and `:!node --version`.
Probable Cause

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+.

Step-by-step Solution
  1. 1Upgrade Vim, Neovim, or Node.js when the reported version is below the documented requirement.
  2. 2If the shell has a newer Node.js, make sure Vim inherits that PATH or set `g:coc_node_path` to the intended executable.
  3. 3Restart the editor, run `:CocInfo`, and inspect `:messages` if initialization still fails.
Commands to Test

Verify the result

The editor and Node.js versions reported inside the editor must satisfy the current requirements and point to the expected executable.

Resolution Guide

Completion does not appear when typing

30-Second Quick Verification
Run `:verbose imap <Tab>` and `:verbose imap <CR>` to find the plugin that owns those mappings, then run `:set completeopt?`.
Probable Cause

A competing insert-mode mapping, an incompatible completeopt value, or no completion provider is active for the current filetype.

Step-by-step Solution
  1. 1Use `set completeopt=noinsert,noselect,menuone` while testing completion.
  2. 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.
  3. 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.
  4. 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.
  5. 5Remove or adjust competing <Tab>/<CR> mappings, then restart coc.nvim with `:CocRestart`.
Commands to Test

Verify the result

The mapping output should identify the mapping you expect, and the filetype should have an active completion provider.

Resolution Guide

Language server does not start or initialize

30-Second Quick Verification
Run `:CocList services` and `:CocCommand workspace.showOutput`, then select the relevant language-server channel.
Probable Cause

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.

Step-by-step Solution
  1. 1Install the language extension, or configure `languageserver` in `coc-settings.json`; do not configure the same server twice.
  2. 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.
  3. 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.
  4. 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.
  5. 5Check `rootPatterns` and open a file inside the intended project root before running `:CocRestart`.
Commands to Test

Verify the result

The services list and output channel should identify the server id, root folder, command, and the first startup error.

Resolution Guide

Go to definition or diagnostics do nothing

30-Second Quick Verification
Use `:CocList services` to see attached providers and `:CocDiagnostics` to check the current buffer.
Probable Cause

The active provider has not initialized, the current buffer is outside its workspace, or the server does not advertise the requested capability.

Step-by-step Solution
  1. 1Wait for the server to finish initialization and inspect its output channel for errors.
  2. 2Confirm that the filetype and workspace root match the language extension configuration.
  3. 3Check the mapping with `:verbose nmap gd`; use the documented `<Plug>(coc-definition)` mapping when appropriate.
Commands to Test

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.

Resolution Guide

Extension installation fails or hangs

30-Second Quick Verification
Run `:CocCommand workspace.showOutput extensions` immediately after a failed `:CocInstall` to capture the registry or npm error.
Probable Cause

The npm registry, proxy, certificate, or npm executable used by coc.nvim is unavailable in the current environment.

Step-by-step Solution
  1. 1Confirm that the npm executable is available and that the configured registry can be reached outside Vim.
  2. 2For a proxy, configure `http.proxy` or let coc.nvim inherit `http_proxy`/`https_proxy`; use `http.proxyCA` for a required CA.
  3. 3If your organization uses a private registry, set `coc.nvim:registry` in `~/.npmrc`, then retry `:CocInstall`.
Commands to Test

Verify the result

The extensions output should contain the first npm, registry, proxy, or certificate error rather than only a timeout symptom.

Resolution Guide

coc.nvim reports errors but the cause is unclear

30-Second Quick Verification
Run `:CocInfo`, `:CocOpenLog`, and `:CocPrintErrors` after reproducing the problem.
Probable Cause

The useful detail is in the coc.nvim log or the stderr stream of its Node.js process, not in the notification alone.

Step-by-step Solution
  1. 1Use `:CocOpenLog` to inspect the log; it is cleared when coc.nvim starts, so reproduce the issue after opening Vim.
  2. 2Use `:CocPrintErrors` for stderr from the Node.js process and `:CocCommand workspace.showOutput` for extension or server channels.
  3. 3For a short diagnostic session, set `NVIM_COC_LOG_LEVEL=debug` before launching Vim/Neovim, then remove it when finished.
Commands to Test

Verify the result

Collect the first error and its stack/context, not only the last repeated notification.

Resolution Guide

Node or an extension works in a terminal but not in Vim on Windows

30-Second Quick Verification
In Vim/Neovim run `:echo executable("node")`, `:echo exepath("node")`, and `:CocInfo`.
Probable Cause

Vim/Neovim may inherit a different PATH, Node executable, npm configuration, or coc data/config home than the terminal used to install the extension.

Step-by-step Solution
  1. 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.
  2. 2Check the extension output channel for the npm command and path that were actually used.
  3. 3Remember that Windows uses `~/AppData/Local/nvim` and `~/AppData/Local/coc` for the relevant default homes documented by coc.nvim.
Commands to Test

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.

Resolution Guide

A remote or SSH workspace cannot start its tools

30-Second Quick Verification
From the remote Vim session, run `:echo getcwd()`, `:echo exepath("node")`, and inspect `:CocList services` plus the server output channel.
Probable Cause

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.

Step-by-step Solution
  1. 1Install Node.js, the coc extension, and the language-server executable in the environment that runs Vim/Neovim.
  2. 2Use a remote project path in `rootPatterns` and ensure the remote filesystem is accessible to the server process.
  3. 3Copy the remote output channel and `:CocInfo` results when reporting the problem; redact usernames, tokens, and private paths.
Commands to Test

Verify the result

The working directory, Node path, server command, and workspace root must all describe the same remote environment.

Resolution Guide

Editing is slow or CPU usage spikes in a large workspace

30-Second Quick Verification
Run `:CocInfo`, inspect `:CocOpenLog`, and temporarily run `:CocDisable` to see whether the lag changes.
Probable Cause

File watching, diagnostics, or a language server is processing generated or dependency folders that do not need to be part of the workspace.

Step-by-step Solution
  1. 1Use `workspace.ignoredFolders` and `fileSystemWatch.ignoredFolders` for generated or dependency paths such as `node_modules`, `dist`, or `target`.
  2. 2Inspect the file watcher output (native and Watchman backends) with `:CocCommand workspace.showOutput watchman` when file watching is involved.
  3. 3Re-enable coc.nvim with `:CocEnable`, then narrow the responsible extension or language server using `:CocList services`.
Commands to Test

Verify the result

Compare behavior with coc.nvim disabled and identify the extension, server, or watched path before changing broad editor settings.

Resolution Guide

A setup works with a minimal config but not with the full vimrc

30-Second Quick Verification
Open `:CocConfig` and `:CocLocalConfig`, then compare the failing session with a minimal Vim/Neovim configuration.
Probable Cause

Another plugin, runtimepath entry, mapping, or user/workspace setting changes the behavior before coc.nvim handles the event.

Step-by-step Solution
  1. 1Start with only coc.nvim, the required extension or language-server setting, and the relevant mapping; add other plugins back one at a time.
  2. 2Use `:verbose imap <Tab>` or `:verbose nmap gd` to find the file that last defined a conflicting mapping.
  3. 3Check both user and workspace settings, then run `:CocRestart` after changing configuration.
Commands to Test

Verify the result

The smallest failing configuration should identify whether the cause is a mapping, plugin, workspace setting, or extension.

Still stuck?

Pre-formatted GitHub Issue Template

issue-report.md
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
10coc.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.