# extension_host: Load granted extension capabilities from settings \(\#39472\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/3bf71c690f53554d4bb44291b4875db40ee5e967)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 3bf71c690f53554d4bb44291b4875db40ee5e967

Requested commit: 3bf71c690f53554d4bb44291b4875db40ee5e967

Commit: 3bf71c690f53554d4bb44291b4875db40ee5e967

Tree: c0d804f7efeca08926636cca0381955cf7f274fe

Author: Marshall Bowers

Committer: GitHub

## Message

````
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.
````

## Parents

- [456ba32ea72148900c2f928f6b3606a7e60474ec](https://git.cafe/gitcafe/zed/commit/456ba32ea72148900c2f928f6b3606a7e60474ec?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/3bf71c690f53554d4bb44291b4875db40ee5e967?format=markdown)
