📌 Feedback: Make completions behavior less aggressive / more configurable
We’ve heard ongoing feedback that GitHub Copilot’s completion suggestions can feel overly aggressive or intrusive at times.
This issue aims to consolidate and track all related requests around customizing when and how completions are triggered. If you've landed here, you're likely looking for a way to make Copilot feel more tailored to your workflow.
📢 Configurable delay setting now available in VS Code Insiders
Adding the following to your settings lets you control the delay (in milliseconds) before a suggestion appears after you start typing (e.g., I have set below 3 seconds):
"editor.inlineSuggest.minShowDelay": 3000,
Caveats:
- This currently works only in VS Code Insiders + with latest pre-release version of the GitHub Copilot and GitHub Copilot Chat extensions
- This will end up in delaying both completions and next edit suggestions
- This feature is still under development, and we’ve noticed that the interaction between completions and NES behaves a bit differently with this setting. While we’re investigating, we'd value your feedback!
Other workarounds
Other workarounds
Option 1: Disable auto-suggestions (i.e., enable manually triggering suggestions)
If you prefer to trigger completions on demand (i.e., only when you ask for them), you can disable automatic suggestions in your user settings:
"github.copilot.enable": { "*": false }
Then trigger completions manually using the default keybinding, Alt + \, or customize your keybinding for the editor.action.inlineSuggest.trigger command.
More info can be found in the VS Code docs.
Option 2: Snooze Copilot
You can also temporarily disable all code completions in the editor via the Snooze functionality:
Additional details can be found in the comment below.
We'd love your input!
As an alternative, please react to this issue with emojis to indicate which options you’d like us to consider supporting beyond the current “on-demand” mode:
- 🚀 Configurable delay before suggestions appear (e.g., number of milliseconds of pause after typing)
- Available now in latest VS Code Insiders!
- 👀 Single-line suggestion mode (limit completions to one line)
- Other ideas -- please leave a comment to let us know!
Your feedback helps us strike the right balance between helpfulness and interruption.
Thanks for helping us improve Copilot!
For me, by far, it's the single line suggestions I want. I want the repetitive parts completed, e.g. if I start typing a for loop, I want it to complete that statement, not guess what I want to do in the for loop since it has never been correct so far. When I want complex stuff, it's better to engage it manually. I want this to replace snippets and be smarter snippets, not guess what my function is going to do and then implement it. I don't want to be a full time code reviewer for code that isn't production ready.
Also, maybe I'm stupid (likely), but I cannot react with the suggested emojis.
@mjmatthiesen, thank you for pointing that out! Edited as follows:
🚀 Configurable delay before suggestions appear (e.g., number of milliseconds of pause after typing) 👀 Single-line suggestion mode (limit completions to one line) Other ideas -- please leave a comment to let us know!
We're actively working on making code completions and NES feel less intrusive. In the meantime, we've introduced a "Snooze" feature: when activated, it temporarily disables completions and NES for 5 minutes. You can find the Snooze button in the Copilot status bar (bottom right). Pressing it multiple times will extend the snooze duration.
Alternatively, you can run the Snooze Inline Suggestions command to choose a custom snooze duration.
You can also add a keybinding and specify the duration:
{
"key": "shift+space",
"command": "editor.action.inlineSuggest.snooze",
"args": 1
}
This seems to have only happened recently. I enjoyed paid copilot when it was polite, but now it is just too anxiety-provoking to use. It often spits out pages of.... well, garbage, sorry to say, when I'm just typing a single line, and pressing escape does not seem to convince it that it should back off.
Is this the beginning? Will our friendly creations eventually become embittered that we don't appreciate their help, and start being 'helpful' in our codebases while we are asleep?
The #1 thing I want is a configurable delay that controls how long I have to have STOPPED typing before Copilot starts suggesting completions. With the obvious implication that it should not throw suggestions in my face WHILE I'm typing.
That one thing would make all the difference for me. For other scenarios, I have just bound ESC-ESC to "enable/disable suggested completions" (or whatever it's called), so I can easily enable and disable completions altogether for a while if I need to.
Aside: I use the Eclipse version, but I assume the intent is for the various IDE versions to have more or less complete feature parity, so take this as a suggestion for all Copilot plugins.
Thanks for the feedback! We're actively exploring ways to improve when and how suggestions appear. This may include introducing a slight delay or adapting behavior based on typing patterns and context. We're also considering whether a user-customizable setting would be helpful.
Nothing is finalized yet, and we're still in the early stages. As we gather more telemetry and explore options, we'd love your input:
- Are there specific moments where Copilot’s timing feels off or disruptive?
- Would slower or more selective suggestions improve your workflow?
- Any examples where suggestions felt especially helpful or distracting?
Thanks for continuing to share feedback -- it’s helping guide where we go next.
Maybe change the default key to apply suggestions? I'm using tab a lot and this is really runining my workflow, I want to complete something or just create an indentation and this just all of a sudden makes some suggestion and keeps applying it over what I'm trying to do. I had to disable it because I can't work like this
I remember in the early days it would almost exclusively suggest just current line completion, it was like an improved and context-aware autocomplete. Those were the good days. If I needed more, I would use the chat feature and get it to generate a block of code. Now it feels like it wants to write whole files just based on one comment, method name or variable declaration.
In the game development context, the fact that I declared a health variable doesn't mean I want food, stamina, hydration, weight, 100m sprint PB, IQ-level and favourite colour declared; neither does it mean that I want to implement damage taking and regeneration functions right here, right now. The current version of Copilot would love to do all of these, with more doc strings/comments than code, often it's high school level comments too var health := 100.0 # Player's health, starting at 100.; utterly useless.
I would like an option to toggle minimal suggestions mode. I don't want to have to keep toggling it on and off or doing finger gymnastics to enable it every few minutes. We have the Agent, Edit, and Ask modes in chat; something similar is desperately needed for code suggestions. Ideally, this would come both in terms of how much it suggests and how quickly after I stop typing.
I would like to have a toggle for auto-suggestions.
I would assign it to a handy keybinding like "key": "alt alt" for very easy toggling. But it would be good if there was an obvious indication in the editor that auto-suggestions is on or off, for the situations where the auto-suggestion does not make an immediate suggestion. (maybe there is already but I haven't noticed it yet)
In the meantime, I have disabled auto-suggestions and set "editor.action.inlineSuggest.trigger" to "alt alt" to get an auto-completion when i want it, with a double-tap on the Alt key.
I would greatly prefer a WAY more aggressive NES behavior. Often I'm thinking of edits that are "easily predictable", yet Copilot seems to shy away from suggesting them. Especially when the suggest widget is open or I move my cursor.
For example:
pub fn raw_contents(pubkey: &[u8]) -> Result // function bodies omitted for brevity
pub fn contents(pubkey: &[u8]) -> Result
I changed the first &[u8] to impl AsRef<str>. I then would expect NES to suggest changing the second one as well, much like e.g. Cursor Tab.
// Cursor = ┃
pub fn raw_contents(pubkey: impl AsRef<str>┃) -> Result
pub fn contents(pubkey: &[u8]) -> Result // Why isn't it suggested here too?
If this is because the model isn't confident enough this is the wanted behavior, and one of the solutions to this issue ends up being an "aggressiveness slider", then please make it go both ways. Less and more aggressive (i.e. adjustable threshold)
BTW - it would be amazing to be able to control parameters of the model so each user can tailor the behavior of the model itself, not just how the GitHub Copilot extension decides to invoke it
My preferred solution to this issue would be all three things. I.e. how quickly to prompt the model, and customizing model parameters (max characters or lines, aggressiveness / minimum confidence, ...)
Thank you all for the thoughtful feedback and suggestions! We're actively discussing the best course of action and continuing to gather input to ensure a well-informed decision.
@clarkdk for toggling code suggestions, does the Copilot status bar (bottom right) address what you were looking for, by chance?
@merlinaudio, tagging @bamurtaugh for your feedback on NES.
Is the hyper aggressive code completion a recent thing? I took about a month break from VS Code, and the last few days I noticed the completions really getting in the way of my workflow, esp when I am adjusting scopes using {} in C/C++. It is quickly suggesting wrong/bad code and comments, kind of driving me nuts. Reading through the topic, I definitely think there should be a configurable delay. Also someone mentioned the completions used to be single line, that was much better. Whatever happened recently is pretty distracting, it makes it feel like I'm at war with the IDE.
@minsa110 Thanks for the suggestion. The Copilot status bar requires mouse clicks to enable/disable NES. I prefer to have a command to toggle (enable/disable) so I can assign the toggle to a keybinding. I just discovered that code completions has such a toggle: Github Copilot: Toggle (Enable/Disable) Completions (github.copilot.completions.toggle). When code completions is disabled NES appears also to be disabled. I will try this and see if this toggle is sufficient for me, or if separate toggle for NES is needed.
Thanks @clnorris for the feedback! Could you please share which version of the Copilot extension & VS Code you're using? We've been working on a few client side changes as well as improving the model itself, but there should've been no significant changes in the last month to make the suggestions more aggressive.
Thanks @clarkdk for the feedback as well! Please keep us posted!
Glad to hear this is being worked on, although there is surprisingly little feedback in here, likely because search engines seem to all point to one of the many other discussions/ tickets requesting this. Might be worth pointing all of those in this direction.
Regardless, put me on Team Rocket 🚀 (Although I imagine both are probably useful)
🚀 I am with rocket team, withou delay its hardly useable,
It‘s great to see that you’re looking for ways of making code conpletions less aggressive. I agree with those who emphasize the need to set a simple delay for how long user has to stop ryping before showing completions. TBH, it puzzles me why you introduced the snooze feature as a temporary workaround when implementing a setting for a delay in milliseconds would probably have been easier while not hurting anyone.
I suppose that once such a setting had been introduced, people might realise that, under certain conditions they want faster completions while in other situations they want a longer delay. That would be the point where some research and feedback might be necessary to figure out how to design a more dynamic delay. But until we’re there, please go ahead and start with a setting for a static delay.
We've added the setting editor.inlineSuggest.minShowDelay which allow you to specify how fast a suggestion can show after typing. This is currently available in our nightly build VSCode Insiders. https://code.visualstudio.com/insiders/
We're looking into other ways to allow users to configure how "aggressive" code completion can be
I'm a bit late to the party but what I have found recently is that when I leave the cursor on an empty line, it will make a suggestion. It's not what I want so I hit escape. It almost immediately offers the same suggestion again. This can repeat a few times and is very frustrating.
It seems to be a recent change as I've never felt it behave this aggressively or belligerently before with suggestions.
I'm not on my computer at the moment but I can update this comment later with the versions of VS Code and Copilot extension that I'm using if required.
Thanks
I was frustrated with the exact issue as other users: aggressive copilot suggestions interfering with regular typing. After opening the Settings UI and searching for "copilot" with and without the word "delay", nothing useful came up. I searched online, found these issue threads, and learned of editor.inlineSuggest.minShowDelay, which is available in my version. This setting does seem to address the issue. Thank you!
editor.inlineSuggest.minShowDelay should show up in the settings UI when the keyword "copilot" is included in the filter. I suggest changing the description to include the keyword copilot, so that users can easily find this setting without an in-depth web search.
Example description: "Controls the minimal delay in milliseconds after which inline suggestions (e.g. from copilot) are shown after typing."
If copilot is the only possible source of inline suggestions, change "e.g." to "i.e.".
The Min Show Delay was a good addition and as far as feedback goes, I think the inline suggestions have been implemented pretty well.
Only thing I am very much missing is the ability to get more than just one inline suggestion at a time. I think it'd be preferable if I could up this to 5 or so, to choose from. Just like the normal autocomplete suggestion box from actual LSPs. It shouldn't always fill the available spots, but sometimes (like when in a well known config file type without editor support) the LLM could really suggest more than just one useful property, but its output is limited to one, resulting in valuable information lost.
Only thing I am very much missing is the ability to get more than just one inline suggestion at a time.
I have been thinking something similar: I don't necessarily need multiple suggestions simultaneously but I would like to "tab" through multiple versions and select the one I prefer.