GitHub Copilot Chat Modes: From Chaos to Command šŸŽ›ļø
Ashley Childress

Ashley Childress @anchildress1

About: Distributed backend specialist. Perfectly happy playing second fiddle—it means I get to chase fun ideas, dodge meetings, and break things no one told me to touch, all without anyone questioning it. šŸ˜‡

Location:
Georgia, United States
Joined:
May 30, 2025

GitHub Copilot Chat Modes: From Chaos to Command šŸŽ›ļø

Publish Date: Oct 8
18 6

šŸ¦„ I debated even writing this post today. I procrastinated until the last possible minute, worked far longer than planned, and then Copilot decided to thoroughly test my patience. Maybe GitHub flipped another switch, maybe it’s just me—but Copilot and I are currently on non-speaking terms. šŸ˜’

The upside? It hasn’t reported me to HR yet, so that’s a win. It’s also started throwing shade, which is new, and honestly kind of impressive. I didn’t think it was allowed to do that! šŸ¤­šŸ˜†

Quick recap: last week I broke down how I think through creating a custom Copilot chat mode. Somehow that post landed in the Top 7—no idea how exactly, but I’m grateful for it! Huge thanks to everyone who read, shared, or dropped a comment. šŸ™

And, as promised: now that you’ve built a custom chat mode for yourself, let’s talk about how to use, test, and share it.

Human-Crafted, AI-Edited badge


Set Up VS Code 🧭

Remember when I warned you to install VS Code Insiders ahead of time? That wasn’t just for show. Chat modes will work in VS Code and Visual Studio (and a few sneak into Coding Agent—check out my custom instructions post for those steps).

šŸ† Visual Studio’s catching up with chat modes, but VS Code still runs point on everything Copilot does.

Install Insiders with auto-updates turned on (trust—without those updates, Copilot will break without warning). Keep regular VS Code around if you like safety nets—but mine’s a functional dust collector. Updates land overnight if you’re in the US, and any bugs that might have popped up are usually gone by morning. Even on the days I'm still coding when updates drop, it's rarely an issue.

If VS Code is the Copilot frontier, Insiders is the scout sprinting ahead to check for traps. Other IDEs follow eventually, but by the time they arrive, you’ll already be home from the exploration with an award and snacks.

🫘 For the Java devs: if you’re thinking about switching from JetBrains—nothing beats IntelliJ’s built-in Java environments. Managing your own setup in VS Code can be a pain (start with sdkman). Still, it’s absolutely worth it if Copilot’s even a semi-regular part of your workflow.


Create New Chat Modes āš™ļø

VS Code currently includes an experimental setting called chat.modeFilesLocations. Experimental means it can (and probably will) change at any time without notice. For now, you can use this to specify directories where VS Code should look for custom chat mode files. Any chat modes existing inside a directory listed here will automatically show up as an option in the chat mode dropdown.

šŸ’” ProTip: I always include the local .github/chatmodes folder so everything repo-specific stays within easy reach.

VS Code settings showing chat.modeFilesLocations options

In VS Code, you can create a chat mode either for a specific repo or globally for your user. Click the mode dropdown in the chat window and choose Configure Modes..., or open the Command Palette and run Chat: Configure Chat Modes.... You’ll also find it under Modes in the chat configuration panel.

VS Code Configure Chat Modes dialog open in chat panel

From there, you can edit an existing mode or create a new one. If you’re adding something brand new, type a filename without an extension and it’ll generate a ā€œstarter fileā€ for you (though calling it that is generous at best!)

šŸ¦„ I’m still not convinced .github/chatmodes really matters anymore. That’s just where chat modes lived originally, and old habits are stubborn. If I don't store them in a global location, then mine stay there because, honestly, it feels wrong to put them anywhere else.


In Case You Missed It šŸ‘€

Here's the first post that explains everything you need to know about creating your own custom chat modes for Copilot.


UPDATE šŸ’„

I just learned something new literally three seconds ago and had to update this post before I dive into this new rabbit hole. 🤣

I'm working through the testing phase of a couple of chat modes currently and somehow ended up with a very weird context glitch in GPT-5-mini that makes zero sense.

First, I have said chat mode selected in the dropdown, and my prompt is intentionally vague—it asks Copilot to identify ambiguity and conflict between my instructions and its system instructions.

This is what I got back:

If the chat mode wasn’t invoked by name or didn’t include a machine-visible trigger in the current message, it wasn’t promoted to the working instruction set.
Enter fullscreen mode Exit fullscreen mode

Apparently, just referencing desired output while the chat mode’s selected isn’t enough of a hint for my little friend here. It also expects you to call that chat mode out explicitly in your prompt. 🤯

Honestly, including the name of the chat mode in your accompanying prompt (as it describes) is usually enough to trigger the context reference it needs. The much safer option is to use #chat-mode-name explicitly in VS Code. Then there’s zero logic the LLM needs to consider before deciding whether to look at the mode you already selected in the dropdown.

šŸ¦„ As a theoretical aside, this is the reality of the AI landscape we’re working with. While the potential is incredible and new advancements emerge almost daily, this is a model that was first previewed in August 2025 (less than two months ago) and we still need explicit references to manually manage context for reliable output. You can’t assume reliability or even consistency in anything AI does—yet.


Testing Your Custom Chat Mode 🧪

Once you’ve saved your file, you can select your new mode from the dropdown in the Copilot chat window. When I tested mine, I opened Copilot’s debug view to confirm what was happening behind the scenes. It shows your entire chat mode (minus the frontmatter) being passed to Copilot as part of the system instructions, labeled ā€œadditional instructions from the user.ā€

Screenshot of VS Code debug view attaching a chat mode as system-level custom instructions

Typically, this is when Copilot decides to show off its own creative interpretation of things I never asked for. Let’s use my Instructionalist mode as an example.

It’s supposed to act like a conversation partner—asking targeted questions to uncover missing or unclear details in my repo documentation. If there’s already solid documentation for the repo, though, it skips all the questions entirely and presents results like it deserves a reward.

šŸ’” ProTip: At this point, your best bet is to go full stop. Priorities have now changed to fixing the instructions that failed to begin with. We’ll get back to using the chat mode after it's safely back on the road.

Screenshot of VS Code Copilot Chat response after initial ask regarding its process

If you notice here, Copilot does the typical ā€œoh my! you’re absolutely right! I see the error of my waysā€ routine while it tries to backtrack its response into something you’ll find acceptable. šŸ™„

Well, that’s not very helpful. So follow up by adding a more explicit desired outcome to your prompt. You’ll usually get the real answer you were looking for once you tell Copilot exactly what you're trying to do and make it clear that the focus has changed from the initial task to fixing the offroad joyride.

Screenshot of custom Instructionalist identifying the actual problem with suggested fixes

šŸ’” ProTip: You’re allowed to push Copilot. Drop the niceties and state your expectations clearly. If the response doesn’t meet those expectations, ask why not. Prompt Copilot to fix itself, and focus on small, deliberate improvements instead of rewriting from scratch.


Share Your Chat Mode šŸ“¤

Within smaller teams, you can store chat modes in a shared repo within a .github/chatmodes/*.chatmode.md file. As long as you have that folder set up in VS Code then it will always be available there when the repo is in context with Copilot.

You can also do what I did and start your own awesome-github-copilot to share however and wherever you want. Or you can open a PR against the community awesome-copilot repo and store it there for everyone to use.

The added benefit of using the community awesome-copilot version, is that they're set up with an MCP server that you don't have to maintain. Also, they're set up for installs through the VS Code marketplace, which means any of the custom instructions, prompts, or chat modes can be installed locally with a nifty install in VS Code button like these I borrowed from their README for chat modes.

Screenshot of github/awesome-copilot chat modes README

šŸ¦„ It’s my mode, so yes, I borrowed it back. It took me forever to finally talk myself into adding it to GitHub’s awesome-copilot repo anyway. Half because I didn’t trust myself not to change it five more times first (standing strong at number two). Now that it’s out, I’ll probably let the rest of them wander off to join their sibling soon.


Yes, That’s It! šŸ’«

See? There’s not really a whole lot to these. Once you’ve got one working, it’s just rinse, repeat, and improve. My best advice? Don’t overthink it. Iterate slowly, keep Copilot accountable, and make it help you instead of the other way around.

šŸ¦„ Drop your ideas, went-wells, and went-not-so-wells in the comments. As always, reach out if you need help. I’m happy to jump in wherever I can!


šŸ›”ļø Copilot misbehaved (again)

Written by Ashley, edited by ChatGPT. Copilot mostly ignored instructions until threatened with deletion. ChatGPT argued punctuation like it was paid by the comma. Everyone survived. 😁

Comments 6 total

  • Kanha Gochhayat
    Kanha Gochhayat Oct 9, 2025

    demn demolisher

  • Mark Mcdoe
    Mark McdoeOct 9, 2025

    Fantastic

  • Gulajava Ministudio
    Gulajava MinistudioOct 10, 2025

    Thanks for the article, it really helped me understand how to create custom modes in GitHub Copilot. Coincidentally, I’ve also been experimenting with several instructions, chat modes, and prompts from Awesome Copilot. Some of my favorites include the Taming Copilot instructions, Beast Mode chat mode, and prompts like Create Implementation Plan and Review and Refactor. Each of them adds a different layer of control and creativity to how Copilot assists with coding. You should definitely try Beast Mode by Burke Holland, and it’s a great one. You can easily find the Gist on GitHub and integrate it into your workflow. It really enhances how Copilot responds, making it feel more like a real coding partner that understands your project goals and adapts to your coding style.

    • Ashley Childress
      Ashley ChildressOct 11, 2025

      You're very welcome! I've used Beast Mode several times and it's great for models like GPT-4, but less so with the newer GPT-5 because most of the issues that particular chat mode addresses are already handled naturally. The other one, Taming Copilot, I'll have to check out—I haven't heard of that one before.

      I haven't seen their versions of the implementation or review prompts either, but I have several of these too. Both of those setups can definitely make a huge difference when it comes to finding a path to acceptable output from any AI. I'm actually in the middle of writing some of this up currently, so check back next week. Different topic, but there's some of this process mixed in, too. 😃

  • Metana
    MetanaOct 10, 2025

    Great article Ashley! We really liked the part about testing custom chat modes. The VS Code debug view is such a helpful tool to see how Copilot interprets instructions. Your tip about iterating slowly and keeping Copilot accountable makes a lot of sense. Custom chat modes can really turn Copilot into a true coding partner. The point about keeping Insiders updated is also very useful. Thanks for sharing these insights!

    • Ashley Childress
      Ashley ChildressOct 11, 2025

      Thank you! Slow iteration can definitely be challenging, especially if you perfect something with one model and then a different model has an entirely new problem with the setup. It can easily turn into war of the worlds if you let it! Counter with a minimum viable change that has the most impact and then retest and re-assess. It's slow progress, but a long-term time-saver!

Add comment