GPT-4o Copilot March flight is ready for takeoff

Today, we released an upgrade to the GPT-4o Copilot preview model for code completion.

What’s changing

The GPT-4o Copilot model released last month has been upgraded through reinforcement learning to deliver even more useful code completions.

Availability

This upgraded model is available today in public preview under the same gpt-4o-copilot name, with general availability expected in mid-April 2025.

Getting ready

To get started in Visual Studio Code or JetBrains, follow the instructions for your preferred IDE.

If you’re a Copilot Business or Enterprise user, your administrator first needs to enable this model for your organization by opting in to Editor preview features in the Copilot policy settings on github.com.

Personal instructions in github.com

Personal instructions are now generally available for Copilot Chat on github.com! This means you can provide Copilot with important details about your preferences, such as your preferred language, response style, or even code standards.

To get started, open up Copilot Chat, click ..., and select Personal instructions. That’s it! Copilot will now incorporate your preferences for all chats in github.com.

💡 Looking for ideas? Here are some examples to kick things off:

  • Frameworks: “Use Vue 3 with the composition API.”
  • Language: “Always respond in Portuguese.”
  • Response preferences: “Each message should communicate a singular idea. That idea should be limited to ONE codeblock or paragraph.”
  • Code style and best practices: “Optimize code for readability and performance. Utilize SOLID principles.”
See more

Copilot features can go through different early access stages, which are typically enabled and configured through settings. The possible stages are as follows:

  • Experimental: This feature is still in development and not yet ready for general use.
  • Preview: This feature is still under refinement, but is ready to use. You’re welcome to provide feedback!
  • Stable: This feature is ready for general use.

Copilot Edits

Experimental agent mode improvements

Last month, we introduced agent mode for Copilot Edits in VS Code Insiders. In agent mode, Copilot can automatically search your workspace for relevant context, edit files, check them for errors, and run terminal commands (with your permission) to complete a task end-to-end.

Agent mode is available today in VS Code Insiders, and we just started rolling it out gradually in VS Code Stable. Once you have agent mode enabled, you’ll see a mode dropdown in the Copilot Edits view — simply select Agent.

We made several improvements to the UX of tool usages this month:

  • You can keep track of which commands were run since terminal commands are now shown inline.
  • You can edit the suggested terminal command in the chat response before running it.
  • You can confirm a terminal command with the Ctrl + Enter shortcut.

Agent mode autonomously searches your codebase for relevant context. Expand the message to see the results of which searches were done.

Screenshot that shows the expandable list of search results in Copilot Edits.

We’ve also made various improvements to the prompt and behavior of agent mode:

  • The undo and redo actions in chat now undo or redo the last file edit made in a chat response. This is useful for agent mode, as you can now undo certain steps the model took without rolling back the entire chat response.
  • Agent mode can now run your build tasks automatically or when instructed to do so. You can disable this functionality by using the VS Code setting github.copilot.chat.agent.runTasks if the model runs tasks when it shouldn’t.

Learn more about Copilot Edits agent mode or read the agent mode announcement blog post.

If you are a Copilot Business or Enterprise user, an administrator of your organization must opt in to “Editor Preview Features” for agent mode to be available.

Notebook support in Copilot Edits in preview

You can now use Copilot to edit notebook files with the same intuitive experience as editing code files. Create new notebooks from scratch, modify content across multiple cells, insert and delete cells, and change cell types. This preview feature provides a seamless workflow when working with data science or documentation notebooks.

We recommend using VS Code Insiders and the pre-release version of GitHub Copilot Chat to get the best notebook editing experience with Copilot.

Refined editor integration

We have polished the integration of Copilot Edits with code and notebook editors:

  • The viewport remains in place, making it easier to focus on what changes while changes are being applied.
  • The edit review actions are now “Keep” and “Undo” to better reflect what’s happening. Copilot Edits applies and saves these changes as users keep or undo them.
  • The next file is automatically revealed after you keep or undo changes to a file.

Refreshed UI

Files that are attached and not yet sent are now rendered as regular chat attachments. Only files that have been modified with AI are added to the changed files list.

You can use the VS Code setting chat.renderRelatedFiles to enable getting suggestions for related files. Related file suggestions are rendered below the chat attachments.

Screenshot that shows the updated Copilot Edits attachments and changed files user experience.

Removed Copilot Edits limits

We removed the limit on the number of files you can attach to your Copilot Edits prompt and the client-side rate limit.

Note that service-side usage rate limits still apply.

Custom instructions generally available

Custom instructions enable you to tailor GitHub Copilot to provide chat responses and code suggestions to the way you and your team work. Describe your specific requirements in a .github/copilot-instructions.md file in your workspace and enable them with the VS Code setting github.copilot.chat.codeGeneration.useInstructionFiles.

Custom instructions are generally available with .github/copilot-instructions.md. Make sure that the github.copilot.chat.codeGeneration.useInstructionFiles setting is enabled to have Copilot use these instructions when generating responses.

Learn more about custom instructions in Copilot.

Smoother authentication flows in chat

If you host your source code in a GitHub repository, you can leverage several features, including advanced code searching, the @github chat participant, and more!

However, for private GitHub repositories, VS Code needs to have permission to interact with your repositories on GitHub. For a while, this was presented with our usual VS Code authentication flow, where a modal dialog showed up when you invoked certain functionality (for example, asking @workspace or @github a question, or using the #codebase tool).

To make this experience smoother, we’ve introduced this confirmation in chat:

Screenshot that shows the authentication confirmation dialog in Chat, showing the three options to continue.

Not only is it not as jarring as a modal dialog, but it also has new functionality:

  1. Grant: you’re taken through the regular authentication flow like before (via the modal).
  2. Not Now: VS Code remembers your choice and won’t bother you again until your next VS Code window session. The only exception to this is if the feature needs this additional permission to function, like @github.
  3. Never Ask Again: VS Code remembers your choice and records it in the VS Code setting github.copilot.advanced.authPermissions. Any feature that needs this additional permission will fail.

It’s important to note that this confirmation does not confirm or deny Copilot (the service) access to your repositories. This is only how VS Code’s Copilot experience authenticates. To configure what Copilot can access, please read the docs on content exclusion.

More advanced codebase search in Copilot Chat

When you add #codebase to your Copilot Chat query, Copilot helps you find relevant code in your workspace for your chat prompt. #codebase can now run tools like text search and file search to pull in additional context from your workspace.

Set the github.copilot.chat.codesearch.enabled VS Code setting to enable this behavior. The full list of tools is:

  • Embeddings-based semantic search
  • Text search
  • File search
  • Git modified files
  • Project structure
  • Read file
  • Read directory
  • Workspace symbol search

Attach problems as chat context

To help with fixing code or other issues in your workspace, you can now attach problems from the Problems panel to your chat as context for your prompt.

Either drag an item from the Problems panel onto the Chat view, type #problems in your prompt, or select the paperclip 📎 button. You can attach specific problems, all problems in a file, or all files in your codebase.

Attach folders as context

Previously, you could attach folders as context by using drag and drop from the Explorer view. Now, you can also attach a folder by selecting the paperclip 📎 icon or by typing #folder: followed by the folder name in your chat prompt.

Collapsed mode for Next Edit Suggestions in preview

We’ve added a collapsed mode for NES. When you enable this mode, only the NES suggestion indicator is shown in the left editor margin. The code suggestion itself is revealed only when you navigate to it by pressing Tab. Consecutive suggestions are shown immediately until a suggestion is not accepted.

The collapsed mode is disabled by default and can be enabled by configuring editor.inlineSuggest.edits.showCollapsed:true, or you can toggle it in the NES gutter indicator menu.

Screenshot that shows the Next Edit Suggestions context menu in the editor left margin, highlighting the Show Collapsed option.

Change completions model

You can now change the model providing code completions by using the Change Completions Model command in the Command Palette or the Configure Code Completions item in the Copilot menu in the title bar.

If you’re a Copilot Business or Enterprise user, your Administrator needs to enable certain models for your organization by opting in to Editor Preview Features in the Copilot policy settings on github.com.

Model availability

This release, we added more models to choose from when using Copilot. The following models are now available in the model picker in Visual Studio Code and Copilot Chat on github.com:

  • GPT 4.5 (Preview): OpenAI’s latest model, GPT-4.5, is now available in GitHub Copilot Chat to Copilot Enterprise users. GPT-4.5 is a large language model designed with advanced capabilities in intuition, writing style, and broad knowledge. Learn more about the GPT-4.5 model availability in the GitHub blog post.
  • Claude 3.7 Sonnet: Claude 3.7 Sonnet is now in preview for all customers on paid Copilot plans. This new Sonnet model supports both thinking and non-thinking modes in Copilot. In initial testing, we’ve seen particularly strong improvements in agentic scenarios. Learn more about the Claude 3.7 Sonnet model availability in the GitHub blog post.

Copilot Vision in preview

We’re quickly rolling out end-to-end Copilot Vision support in this version of Copilot Chat. This lets you attach images and interact with images in chat prompts. For example, if you encounter an error while debugging, attach a screenshot of VS Code, and ask Copilot to help you resolve the issue. You could also use it to attach a UI mockup and let Copilot provide some HTML and CSS to implement the mockup.

Animation that shows an attached image in a Copilot Chat prompt. Hovering over the image shows a preview of it.

You can attach images in multiple ways:

  • Drag and drop images from your OS or from the Explorer view
  • Paste an image from your clipboard
  • Attach a screenshot of the VS Code window (select the paperclip 📎 button > Screenshot Window)

A warning is shown if the selected model currently does not have the capability to handle the file type. GPT 4o is the only model currently supporting images. You can provide JPEG/JPG, PNG, GIF, and WEBP image types. Claude 3.5 Sonnet and Gemini 2.0 Flash will soon support images as well.

Experimental Copilot status overview

We are experimenting with a new centralized Copilot status overview that provides a quick overview of your Copilot status and key editor settings. You can enable the Copilot status overview with the VS Code setting chat.experimental.statusIndicator.enabled. It includes the following changes:

  • Quota information if you are a Copilot Free user
  • Editor related settings such as Code Completions
  • Useful keyboard shortcuts to use other Copilot features

This Copilot status overview is accessible via the Copilot icon in the Status Bar.

Screenshot that shows the Copilot status overview in the Status Bar.

Experimental TypeScript context for inline completions

We are experimenting with enhanced context for inline completions and /fix commands for TypeScript files. The experiment is currently scoped to Insider releases and can be enabled with the chat.languageContext.typescript.enabled setting.

Custom instructions for pull request title and description

You can provide custom instructions for generating pull request title and description with the setting github.copilot.chat.pullRequestDescriptionGeneration.instructions. You can point the setting to a file in your workspace, or you can provide instructions inline in your settings. Get more details about customizing Copilot in VS Code.

The following sample shows how to provide a custom instruction inline in settings.

{
 "github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
   {
     "text": "Prefix every PR title with an emoji."
   }
 ]
}

You need to have the GitHub Pull Requests extension installed to generate a title and description.

Accessibility

Copilot Edits accessibility

We made Copilot Edits more accessible.

  • Files with modifications and changed regions (insertions, modifications, and deletions) have audio signals.
  • The accessible diff viewer is now available for modified files. Just like in diff editors, select F7 to enable it.

activeEditorState window title variable

We have a new window.title variable, activeEditorState, to indicate editor information such as modified state, the number of problems, and when a file has pending Copilot Edits to screen reader users. When in Screen Reader Optimized mode, this is appended by default and can be disabled with accessibility.windowTitleOptimized:false.

See more