Describe the feature or problem you'd like to solve
Add support for configuring arbitrary Language Server Protocol (LSP) configuration payloads in Copilot CLI.
Proposed solution
Currently, Copilot CLI can launch LSP servers, but there is no way to control what is sent through the following LSP methods:
workspace/didChangeConfiguration
workspace/configuration
This makes many language servers partially unusable because critical settings cannot be provided to the server.
Problem
Many LSP servers rely heavily on runtime configuration delivered through LSP configuration requests instead of command-line arguments or environment variables.
For example, intelephense requires configuration for:
- excluded file patterns
- storage/indexing behavior
- diagnostics
- stubs
- file size limits
Without support for configuration payloads:
- large monorepos become slow or unusable
- excluded/vendor/generated files cannot be filtered
- indexing behavior cannot be tuned
- workspace-specific settings cannot be applied
At the moment, Copilot CLI appears to start the server successfully but provides no mechanism for forwarding user-defined configuration objects to the LSP server. The option initializationOptions does not solve this problem either because many LSP servers - including Intelephense - expect runtime settings to be delivered specifically through the standard LSP configuration flow (workspace/didChangeConfiguration and workspace/configuration).
Proposed Solution
Allow arbitrary configuration blocks to be defined per language server and forwarded via:
workspace/didChangeConfiguration
- responses to
workspace/configuration
Example configuration:
{
"php": {
"command": "intelephense",
"args": [
"--stdio"
],
"fileExtensions": {
".php": "php"
},
"configuration": {
"intelephense": {
"files": {
"exclude": [
"**/vendor/**",
"**/var/cache/**",
"**/node_modules/**"
]
},
"environment": {
"phpVersion": "8.5"
},
"diagnostics": {
"undefinedTypes": false
}
}
}
}
}
Expected Behavior
Copilot CLI should:
- Send the provided configuration object through
workspace/didChangeConfiguration
- Respond to
workspace/configuration requests using the configured values
- Support arbitrary nested JSON structures
Example prompts or workflows
No response
Additional context
No response
Describe the feature or problem you'd like to solve
Add support for configuring arbitrary Language Server Protocol (LSP) configuration payloads in Copilot CLI.
Proposed solution
Currently, Copilot CLI can launch LSP servers, but there is no way to control what is sent through the following LSP methods:
workspace/didChangeConfigurationworkspace/configurationThis makes many language servers partially unusable because critical settings cannot be provided to the server.
Problem
Many LSP servers rely heavily on runtime configuration delivered through LSP configuration requests instead of command-line arguments or environment variables.
For example,
intelephenserequires configuration for:Without support for configuration payloads:
At the moment, Copilot CLI appears to start the server successfully but provides no mechanism for forwarding user-defined configuration objects to the LSP server. The option
initializationOptionsdoes not solve this problem either because many LSP servers - including Intelephense - expect runtime settings to be delivered specifically through the standard LSP configuration flow (workspace/didChangeConfigurationandworkspace/configuration).Proposed Solution
Allow arbitrary configuration blocks to be defined per language server and forwarded via:
workspace/didChangeConfigurationworkspace/configurationExample configuration:
{ "php": { "command": "intelephense", "args": [ "--stdio" ], "fileExtensions": { ".php": "php" }, "configuration": { "intelephense": { "files": { "exclude": [ "**/vendor/**", "**/var/cache/**", "**/node_modules/**" ] }, "environment": { "phpVersion": "8.5" }, "diagnostics": { "undefinedTypes": false } } } } }Expected Behavior
Copilot CLI should:
workspace/didChangeConfigurationworkspace/configurationrequests using the configured valuesExample prompts or workflows
No response
Additional context
No response