Add setting to disable automatic AI terminal profile grouping in the terminal dropdown
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
### Problem
The terminal panel dropdown automatically groups terminal profiles whose **name** contains `claude` or `copilot` (case-insensitive) into a separate "AI" section at the top, split off from the rest by a divider. This is done solely based on the profile name, with no way to opt out.
The logic is hardcoded in `src/vs/workbench/contrib/terminal/browser/terminalMenus.ts`:
```js
function isAiProfileName(name: string): boolean {
const lowerCaseName = name.toLowerCase();
return lowerCaseName.includes('copilot') || lowerCaseName.includes('claude');
}
```
and fed by `getTerminalActionBarArgs()` → `splitProfiles()` / `splitContributedProfiles()`.
Users who define custom terminal profiles named after their AI coding agents (e.g. `Claude Code`) get them automatically pulled into this AI group and separated from structurally identical profiles — with no setting to disable it. The only workaround is to rename the profile, which changes the display name the user actually wants.
### Steps to reproduce
1. In `settings.json`, add a terminal profile whose name contains "claude" or "copilot", e.g.:
```json
"terminal.integrated.profiles.windows": {
"Claude Code": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"args": ["--init-file", "C:/leeyi/config/vscode-cc.sh"]
},
"PowerShell": { "source": "PowerShell" }
}
```
2. Open the terminal panel and click the `+` dropdown (the terminal "Launch Profile" dropdown).
3. Observe the `Claude Code` profile is placed at the top in its own group, separated from other profiles (which are structurally identical) by a divider.
### Expected
Structurally-identical custom profiles should stay in the main profile group, or at minimum the user should be able to opt out of the AI grouping.
### Suggested solution
Make the AI-profile grouping configurable. Options:
- A global setting, e.g. `terminal.integrated.profiles.aiGrouping` = `"auto" | "always" | "never"` (default `"auto"`), where `"never"` disables the name-based grouping.
- Or a per-profile flag in the profile schema, e.g. `"aiGroup": false`.
### Notes
The name-string heuristic is fragile — profiles named `my-claude-shell`, `claude-code-custom`, etc. would also be grouped unexpectedly even if they are not AI agents. `isAiContributedProfile()` additionally special-cases the `github.copilot-chat` and `anthropic.claude-code` extension ids.
Contributor guide
Assessment
This issue has not been assessed yet.