2026-04-03

WebStorm is my preferred IDE for working with JavaScript and TypeScript, and GitHub Copilot has become an essential part of my workflow. But just installing the plugin and using it on autopilot leaves a lot on the table. In this guide I’ll show you the configuration I use, with the shortcuts that save the most time and the options that keep Copilot from fighting with WebStorm’s native autocomplete.
To follow this tutorial, you’ll need:
If you’re still on an old version, update before continuing. Versions below 2024.3.6 have a known conflict between Copilot and the native Full Line Code Completion, and Tab ends up fighting between the two.
Cmd + , on Mac / Ctrl + Alt + S on Windows/Linux)GitHub Copilot in the searchIn some versions the GitHub Copilot Chat plugin comes separately. If that’s the case, install it too: it’s the one that delivers the chat window, inline chat, and Agent Mode, which are the most powerful parts of Copilot today.
After WebStorm restarts, you’ll see the Copilot icon in the bottom bar.
When the icon turns green, Copilot is active.
This is the step that makes the biggest difference and almost nobody mentions. WebStorm has a native, local full-line autocomplete that competes with Copilot for the same key (Tab). If you leave both enabled without adjusting anything, Tab sometimes accepts one, sometimes the other, and you lose confidence in the flow.
You have two good options.
This way Tab always accepts the Copilot suggestion, no doubt about it.
If you like Full Line because it’s instant and works offline, you can keep both:
Insert Inline Completion (this is the native WebStorm one)Cmd + Shift + ] (Mac) / Ctrl + Shift + ] (Windows/Linux)Apply completions to Editor (Copilot) on TabGo to Settings > Tools > GitHub Copilot > Completions and adjust:
| Option | Recommended value | Why |
|---|---|---|
| Show completions automatically | Enabled | Suggests as you type, no need to manually trigger |
| Automatically check for updates | Enabled | Keeps you out of old buggy versions |
| Enable Copilot | Enabled globally | Per-language toggles are below |
Further down, in the Languages section, you can enable/disable per language. My recommendation:
package-lock.json, yarn.lock, pnpm-lock.yaml): Copilot only gets in the way hereIf you’d rather edit the github-copilot.xml file directly, you can use wildcards. But the GUI handles 99% of cases.
Chat is where half the productivity lives. Open it with Ctrl + Shift + C or via the right sidebar (Copilot icon).
Inside the chat window you’ll see three modes:
To enable Agent Mode:
Custom instructions are a file Copilot reads before every response. You write your project’s rules there, the libraries it uses, the coding patterns, and Copilot actually starts following them.
.github/ folder (if it doesn’t exist)copilot-instructions.md file# Copilot Instructions
This project is a Hugo site with posts in Portuguese, English, and Spanish.
## Stack
- Hugo (static site generator)
- SCSS with Dart Sass
- Vanilla JavaScript (no frameworks)
- WebP-optimized images
## Coding standards
- 2-space indentation
- Single quotes for strings in JS
- kebab-case file names
Copilot will read this every time you open the chat or request a suggestion via Agent Mode.
If you want rules that apply to all projects:
Starting in 2026.2, Copilot also reads nested AGENTS.md and CLAUDE.md files in your project. If you’re already using Claude Code or Cursor, reuse the same file. Enable it in Settings > Tools > GitHub Copilot > Customizations > Enable nested AGENTS.md and CLAUDE.md.
| Action | Mac | Windows/Linux |
|---|---|---|
| Accept full suggestion | Tab | Tab |
| Dismiss suggestion | Esc | Esc |
| Accept line by line | Shift + Option + → | Shift + Alt + → |
| Next suggestion | Shift + Option + ] | Shift + Alt + ] |
| Previous suggestion | Shift + Option + [ | Shift + Alt + [ |
| Trigger suggestion manually | Shift + Option + \ | Shift + Alt + \ |
| Open suggestions panel (10 options) | Cmd + Shift + A > Open Copilot | Ctrl + Shift + A > Open Copilot |
Important for ABNT2 keyboard users: the official Copilot defaults are
Option + ],Option + [, andOption + \, but on Brazilian keyboards those combinations produce typographic characters («,», and others) and never reach Copilot. The fix is to addShiftto the combo (making itShift + Option + ...), which is what I used in the table above. On a US keyboard, you can use the defaults without the extraShift.
| Action | Mac | Windows/Linux |
|---|---|---|
| Open inline chat at cursor | Ctrl + Shift + I | Ctrl + Shift + G |
| Run prompt | Enter | Enter |
| Cancel | Esc | Esc |
Inline chat replaces 90% of Copy/Paste to ChatGPT. You select a block of code, hit Ctrl + Shift + I, type “convert this to strict TypeScript” and you’re done.
| Action | Mac | Windows/Linux |
|---|---|---|
| Open chat window | Ctrl + Shift + C | Ctrl + Shift + C |
| New conversation | Cmd + N inside chat | Ctrl + N inside chat |
| Focus input field | Cmd + L | Ctrl + L |
| Attach file to context | Drag from sidebar or #filename | Same |
It’s worth going into Settings > Keymap and searching for copilot. The plugin only exposes a handful of bindable actions (copilot.chat.show, copilot.chat.inline, copilot.openCopilot, copilot.applyInlays, copilot.cycleNextInlays, copilot.cyclePrevInlays, and copilot.requestCompletions), but they cover 100% of what can actually be sped up. The other commands (explain, fix, tests, doc) are slash commands you type inside the chat, not keybindings.
What I keep in my keymap:
| Plugin action | Custom shortcut |
|---|---|
copilot.chat.show (open chat window) | Cmd + Shift + K |
copilot.chat.inline (open inline chat at cursor) | Cmd + Shift + I |
copilot.openCopilot (Copilot tool window) | Ctrl + Option + \ |
If any shortcut is already in use, WebStorm warns you and you can choose whether to remove the old one. Cmd + Shift + K normally opens Push… in Git: I don’t use Push via keyboard, so I freed that up for Copilot, but if you do, pick another combo.
Once the chat is open, slash commands handle the rest:
/explain explains the selected code/fix tries to fix errors reported by TS or ESLint/tests generates unit tests/doc generates JSDoc documentation/simplify proposes a shorter versionWrite a clear comment above a function and Copilot generates the implementation. For example:
// Returns the list of posts published in the last 30 days,
// sorted by date descending, with a max of 10 items.
// Uses the internal API in services/posts.ts
function recentPosts(): Promise<Post[]> {
// Copilot fills in from here
}
The more specific the comment (including paths to relevant files), the better the result.
# to reference files in chatInside the chat, type #package.json or #services/posts.ts and Copilot loads the file into context. Saves you from describing the structure manually.
When you need to rename a function across 20 files, change the signature of a hook, or migrate from one library to another, open the chat in Agent Mode, describe the goal, and let it propose the changes. You review file by file before accepting.
Before opening a PR, select a method’s diff, hit Ctrl + Shift + I, and ask “review this code looking for edge cases and missing tests”. Catches a lot of silly stuff before it hits GitHub.
Inside inline chat or the normal chat, type:
/tests: generates unit tests for the selected code/doc: generates JSDoc documentation/fix: tries to fix errors reported by TS or ESLint/explain: explains the selected code/simplify: proposes a shorter versioncopilot-instructions.md, specify whether you use App Router or Pages Router@vue/typescript-plugin<style> blocks if you find it hallucinating CSS too much.astro files (usually needs to be manually turned on)Almost always Full Line Code Completion fighting. Go back to Step 3 and apply one of the two options.
Shift + Option + \ (Mac) / Shift + Alt + \ (Windows/Linux) on demandUpdate the plugin and restart. The newer versions switched the default model and quality has improved a lot.
The GitHub Copilot Chat plugin might not be installed. Go back to Step 1 and install the chat plugin separately.
After following the tutorial, check that:
.github/copilot-instructions.md file createdWith that locked in, you’ve got WebStorm running Copilot in the most productive way possible. The next step is just practicing. Within a week you’ll be writing comments that generate entire functions and using inline chat to refactor without leaving the keyboard.
And if you also write Go, have you seen my other guide? GitHub Copilot in GoLand: the best configuration to write Go faster.