Fix VS Code AI Extension Conflicts: Tested Solutions for Keybinding, Autocomplete, and Performance Issues
TL;DR AI extensions conflict when multiple providers fight for the same autocomplete, inline suggestion, or keybinding slots. Fix by disabling duplicate providers, resolving keybinding collisions, or isolating extensions into separate…
- AI extensions conflict when multiple providers fight for the same autocomplete, inline suggestion, or keybinding slots.
- Fix by disabling duplicate providers, resolving keybinding collisions, or isolating extensions into separate VS Code profiles.
- Performance issues from concurrent AI extensions compound — disable what you’re not actively using.
Overview
Running multiple AI coding extensions in VS Code — GitHub Copilot, Codeium, Tabnine, Continue, Cursor-style plugins, Amazon Q — causes predictable failures. Duplicate inline suggestions overlay each other. Keybindings stop responding. CPU usage spikes as competing language servers process the same keystrokes. This article covers the most common conflict patterns and provides tested fixes for each.
What Causes This Error
VS Code’s extension architecture allows only one inline completion provider to display at a time. When multiple AI extensions register as InlineCompletionItemProvider, the editor must arbitrate. The result: suggestions flicker, disappear, or show the wrong provider’s output.
Common symptoms:
[Extension Host] Inline completion provider from 'GitHub.copilot' is already registered
Keybinding conflict: Tab is bound to multiple commands (copilot.acceptSuggestion, codeium.acceptSuggestion)
[Error] Extension host terminated unexpectedly. Reason: out of memory
Root causes fall into three categories:
Provider collision — Two extensions both register for inline completions. VS Code picks one semi-randomly per keystroke. You see flickering or missing suggestions.
Keybinding overlap — Tab, Escape, Ctrl+Enter, and Alt+] are overloaded by multiple AI tools. The wrong handler fires, or none does.
Resource exhaustion — Each AI extension spawns its own language server process, sends context to its API on every keystroke (or debounced interval), and holds state in memory. Three concurrent AI extensions can easily consume 2-4 GB of extension host memory.
~/.vscode/extensions/ directly. Updates will overwrite your changes silently.Solution 1: Disable Competing Inline Completion Providers
The most reliable fix. Keep one AI autocomplete provider active; disable the rest at the settings level (not uninstall — you may want them later).
Open VS Code settings JSON (Ctrl + Shift + P → “Preferences: Open User Settings (JSON)”) and add:
{
"editor.inlineSuggest.enabled": true,
"github.copilot.enable": {
"*": true
},
"codeium.enableConfig": {
"*": false
},
"tabnine.experimentalAutoImports": false,
"tabnine.disable": true
}
Replace the enabled/disabled extensions based on which provider you want active.
code --list-extensions | grep -iE "copilot|codeium|tabnine|continue|amazon" in terminal.Why settings-level disable instead of the GUI toggle: the Extensions sidebar “Disable” button sometimes leaves event listeners registered until the next full restart. The settings flag prevents the provider from registering at startup.
Solution 2: Resolve Keybinding Conflicts
When Tab accepts the wrong suggestion or does nothing, the keybinding resolver is hitting a conflict.
Keyboard Shortcuts
$ Ctrl+Shift+P → "Open Keyboard Shortcuts (JSON)" // Shows all user keybinding overrides
Diagnose with the built-in conflict detector: Ctrl + K, Ctrl + S → type “Tab” in the search → look for entries with a ⚠️ conflict icon.
Add explicit when clauses to isolate each extension’s bindings in keybindings.json:
[
{
"key": "tab",
"command": "github.copilot.acceptSuggestion",
"when": "github.copilot.inlineSuggestionVisible && !codeium.inlineSuggestionVisible"
},
{
"key": "tab",
"command": "codeium.acceptSuggestion",
"when": "codeium.inlineSuggestionVisible && !github.copilot.inlineSuggestionVisible"
},
{
"key": "tab",
"command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible"
}
]
This ensures Tab routes to the correct handler based on which provider is actually showing a suggestion.
Alt+] / Alt+[ for one provider and Ctrl+Alt+] / Ctrl+Alt+[ for the other to cycle suggestions without collision.Solution 3: Use VS Code Profiles to Isolate Extensions
VS Code Profiles (stable since v1.75) let you maintain separate extension sets. Create one profile per AI tool:
# Create profiles from command line
code --profile "Copilot" --install-extension GitHub.copilot
code --profile "Codeium" --install-extension Codeium.codeium
Or via UI: Ctrl + Shift + P → “Profiles: Create Profile” → select only the extensions you want active.
Switch between profiles via the gear icon in the bottom-left Activity Bar or with:
Ctrl+Shift+P → "Profiles: Switch Profile"
This eliminates conflicts entirely because only one AI extension loads per profile. Trade-off: you lose the ability to compare suggestions side-by-side.
Profiles are the cleanest solution when you use different AI tools for different projects or languages.
Solution 4: Fix Extension Host Memory Crashes
If your extension host crashes with OOM errors, AI extensions are likely the cause. Each one buffers file context and maintains WebSocket/HTTP connections.
Check extension host memory usage:
Ctrl+Shift+P → "Developer: Show Running Extensions"
Sort by “Activation Time” and “Memory” columns. AI extensions typically show 200-800 MB each.
Mitigations:
{
"extensions.experimental.affinity": {
"GitHub.copilot": 1,
"Codeium.codeium": 2
}
}
The affinity setting runs extensions in separate extension host processes. This prevents one extension’s crash from killing others, but increases total memory usage. Only use this if you need both extensions active simultaneously.
For memory reduction without disabling extensions:
{
"github.copilot.advanced": {
"debounceDelay": 500
},
"codeium.enableSearch": false,
"tabnine.maxFileSize": 1024
}
Increasing debounce delay reduces API calls. Disabling non-essential sub-features (search, chat, indexing) reclaims memory.
extensions.experimental.affinity setting is experimental and may be removed or renamed in future VS Code versions.Solution 5: Disable AI Extensions per Workspace
For projects where you only want one specific AI tool (e.g., internal codebases that require Amazon Q, open-source work with Copilot):
Create .vscode/extensions.json in your project root:
{
"recommendations": ["GitHub.copilot"],
"unwantedRecommendations": ["Codeium.codeium", "TabNine.tabnine"]
}
Then in .vscode/settings.json:
{
"codeium.enableConfig": {
"*": false
}
}
This disables conflicting extensions at the workspace level. Commit .vscode/extensions.json to share the configuration with your team.
Solution 6: Reset Extension State When Nothing Else Works
Nuclear option for corrupted extension state causing persistent conflicts after uninstall/reinstall cycles:
# Close VS Code first
# Linux/macOS
rm -rf ~/.vscode/extensions/github.copilot-*
rm -rf ~/.config/Code/User/globalStorage/github.copilot
# Windows (PowerShell)
Remove-Item -Recurse "$env:USERPROFILE\.vscode\extensions\github.copilot-*"
Remove-Item -Recurse "$env:APPDATA\Code\User\globalStorage\github.copilot"
Then reinstall the extension from the marketplace. This clears cached tokens, stale LSP state, and corrupted completion caches.
Still Not Working?
If conflicts persist after trying these solutions:
- VS Code Issue Tracker — Search for open issues with your specific extension combination at
github.com/microsoft/vscode/issues - Extension-specific repos — File issues on the conflicting extension’s GitHub repository. Include output from “Developer: Show Running Extensions”
- VS Code Insiders — Some conflict resolutions ship to Insiders first. Test with
code-insidersif you’re on Stable - Extension Bisect — Ctrl + Shift + P → “Start Extension Bisect” systematically identifies which extension causes the failure
FAQ
Can I run GitHub Copilot and Codeium at the same time?
Why does Tab stop working when I have multiple AI extensions?
when clauses. VS Code’s keybinding resolver can’t determine which handler to call, so it falls through to the default Tab (insert character) behavior. Fix by adding explicit when conditions to your keybindings.json that check provider-specific context keys.Do AI extension conflicts cause VS Code to crash?
extensions.experimental.affinity setting to isolate high-risk extensions into separate processes.How do I check which AI extension is causing high CPU usage?
Will VS Code Profiles sync across devices?
Is there a way to automatically switch AI extensions based on the project?
.vscode/settings.json to disable specific extensions per project. Combined with VS Code Profiles associated with folders (Settings → Profile associations), you can auto-activate the correct AI tool when opening a project folder.Do AI extensions conflict with standard IntelliSense?
"editor.suggest.showInlineDetails": true to distinguish sources in the widget.