PluginsEarly
Using plugins
Install plugins, read what each may do before it runs, approve it, and switch plugins off.
Plugins add commands, keys, panels, statusline segments, pickers and badges on
the map to Graphide, and tools for your coding agents. A plugin is a folder
with a plugin.toml and, when it computes anything, a TypeScript script.
Some plugins hold only data: themes, icon sets, a Neovim distribution’s keys, language grammars or snippets. Those run no code at all.
Nothing a plugin adds runs until you approve it, and a plugin can reach only what it asked for and you granted.
The plugins Graphide ships with
| Plugin | Adds |
|---|---|
files |
A file tree panel |
worktrees |
The repository’s worktrees, with their agents and how far each branch is from its base |
problems |
Language-server problems, in a bottom panel and the statusline |
outline |
The open file’s symbols as a tree |
They are written against the same public interface as any plugin, and the ones that only read are approved by the release they came with.
Install one
gr plugin search markdown # find plugins by what they do
gr plugin install store:lunarvim # from Graphide's plugin store
gr plugin install https://github.com/someone/their-plugin
gr plugin install ./my-plugin # a folder on this computer
A source can be:
- a name in the store,
store:<name>, orstore:<name>@<version>; a bare name with no folder of that name falls back to the store; - a public git repository, or a folder in one, on GitHub, GitLab, Codeberg, Bitbucket, Gitea or Forgejo, or any HTTPS git address. It is pinned to the commit you installed;
- a folder on your computer.
A project can also name the plugins its people should use; see Share a plugin.
Approve it
An installed plugin waits for your approval. Before you approve, read what it asks for:
gr plugin review lunarvim
The review says what the plugin adds, each thing it may do in plain words (such as “reads the files in your workspace” or “sends to and reads from api.github.com”), what those mean together, its files, and its panels drawn as text. It approves nothing.
Then approve it, in the app’s list of what needs you, or on a terminal:
gr plugin approve lunarvim
gr plugin approve prints the review again, asks which of the plugin’s
requests to grant, and whether to approve the version shown. What you approve
is that exact version: its content’s hash, with the grants you chose. If any
file of it changes, it waits for your approval again.
Only a person can approve. Graphide refuses an approval that comes from inside a coding agent, so an agent can install a plugin for you but never switch it on. What a plugin may do lists every request a plugin can make.
Manage your plugins
| Command | Does |
|---|---|
gr plugin list |
Every plugin and its state |
gr plugin status [name] |
How it runs: its handlers’ times and its last errors |
gr plugin config <name> key=value |
Change one of its settings. key=null puts the default back |
gr plugin secret set <name> <key> |
Enter a token it needs, with nothing shown as you type |
gr plugin disable <name> |
Switch it off; nothing is removed |
gr plugin enable <name> |
Switch it on again, as it was approved |
gr plugin update <name> |
Fetch its newest version; changes wait for approval |
gr plugin rollback <name> |
Go back to the version approved before |
gr plugin remove <name> |
Remove it. A folder of yours is moved aside, not deleted |
A plugin’s settings are kept in your config.toml, under
[plugins.<name>.settings]. A secret, such as an API token, is kept in your
system keychain, never in that file. The plugin’s script never sees it: it is
sent only to the one host the plugin named for it, or handed to the plugin’s
own MCP server.
When a plugin misbehaves
Each plugin runs in its own process, so a crash, a slow handler or too much memory stops only that plugin. A plugin that runs past its time limits three times in five minutes, or crashes five times in ten, is switched off for the session. If that happens within an hour of approving a new version, Graphide goes back to the version you approved before it.
gr plugin status <name> says why a plugin stopped, and gr plugin reload <name> gives it another go.
Switch every plugin off
# config.toml
plugins_enabled = false
Or start Graphide with GRAPHIDE_PLUGINS=0 for one run. With plugins off, no
plugin starts, and gr plugin says how to turn them on and does nothing else.
The daemon notices the change within a couple of seconds.
Known limits
- On macOS, a plugin’s programs (
exec) and MCP servers do not run yet: the sandbox there cannot keep your workspace read-only. The rest of a plugin runs.
These docs describe Graphide 0.2.16, the latest release. Something wrong or missing? Tell us onDiscord or at hello@graphide.com.