Permissions
Permissions are declared in the manifest and displayed before installation. An update that adds a permission needs fresh confirmation.
Declare only what you use
{
"permissions": ["network", "worktree-observation"],
"contributes": {
"worktreeInsights": [{
"id": "com.terminay.gitea/gitea",
"displayName": "Gitea"
}]
}
}Permissions are a closed list. An unknown or repeated permission fails manifest validation. Extensions are trusted server-side Node packages, not an operating-system sandbox, so a permission describes intent and gates host APIs. It does not confine Node itself.
Permissions that gate a contribution
A manifest that declares the contribution without its permission fails validation with
missing_permission, and the host refuses the registration.
| Permission | Required for | Grants |
|---|---|---|
agent-observation | agentSessionSources | Register session sources and publish live agent session snapshots. |
mcp-registration | mcpInstallTargets | Register install targets that receive the Terminay MCP server command. |
worktree-observation | worktreeInsights | Receive repository contexts, publish worktree properties, and request sign-in for a forge origin. |
Language server contributions need no permission.
Other accepted permissions
The manifest schema also accepts the permissions below, and the install preview lists
them. No member of the 3.1 ExtensionContext is gated by them.
| Permission | Notes |
|---|---|
network | Declares that the extension makes network requests. The bundled Gitea extension declares it for its HTTPS calls to Gitea servers. |
configuration:read, configuration:write, data:read, data:write, cache:write | Accepted by validation. No bundled extension declares them. |
secrets:resolve | Accepted by validation. No bundled extension declares it. |
Not granted by any permission
- Renderer components, themes, routes, CSS, or arbitrary external navigation.
- Raw application-protocol handlers, client envelopes, store mutation, or host bridges.
- Terminal output, raw PTYs, or the decision of which terminal a session belongs to.
- Vault enumeration or another extension's secrets.
- Private Terminay packages or Electron internals.