extension_host: Load granted extension capabilities from settings (#39472)
This PR adds the ability to control the capabilities granted to extensions by the extension host via the new `granted_extension_capabilities` setting. This setting is a list of the capabilities granted to any extension running in Zed. The currently available capabilities are: - `process:exec` - Grants extensions the ability to invoke commands using [`zed_extension_api::process::Command`](https://docs.rs/zed_extension_api/latest/zed_extension_api/process/struct.Command.html) - `download_file` - Grants extensions the ability to download files using [`zed_extension_api::download_file`](https://docs.rs/zed_extension_api/latest/zed_extension_api/fn.download_file.html) - `npm:install` - Grants extensions the ability to install npm packages using [`zed_extension_api::npm_install_package`](https://docs.rs/zed_extension_api/latest/zed_extension_api/fn.npm_install_package.html) Each of these capabilities has parameters that can be used to customize the permissions. For instance, to only allow downloads from GitHub, the `download_file` capability can specify an allowed `host`: ```json [ { "kind": "download_file", "host": "github.com", "path": ["**"] } ] ``` The same capability can also be granted multiple times with different parameters to build up an allowlist: ```json [ { "kind": "download_file", "host": "github.com", "path": ["**"] }, { "kind": "download_file", "host": "gitlab.com", "path": ["**"] } ] ``` When an extension is not granted a capability, the associated extension APIs protected by that capability will fail. For instance, trying to use `zed_extension_api::download_file` when the `download_file` capability is not granted will result in an error that will be surfaced by the extension: ``` Language server phpactor: from extension "PHP" version 0.4.3: failed to download file: capability for download_file https://github.com/phpactor/phpactor/releases/download/2025.07.25.0/phpactor.phar is not granted by the extension host ``` Release Notes: - Added a `granted_extension_capabilities` setting to control the capabilities granted to extensions.
This commit is contained in:
@@ -1562,6 +1562,14 @@
|
||||
"auto_install_extensions": {
|
||||
"html": true
|
||||
},
|
||||
// The capabilities granted to extensions.
|
||||
//
|
||||
// This list can be customized to restrict what extensions are able to do.
|
||||
"granted_extension_capabilities": [
|
||||
{ "kind": "process:exec", "command": "*", "args": ["**"] },
|
||||
{ "kind": "download_file", "host": "*", "path": ["**"] },
|
||||
{ "kind": "npm:install", "package": "*" }
|
||||
],
|
||||
// Controls how completions are processed for this language.
|
||||
"completions": {
|
||||
// Controls how words are completed.
|
||||
|
||||
Reference in New Issue
Block a user