Continue.dev: Codestral in VS Code and JetBrains
On this page
Continue.dev: The Open-Source Extension for IDEs
Everything we’ve covered so far has happened in a terminal or a script. But developers spend most of their day inside their editor, and that’s where Codestral needs to live to make a real difference in your daily workflow. Continue.dev is the most widely used extension for this purpose. Available for VS Code and JetBrains IDEs (IntelliJ, PyCharm, WebStorm, and others), it transforms your editor into an AI-augmented development environment.
Its integration with Codestral leverages the two endpoints separately: FIM powers inline autocomplete, while the chat endpoint drives conversations in the side panel. This ensures each model capability lands exactly where it performs best.
Installation
In VS Code, it takes five steps.
- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for “Continue”
- Install the Continue - Codestral, Claude, and more extension
- Restart VS Code
On the JetBrains side—IntelliJ, PyCharm, or WebStorm—the path is nearly identical, differing only in location: find the plugin via Settings > Plugins, again under the name “Continue.” The IDE will require a restart once installation completes.
Configuring with Codestral
The installed extension doesn’t yet know which model to call. All configuration lives in a single file, ~/.continue/config.json, which you can version control or share with your team.
{
"models": [
{
"title": "Codestral",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "YOUR_MISTRAL_KEY"
}
],
"tabAutocompleteModel": {
"title": "Codestral FIM",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "YOUR_MISTRAL_KEY"
}
}
This file declares two distinct entries you shouldn’t confuse. models defines the chat model—the one in the side panel where you ask questions, request explanations, or generate code. tabAutocompleteModel defines the model for inline suggestions, the grayed-out text that appears as you type. This is where Codestral’s FIM shines. The two don’t have to be identical, but starting with Codestral on both sides is the simplest setup to evaluate.
Three Ways to Use It Daily
Tab autocomplete is by far the most used feature. As you type, Continue sends context to Codestral via FIM and displays a grayed-out suggestion that you accept by pressing Tab. The difference from standard completion becomes clear in cases like this: the model doesn’t just guess from the signature; it also sees what comes after the cursor.
# You type:
def calculate_price_vat(price_excl_vat, vat_rate=0.20):
# Continue automatically suggests:
# return price_excl_vat * (1 + vat_rate)
The side panel, opened with Ctrl+L (Cmd+L on Mac), handles longer interactions. Select an obscure function and ask “Explain this code”; request a unit test for the function you just wrote; or ask for a refactor to the Strategy pattern for a class that’s grown too large. Continue also exposes contextual actions on any code selection: Explain for a detailed breakdown, Refactor for a restructuring proposal, Fix to correct a bug, and Document to generate a docstring.
Finally, inline edit is the most efficient mode for targeted changes. Select the code, press Ctrl+I (or Cmd+I), and describe the desired change. Codestral returns a diff that you can accept or reject without ever leaving the file or copying and pasting anything.
Advanced Configuration
Once you’re up and running, two settings deserve your attention. The first concerns the amount of context sent to the model and the responsiveness of autocomplete, both controlled by tabAutocompleteOptions.
{
"tabAutocompleteModel": {
"title": "Codestral FIM",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "YOUR_MISTRAL_KEY"
},
"tabAutocompleteOptions": {
"maxPromptTokens": 2048,
"debounceDelay": 300,
"multilineCompletions": "always"
}
}
maxPromptTokens limits the context sent to the model: less context means faster suggestions but less awareness of the rest of the file. debounceDelay sets the delay in milliseconds before triggering autocomplete. As for multilineCompletions, it accepts "always", "never", or "auto" depending on whether you want completions spanning multiple lines always, never, or only when appropriate.
Tune these three values by feel: if suggestions arrive too late, lower the debounceDelay; if they interrupt every keystroke, raise it.
The second setting matters for teams whose code must never leave their premises. If you host Codestral locally—the topic of Lesson 13—simply switch the provider to openai and point apiBase to your server; the key no longer matters.
{
"tabAutocompleteModel": {
"title": "Codestral Local",
"provider": "openai",
"model": "codestral-latest",
"apiBase": "http://localhost:8080/v1",
"apiKey": "dummy"
}
}
Essential Keyboard Shortcuts
| Action | VS Code | JetBrains |
|---|---|---|
| Accept suggestion | Tab | Tab |
| Reject suggestion | Escape | Escape |
| Open chat | Ctrl+L | Ctrl+L |
| Inline edit | Ctrl+I | Ctrl+I |
| Add context | Ctrl+Shift+L | Ctrl+Shift+L |
Spend your first day mastering these five shortcuts rather than tweaking configuration options. Muscle memory, not the JSON file, determines whether you’ll adopt the tool or uninstall it.
Key Takeaways
- Continue.dev is the reference extension for integrating Codestral into VS Code and JetBrains
- Tab autocomplete uses Codestral’s FIM for contextual suggestions
- The side chat enables full conversations with the model
- Configuration happens in
~/.continue/config.json - Continue supports both the Mistral API and local deployments