plugin.toml manifest. If it has code, the code is a sandboxed WebAssembly component that can only do what the user allowed.
What a plugin can do
- Add commands. They become IDE actions: they show in Find Action and Search Everywhere, can be bound to keys, and can be placed in menus, the main toolbar and the status bar.
- Read and change project files and the focused editor, react to workbench events (file opened or saved, VCS changes, actions run) and run background tasks with progress.
- Provide editor features for any language: completion, inline completion, quick fixes, navigation, hover, inlay hints, semantic highlighting, diagnostics while typing, formatting, code lenses, gutter markers and more.
- Show tool windows and custom editors, either declarative (trees, lists, forms, tables) or as a sandboxed web page.
- Contribute run configurations, test result parsers and run targets, database sources, and MCP tools for the built-in MCP server.
- Call web services, store secrets in the system keychain, keep data in their own storage, and run programs the user approved.
- Contribute settings pages, file templates, snippets, themes, file icon themes and languages.
Two kinds of plugin
Declared contributions work as soon as the plugin is enabled, before any code loads: commands appear in Find Action, themes can be applied, settings pages exist. Code is loaded only when it is first needed (a command runs, a file of a declared language opens, and so on) and is unloaded again after 5 minutes without use.
Code plugins are WebAssembly components targeting the
plugin world in wit/. The Rust SDK (sdk/rust/openidea-plugin) is the supported way to write them; any language with component-model tooling (componentize-py, jco componentize, TinyGo) can target the same world.
API version
Declare the API your plugin needs with
engines.openidea in the manifest, for example engines.openidea = "^1.4".
Where plugins come from
- Marketplace: Settings › Plugins › Available lists the official plugins and the community plugins of the registry. See Publish to the marketplace.
- Disk: Install Plugin from Disk… (a folder) or Install Plugin from Package File… (an
.oipluginor.zip) in the gear menu of Settings › Plugins. - Linked folders:
openidea-plugin linkloads a folder you are developing, without installing it. - Project plugins: packages in
<project>/.openidea/plugins/<name>/load in trusted projects only, after you approve their permissions.
Next steps
Quickstart
Scaffold, build and run a plugin in a few minutes.
Example plugins
A tour of the plugins in
plugins/official.Architecture and sandbox
How plugin code runs and what limits it.
Manifest
Every field of
plugin.toml.plugins/README.md in the repository.