hasura/graphql-engine · error
plugin %q does not offer installation for this platform
Error message
plugin %q does not offer installation for this platform
What it means
Install() calls MatchPlatform(plugin.Platforms) to find a platform entry in the plugin manifest matching the current OS/architecture (GOOS/GOARCH). When no platform entry matches, ok is false and this error is returned: the plugin simply has no build distributed for the machine running the install. It is a manifest-content problem, not a download failure.
Source
Thrown at cli/plugins/plugins.go:217
return plugin, nil
}
func (c *Config) Install(plugin Plugin) error {
var op errors.Op = "plugins.Config.Install"
// Find available installation platform
platform, ok, err := MatchPlatform(plugin.Platforms)
if err != nil {
return errors.E(
op,
fmt.Errorf("failed trying to find a matching platform in plugin spec: %w", err),
)
}
if !ok {
return errors.E(
op,
fmt.Errorf("plugin %q does not offer installation for this platform", plugin.Name),
)
}
if err := c.installPlugin(plugin, platform); err != nil {
return errors.E(op, fmt.Errorf("install failed: %w", err))
}
err = c.StoreManifest(plugin, c.Paths.PluginInstallReceiptPath(plugin.Name))
if err != nil {
return errors.E(
op,
fmt.Errorf("installation receipt could not be stored, uninstall may fail: %w", err),
)
}
return nil
}
View on GitHub (pinned to 724551b9ae)
Solutions
- Check your platform with go env GOOS GOARCH and verify the plugin's manifest Platforms list contains a matching os/arch entry
- If installing from a manifest file, edit it to add (or point at) a platform entry matching your OS/architecture
- Ask the plugin author to publish a build for your platform, or build the plugin binary locally and reference it via a manifest file
- As a workaround on Apple Silicon, run the install under Rosetta using an amd64 build of the CLI if an amd64 platform entry exists
Example fix
// plugin manifest before
"platforms": {
"linux_amd64": { "os": "linux", "arch": "amd64", "bin": "./myplugin" }
}
// after (add the missing target)
"platforms": {
"linux_amd64": { "os": "linux", "arch": "amd64", "bin": "./myplugin" },
"darwin_arm64": { "os": "darwin", "arch": "arm64", "bin": "./myplugin" }
} Defensive patterns
Strategy: validation
Validate before calling
import (
"runtime"
)
func supportsPlatform(p Plugin) bool {
_, ok, err := MatchPlatform(p.Platforms)
return err == nil && ok
}
// before Install:
if !supportsPluginRuntime(plugin, runtime.GOOS, runtime.GOARCH) {
// skip or pick another artifact instead of calling Install
} Try / catch
err := cfg.Install(plugin)
if err != nil && strings.Contains(err.Error(), "does not offer installation for this platform") {
// surface a friendly message about missing OS/arch support
} Prevention
- Validate the plugin manifest's Platforms list against runtime.GOOS/GOARCH before calling Install
- When consuming third-party manifests, prefer versioned releases that publish all target platforms
- In CI, pin the platform matrix and assert manifests cover it before installing
When it happens
Trigger: Calling Config.Install (or the plugin install CLI command) for a plugin whose Platforms list lacks an entry for the current runtime (e.g. installing a plugin that only ships linux/amd64 binaries from darwin/arm64, or a windows-only plugin on Linux). Also triggered by a manifest with a mismatched or misspelled os/arch key such as "os": "Linux".
Common situations: Installing a plugin from a custom manifest file that omits the user's platform; plugin authors forgetting to publish a cross-platform release; attempting install on Apple Silicon when only amd64 artifacts were published; typo in the Platforms section of the plugin manifest.
Related errors
- failed while moving files to the installation directory: %w
- install failed: %w
- installation receipt could not be stored, uninstall may fail
- could not create staging dir %q: %w
- failed to unpack into staging dir: %w
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/4efe5b6eeef3c9ff.
Report an issue: GitHub.